Update badge counter in Swift

Whenever code is compiled it shows the badge icon which is previously store in your app. If you don't set the badge icon = 0 in your app it will show the badge icon number in your app every time you compile it or enter in background state.

Now for your problem, use badge icon as

var badgeCount = 0 

 UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount

Also whenever you are done with your task make badge icon as 0 otherwise it will show a badge icon in your app

UIApplication.sharedApplication().applicationIconBadgeNumber = 0

In Swift 5, you can update de application's badge whenever you want, using this code:

UIApplication.shared.applicationIconBadgeNumber = 0 // YOUR NUMBER DESIRED

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.