iosswiftparse-platformpush-notificationbadge

Update badge counter in Swift


With following code I get (2) in the badge icon immediately after app compiling:

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

I did try the next variant: Initialized a new var badgeCount = 0 and later:

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

But when I get new notifications it doesn't update to +1. Is anyone know how to fix it?


Solution

  • It won't update the badge number with this method unless the app is actually open. If you want to update the badge number upon receiving a notification then you need to set the Badge property of the json push notification to the desired number.

    If you, if you are sending a normal message (not using json) there is a toggle to increment the badge number, just tick that. If you're using Json then use this:

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

    Please note, if you do not wish to send this from the server, you can also send it from one device to another utilising Parse's client push, go into your settings in the app on Parse.com and enable "client push", you can then send the above Json to another user's device.