一尘不染

在Swift中更新徽章计数器

swift

使用以下代码,应用程序编译后,我立即在徽章图标中得到(2):

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    let installation = PFInstallation.currentInstallation()
    installation.setDeviceTokenFromData(deviceToken)
    installation.badge = 2
    installation.saveInBackground()
}

我确实尝试了下一个变体:初始化一个新的版本,var badgeCount = 0然后再更新:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    badgeCount++
    let installation = PFInstallation.currentInstallation()
    installation.setDeviceTokenFromData(deviceToken)
    installation.badge = badgeCount
    installation.saveInBackground()
}

但是,当我收到新通知时,它不会更新为+1。有谁知道如何解决?


阅读 170

收藏
2020-07-07

共1个答案

一尘不染

除非实际打开应用程序,否则不会使用此方法更新徽章编号。如果要在收到通知时更新徽章编号,则需要将json推送通知的Badge属性设置为所需编号。

如果您发送的是普通消息(不使用json),则可以通过切换来增加徽章编号,只需勾选该编号即可。如果您使用的是Json,请使用以下命令:

{
    "aps": {
        "alert": "Test Push Notification",
        "sound": "yourSound.aiff",
        "Badge": "desiredNumber"
    }
}

请注意,如果您不希望从服务器发送此消息,也可以使用Parse的客户端请求将其从一台设备发送到另一台设备,进入Parse.com上的应用程序中的设置并启用“客户端请求”,然后将上述Json发送到另一个用户的设备。

2020-07-07