应用程序图标徽章会短暂清除,但在GameKit Turn-Based应用程序中,徽章编号会在几秒钟内返回

时间:2012-01-13 23:48:26

标签: ios cocoa game-center gamekit

我想在每次用户打开应用时清除应用程序图标徽章。在我的应用中,我使用以下代码清除徽章:

[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正在使用它们,因为它是基于回合的匹配。当某些事件发生时(例如它在匹配中成为本地玩家的回合),推送通知将被发送到他们的设备。

我可能做错了什么?

2 个答案:

答案 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通信。

不是一个令人信服的答案,但从那以后我就没有问题了。