3 回答

TA貢獻2021條經驗 獲得超8個贊
實際上,在iOS 10中,遠程通知將didReceiveRemoteNotification在您的AppDelegate中自動調用Method。
您有2種在后臺更新徽章計數的方法。
我也為我當前的應用程序完成了此操作。您也不需要Notification Service Exetension。
第一種方式
將帶有有效載荷的APS徽章密鑰發送到APN。
這將根據徽章有效載荷中的Integer值更新徽章計數。例如:
// Payload for remote Notification to APN
{
"aps": {
"content-available": 1,
"alert": "Hallo, this is a Test.",
"badge": 2, // This is your Int which will appear as badge number,
"sound": default
}
}
第二路
當applicationState處于時,您可以切換application.applicationState并更新徽章計數.background。但是當發送到APN ex時,您必須注意不要在Notification負載中設置徽章密鑰參數
// Payload to APN as silent push notification
{
"aps": {
"content-available": 1
}
}
根據應用程序狀態處理徽章更新
這是我的工作代碼,用于在APN的有效負載中在沒有徽章密鑰的情況下更新徽章計數。
func application(_ application: UIApplication, didReceiveRemoteNotification
userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("APN recieved")
// print(userInfo)
let state = application.applicationState
switch state {
case .inactive:
print("Inactive")
case .background:
print("Background")
// update badge count here
application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1
case .active:
print("Active")
}
}
重置徽章計數
當您的應用恢復為活動狀態時,請不要忘記重置您的徽章計數。
func applicationDidBecomeActive(_ application: UIApplication) {
// reset badge count
application.applicationIconBadgeNumber = 0
}
- 3 回答
- 0 關注
- 655 瀏覽
添加回答
舉報