- SilentPush&RichPush2024년 11월 08일
- 2료일
- 작성자
- 2024.11.08.:59
What is SilentPush?
- 백그라운드에서 앱 업뎃하기 즉 유저가 느끼지 못하게 앱 내에서 정보를 업뎃해야할 때 사용한다.
내가 개발하는 앱에서는 해당 날짜의 여행이 있을때 silentPush로 상태 변화를 위해 사용했다. 기존의 코드에서는 매일 24시간마다 백그라운드에서 allFetch를 통해 여행이 있는지를 체크해주었지만 이는 여행이 없더라도 매일 백그라운드에서 업뎃을 하기에 비효율적이라고 판단했다.
Silent Push 페이로드에서는 3가지가 값이 추가로 있어야 가능하다고 한다.
"content-available": 1,
"apn-push-type": "background",
"apn-priority": 5
apple developer에 보면 이 푸쉬는 우선순위가 낮아 짧은 시간에 노티피케이션 수가 많아지면 전달되지 않을 수 있어 시간당 2-3개 이상은 보내지말라고 경고한다.
// 사일런트 푸쉬 메소드 func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { print("Receive", userInfo) completionHandler(.newData) }
앱 딜리게이트에 추가해주었다.
여기서 잠깐!!! notification을 이용하려면 주로 AppDelegate에 UNUserNotificaitonCenterDelegate를 상속받을텐데, 여기에는 총 3가지메서드를 주의해야한다.
- func application(_: didReceiveRemoteNotification: fetchCompletionHandler:)
- 해당 메서드는 위에서 다루었다. 간단하게 설명하자면 remote Push에 대해선만 작동한다! silentPush가 오는 경우 로직 처리할때 사용한다.
- background에서 일반 푸쉬가 오면 푸쉬 배너를 클릭했을때 호출 .하지만 silentPush에 대해서는 도착 즉시 호출된다.
- func userNotificationCenter(_:willPresent:WithCompletionHandler)
- local, remote 둘다 가능
- foreground에서 Push가 실행될때 호출. 주의해야할것이 위의 메서드와 동시에 선언되어 있는 경우 silentPush가 오면 둘다 호출된다고 한다..
- func userNotificationCenter(_:didReceive:WithCompletionHandler)
- local, remote 둘다 ㄱㄴ
- background상태에서 push 클릭했을때 호출. 주의해야할것이 맨위의 메서드와 동시선언되어있는 경우 remote push 클릭시 둘다 호출
Rich Push Notification
- Push Notification의 payload를 그대로 띄우는게 아닌, 인터셉트하여 푸쉬 내용의 payload를 가로채어 썸네일이나 특별한 작업을 수행할 수 있다.
추후에 실제로 개발하면서 디자이너의 니즈들에 따라 노티를 꾸밀때 필요한것 같다. 하지만 현재는 이럴 여유가 없어 이 글은 다시 해당 기능을 개발할때 더 자세히 코드와 함께 돌아오겠다.
'면접준비' 카테고리의 다른 글
메모리관리(weak self와 guard의 만남) (0) 2025.01.12 Hash-Hashable을 곁들인 (1) 2025.01.05 test Code (with TCA) (0) 2024.11.04 CLMonitor (1) 2024.10.22 Swift Performance-wwdc24 (0) 2024.06.17 다음글이전글이전 글이 없습니다.댓글