- Home /
How to reset/clear the iOS App's badge?
RemoteNotification.applicationIconBadgeNumber is read only, which means I cannot change the badge locally.
I know I gotta use the server to track the badge number. But the situation is, once I received the push notification and activate the app, I upload the data, telling the server "I've got your notification", so that the badge number on the server's end will reset to 0. But the problem is I cannot change the badge num locally, so the App's badge number didn't change.
In order to do that, I gotta let the server send an extra msg after he receives the "I've got your notification" msg, telling the App "okay. reset the badge num now". What an extra work!
Do I have any way to modify/reset/clear the application's badge number on App's end in Unity3d?
Additionally, even I send the extra msg from my server, telling the App to reset the badge, the only way to do that is to send a push notification, setting the badge's number in the payload. That sounds ridiculous! Because that means I gotta use 2 push notifications, one for the real deal, and the other for clearing the badge?? That's impossible, so it gotta be some other way, even without extra plugins.
could you use LOCAL notifications ?????????? to do this ?
I know that at Prime31 that is the "Etc Two" package.
Answer by Van Zeng · Mar 31, 2013 at 12:22 PM
Thanks Fattie. I'm now using the Obj-C in Xcode to set the badge number. Problem solved. But I'm still curious about how Unity3D's gonna set that value. And I'm wondering what's the purpose of make the badge number a read-only in Unity
Answer by privman · Jul 25, 2013 at 03:51 PM
OneWhoMikes's answer works for me with any badge number I want, except for 0. To clear the badge, use applicationIconBadgeNumber = -1
.
Thanks for adding this comment! The -1 is the correct answer and works perfectly.
Answer by HereIAmItsMe · May 01, 2013 at 10:58 PM
Something like the following will work from within Unity, no need for Obj-C code:
LocalNotification setCountNotif = new LocalNotification();
setCountNotif.fireDate = System.DateTime.Now;
setCountNotif.applicationIconBadgeNumber = 0;
setCountNotif.hasAction = false;
NotificationServices.ScheduleLocalNotification( setCountNotif );
Answer by Antony-Blackett · May 11, 2017 at 01:51 AM
I'm still struggling with setting the badge through Unity code. If you just want to get rid of the badge whenever the app starts or resumes then add this you your plugins folder.
//
// ClearBadgeHelper.m
// Unity-iPhone
//
// Created by Antony Blackett
#import <Foundation/Foundation.h>
@interface ClearBadgeHelper : NSObject
+ (void) clearBadge:(NSNotification *)notification;
@end
@implementation ClearBadgeHelper
+ (void) clearBadge:(NSNotification *)notification
{
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
+ (void)load
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(clearBadge:) name:UIApplicationDidFinishLaunchingNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(clearBadge:) name:UIApplicationDidBecomeActiveNotification object:nil];
}
@end
Answer by abcjjy · Dec 05, 2017 at 02:16 PM
It's 2017 now. Unity provides following functions to clear notifications and badge numbers.
NotificationServices.ClearLocalNotifications()
NotificationServices.ClearRemoteNotifications()