我想在每次用户打开应用时清除应用程序图标徽章。在我的应用中,我使用以下代码清除徽章:
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] cancelAllLocalNotifications];
我将此代码放在- (void) applicationDidFinishLaunching:(UIApplication*)application
和-(void) applicationWillEnterForeground:(UIApplication*)application
中。在运行上述代码以清除徽章之前,我还在- (void) applicationDidFinishLaunching:(UIApplication*)application
注册了远程通知。
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge)];
如果我启动应用程序,然后返回主屏幕,我会看到该应用程序的徽章已被清除,但它会在一两秒内返回到与其清除之前完全相同的值。
我自己没有使用本地或推送通知,而是GameKit正在使用它们,因为它是基于回合的匹配。当某些事件发生时(例如它在匹配中成为本地玩家的回合),推送通知将被发送到他们的设备。
我可能做错了什么?
答案 0 :(得分:2)
这不是问题的解决方案,但我的观察结果是:
首先我的游戏是来自GameKit的TurnBasedMatch,但我不得不改为正常比赛,所以我想我必须再次检查代码以检查我是否能找到GameKit发送的恼人通知。
无论如何,这绝对是GameCenter: 我有两个testaccounts,一个在我的iPhone上运行,一个在模拟器中运行。当我切换它们时,“BageCount”也会改变。在我的AppDelegate中,我将其设置为-1(0表示对我来说不起作用):
[UIApplication sharedApplication].applicationIconBadgeNumber = -1;
AppBage消失了1-2秒然后又回来了。
必须有这样或那样的方法来清除“GameCenter - NotificationCenter”中的这些通知!
答案 1 :(得分:1)
我今天在设备上看到了类似的问题。我注意到我遇到此问题的设备是在我公司的VPN上。关闭VPN连接后,该徽章一劳永逸地清除。我猜这个设备在清除过程中无法与APNS通信。
不是一个令人信服的答案,但从那以后我就没有问题了。