实际上,在iOS 10中,远程通知会didReceiveRemoteNotification
在您的AppDelegate中自动调用Method。
您有2种在后台更新徽章计数的方法。
我也为当前的应用程序完成了此操作。您也不需要Notification Services扩展。
第一种方式:
将带有有效载荷的APS徽章密钥发送到APN。
这将根据徽章有效载荷中的Integer值更新徽章计数。例如:
{
"aps": {
"content-available": 1,
"alert": "Hallo, this is a Test.",
"badge": 2,
"sound": default
}
}
第二种方式:
当applicationState处于时,您可以切换application.applicationState并更新徽章计数.background
。但是当发送到APN ex时,您必须注意不要在Notification负载中设置徽章密钥参数
{
"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
}