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.