应用徽章编号更新解析 swift

Application badge number updates parse swift

我有一个应用程序通过解析实现推送通知。

我在用户打开应用程序时清除徽章图标时遇到了一些问题。

我的 appDelegate didFinishLaunchingWithOptions 和应用程序 didBecomeActive 中有以下代码行:

UIApplication.sharedApplication().applicationIconBadgeNumber = 0

这暂时有效,因为如果我的徽章编号为 18,然后通过启动我的应用程序将其从后台移出,然后按下主页按钮,我可以看到应用程序徽章编号已被清除,并且正如预期的那样,不再是我的应用程序中的红色图标和数字。

但是如果我收到新通知,应用徽章不会按预期读取 1,而是将 1 添加到之前已清除的徽章编号,现在是 19。

我该如何处理?

我的应用发送包含以下数据的推送通知:

var data = [ "title": "xxx",
             "alert": message, 
             "badge" : "Increment",
             "sound" : "default"]

您的问题是您没有清除保存在 Parse PFInstallation 中的徽章编号。

使用 PFInstallation 更新徽章编号,而不是使用 UIApplication.sharedApplication().applicationIconBadgeNumber = 0

直接修改它

PFInstallation 将自动清除徽章图标并更新 Parse 后端的徽章编号。

将以下内容添加到应用委托的 didFinishLaunchingWithOptions 以及 applicationDidBecomeActive

if (PFInstallation.currentInstallation().badge != 0) {
    PFInstallation.currentInstallation().badge = 0
    PFInstallation.currentInstallation().saveInBackground()
}

您可能还想将以下内容添加到 applicationDidBecomeActive

// Clears out all notifications from Notification Center
UIApplication.sharedApplication().cancelAllLocalNotifications()