我正在使用CKSubscription发送推送通知,我发送它们并且设备正确接收所有内容,但我的徽章计数总是+1以前是什么?应用程序运行后如何将其设置为0?
我已将此代码添加到func应用程序didFinishLaunchingWithOptions
UIApplication.shared.applicationIconBadgeNumber = 0
但是当你运行应用程序时,徽章会消失,接收到下一个推送通知后,该号码会再次上升。
答案 0 :(得分:1)
用CKModifyBadgeOperation解决它,将它放入applicationDidBecomeActive
let badgeOp = CKModifyBadgeOperation(badgeValue: 0)
badgeOp.modifyBadgeCompletionBlock = { (error) -> Void in
if error != nil { print (“error with the badge”)
}
else {
UIApplication.shared.applicationIconBadgeNumber = 0 }
}
CKContainer.default().add(badgeOp)
}
一切正常!!!!好开心!!!!
答案 1 :(得分:0)
听起来你并不是在正确的地方把它归零?
当您的应用从后台恢复时,只有在实际启动时,才会调用 didFinishLaunchingWithOptions
。我能想到的徽章最常见的用途是当你收到通知时,你想在用户看到通知时将它们归零。因此,您需要设置applicationIconBadgeNumber = 0
例如,如果您的应用只是一个带有消息列表的视图,只是看到该列表足以告诉您用户已阅读该消息,您可以使用applicationWillEnterForeground
代替。每当你从后面回来时都会调用它。
当应用程序位于前台时,您仍然需要将通知归零。