如何重置 Badge 应用程序图标编号?
How to reset the Badge app icon number?
我在CloudKit上集成了Push Notification,这样iCloud里的每一次变化都会在我的iPhone上弹出一个通知,徽章应用图标编号也会相应加一。但是,当我使用代码时:
application.applicationIconBadgeNumber = 0
在 applicationDidBecomeActive(_ application: UIApplication)
中重置该数字,我注意到徽章应用程序图标数字确实消失了,但如果另一个新通知再次出现,该数字不会像预期的那样从 1 重新开始,而只是添加一个到重置前的原始总数。因此这个数字越来越大。请问如何解决这个问题?
问题出在您的 apns 负载,它包含徽章计数超过 1,您也需要重置负载。
当您设置 application.applicationIconBadgeNumber = 0
时,它只是在本地重置徽章计数,而不是在服务器中重置。
解决方案也将重置服务器中用户的徽章计数。
更新:Apns 负载
{
"aps" : {
"alert" : {
"title" : "Push",
"body" : "Hello User"
},
"badge" : 5
}
}
该应用程序显示的徽章计数与上面的 apns 负载相同,您需要从服务器重置上面负载中的徽章值。
希望对您有所帮助。
干杯。
我发现我不应该像这样只设置应用程序端:
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
但我还应该在 CKContainer 中设置 iCloud 端。因此,完整的代码如下:
let operation = CKModifyBadgeOperation(badgeValue: 0)
operation.modifyBadgeCompletionBlock = {(error) in
if let error = error{
print("\(error)")
return
}
application.applicationIconBadgeNumber = 0
}
CKContainer.default().add(operation)
我在CloudKit上集成了Push Notification,这样iCloud里的每一次变化都会在我的iPhone上弹出一个通知,徽章应用图标编号也会相应加一。但是,当我使用代码时:
application.applicationIconBadgeNumber = 0
在 applicationDidBecomeActive(_ application: UIApplication)
中重置该数字,我注意到徽章应用程序图标数字确实消失了,但如果另一个新通知再次出现,该数字不会像预期的那样从 1 重新开始,而只是添加一个到重置前的原始总数。因此这个数字越来越大。请问如何解决这个问题?
问题出在您的 apns 负载,它包含徽章计数超过 1,您也需要重置负载。
当您设置 application.applicationIconBadgeNumber = 0
时,它只是在本地重置徽章计数,而不是在服务器中重置。
解决方案也将重置服务器中用户的徽章计数。
更新:Apns 负载
{
"aps" : {
"alert" : {
"title" : "Push",
"body" : "Hello User"
},
"badge" : 5
}
}
该应用程序显示的徽章计数与上面的 apns 负载相同,您需要从服务器重置上面负载中的徽章值。
希望对您有所帮助。
干杯。
我发现我不应该像这样只设置应用程序端:
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
但我还应该在 CKContainer 中设置 iCloud 端。因此,完整的代码如下:
let operation = CKModifyBadgeOperation(badgeValue: 0)
operation.modifyBadgeCompletionBlock = {(error) in
if let error = error{
print("\(error)")
return
}
application.applicationIconBadgeNumber = 0
}
CKContainer.default().add(operation)