Ios 如何重置徽章应用程序图标号?
我将推送通知集成到CloudKit中,这样iCloud中的每一个更改都会在我的iPhone上弹出一个通知,并且徽章应用程序图标号会相应地添加一个。但是,当我使用代码时: application.applicationBadgeNumber=0 要在applicationIDBECOMEACTIVE_uu应用程序:UIApplication中重置该数字,我注意到徽章应用程序图标数字确实消失了,但如果再次出现另一个新通知,则该数字不会像预期的那样重新开始,而只是在重置之前将一个添加到原始总数中。因此,这个数字越来越大。我想知道如何解决这个问题?问题是您的apns有效负载,它包含的徽章计数超过1,您还需要重置有效负载 当您将application.applicationBadgeNumber设置为0时,它只在本地重置标记计数,而不是在服务器中重置 解决方案是重置服务器中用户的徽章计数 更新:Apns有效载荷 应用程序显示的徽章计数与上面apns有效负载中的徽章计数相同,您需要从服务器重置上面有效负载中的徽章值 希望能有帮助Ios 如何重置徽章应用程序图标号?,ios,swift3,apple-push-notifications,cloudkit,Ios,Swift3,Apple Push Notifications,Cloudkit,我将推送通知集成到CloudKit中,这样iCloud中的每一个更改都会在我的iPhone上弹出一个通知,并且徽章应用程序图标号会相应地添加一个。但是,当我使用代码时: application.applicationBadgeNumber=0 要在applicationIDBECOMEACTIVE_uu应用程序:UIApplication中重置该数字,我注意到徽章应用程序图标数字确实消失了,但如果再次出现另一个新通知,则该数字不会像预期的那样重新开始,而只是在重置之前将一个添加到原始总数中。因此
干杯。我发现我不仅应该将应用程序端设置为:
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)
我明白你的意思,但是你能给我看一些具体的代码来重置服务器端吗?我试过一些方法,但都不管用。@Jaheny应用程序中一定有你必须使用的api服务吗?推送是通过服务器应用程序发送的,但不发送,因此当他们在服务器中创建apns消息时,他们必须使用一些负责徽章计数的数据库,查看我的更新apns有效负载的外观,并与知道在何处更改它的api人员联系。这很好,但现在CKModfifyBadgeOperation已被弃用。怎么办/
let operation = CKModifyBadgeOperation(badgeValue: 0)
operation.modifyBadgeCompletionBlock = {(error) in
if let error = error{
print("\(error)")
return
}
application.applicationIconBadgeNumber = 0
}
CKContainer.default().add(operation)