실제로 iOS 10에서는 원격 알림이 didReceiveRemoteNotification
AppDelegate에서 자동으로 Method를 호출 합니다.
백그라운드에서 배지 수를 업데이트하는 두 가지 방법이 있습니다.
현재 앱에서도이 작업을 수행했습니다. 알림 서비스 확장도 필요하지 않습니다.
첫 번째 방법 :
페이로드와 함께 APS 배지 키를 APN에 보냅니다.
그러면 배지 페이로드의 정수 값에 따라 배지 수가 업데이트됩니다. 전의:
{
"aps": {
"content-available": 1,
"alert": "Hallo, this is a Test.",
"badge": 2,
"sound": default
}
}
두 번째 방법 :
application.applicationState가에있을 때 application.applicationState를 전환하고 배지 Count를 업데이트 할 수 있습니다 .background
. 하지만 APN으로 전송할 때 알림 페이로드에 배지 키 매개 변수를 설정하지 않도록주의해야합니다.
{
"aps": {
"content-available": 1
}
}
애플리케이션 상태에 따라 배지 업데이트를 처리합니다.
다음은 APN 페이로드에서 배지 키없이 배지 카운트 업데이트를위한 작업 코드입니다.
func application(_ application: UIApplication, didReceiveRemoteNotification
userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("APN recieved")
let state = application.applicationState
switch state {
case .inactive:
print("Inactive")
case .background:
print("Background")
application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1
case .active:
print("Active")
}
}
배지 수 재설정 :
앱이 활성 상태로 돌아갈 때 배지 수를 재설정하는 것을 잊지 마십시오.
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}