Managing badge number for seen messages - infobip/mobile-messaging-sdk-ios GitHub Wiki
By design, MobileMessaging.setSeen(...)
does not decrement the badge number - it only marks the specific messages as seen and persists the actual seen status. In order to maintain the badge number, you need to explicitly set it as follows:
MobileMessaging.badgeNumber = <new value>
There is more convenient way to maintain badge number though.
When using Default Message Storage you can leverage a special handler MMDefaultMessageStorage.messagesCountersUpdateHandler
that will be called each time the message set as seen (MobileMessaging.setSeen(...)
does this as mentioned before).
The handler will pass total number of messages along with non-seen counter. Inside the handler you can set badge number:
MobileMessaging.defaultMessageStorage?.messagesCountersUpdateHandler = { total, nonSeen in
MobileMessaging.badgeNumber = nonSeen
}
You may also want to mark all the storage messages as seen, the most efficient way would be as follows:
MobileMessaging.defaultMessageStorage?.findNonSeenMessageIds { (messageIds) in
MobileMessaging.setSeen(messageIds: messageIds)
}