如何重置徽章应用图标编号?

时间:2017-03-10 14:04:26

标签: ios swift3 apple-push-notifications cloudkit

我将推送通知集成到CloudKit,以便iCloud中的每个更改都会在我的iPhone上弹出通知,并且徽章应用程序图标编号将相应地添加一个。但是,当我使用代码时:

application.applicationIconBadgeNumber = 0

要重置applicationDidBecomeActive(_ application: UIApplication)中的该号码,我注意到徽章应用图标编号确实消失了,但如果再次发出另一个新通知,该号码将不再按照假设再次启动,而只是添加一个重置前的原始总数。因此数量越来越大。我想知道如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

问题是您的 apns有效负载,它包含徽章数超过1 ,您还需要重置有效负载。

设置application.applicationIconBadgeNumber = 0时,它只会在本地重置徽章计数,而不是在服务器中重置。

解决方案也将重置服务器中用户的徽章计数。

更新:Apns Payload

{
    "aps" : {
        "alert" : {
            "title" : "Push",
            "body" : "Hello User"
        },
        "badge" : 5
    }

}

应用程序显示徽章计数与上面的apns有效内容相同,您需要从服务器重置上面有效负载中的徽章值。

希望它有所帮助。

干杯。

答案 1 :(得分:1)

我发现我不应该只设置应用程序端:

let operation = CKModifyBadgeOperation(badgeValue: 0)
operation.modifyBadgeCompletionBlock = {(error) in
    if let error = error{
        print("\(error)")
        return
    }
    application.applicationIconBadgeNumber = 0
}
CKContainer.default().add(operation)

但我也应该在CKContainer中设置iCloud端。因此,完整的代码如下所示:

tuning-primer.sh