我正在使用CKSubscription发送推送通知,我发送它们并且设备正确接收所有内容,但我的徽章计数总是1到之前的状态?应用程序运行后如何将其设置为0?
我已将此代码添加到func应用程序didFinishLaunchingWithOptions中
UIApplication.shared.applicationIconBadgeNumber = 0
但是当你运行应用程序时,徽章就会消失,接收到下一个推送通知,这个数字会再次上升 .
听起来你不是在正确的地方把它归零?
当您的应用程序从后台恢复时,仅在实际启动时才会调用 didFinishLaunchingWithOptions . 我能想到的徽章最常见的用途是当您收到通知时,并且您希望在用户看到通知时将其归零 . 那就是你必须设置 applicationIconBadgeNumber = 0 的地方
didFinishLaunchingWithOptions
applicationIconBadgeNumber = 0
例如,如果您的应用程序只是一个带有消息列表的视图,只是看到该列表足以告诉您用户已阅读该消息,您可以使用 applicationWillEnterForeground . 每当你从背景中回来时都会调用它 .
applicationWillEnterForeground
当应用程序位于前台时,您仍然需要将通知归零 .
用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) }
所有的作品!!!!很高兴!!!!
2 回答
听起来你不是在正确的地方把它归零?
当您的应用程序从后台恢复时,仅在实际启动时才会调用
didFinishLaunchingWithOptions
. 我能想到的徽章最常见的用途是当您收到通知时,并且您希望在用户看到通知时将其归零 . 那就是你必须设置applicationIconBadgeNumber = 0
的地方例如,如果您的应用程序只是一个带有消息列表的视图,只是看到该列表足以告诉您用户已阅读该消息,您可以使用
applicationWillEnterForeground
. 每当你从背景中回来时都会调用它 .当应用程序位于前台时,您仍然需要将通知归零 .
用CKModifyBadgeOperation解决它,将它放在applicationDidBecomeActive中
所有的作品!!!!很高兴!!!!