我使用此代码在我的应用程序,因为城市飞艇(UA)的有关文档
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UAPush shared] resetBadge];
说,但它不工作,在应用程序图标徽章不断递增。我在UA论坛的这个问题上看到了一些帖子,他们没有给出明确的答案。
编辑#1:
我接到一个技术支持人员以下响应在UA有以下的建议,这真是棒极了:
你想要做什么,是确保您的didFinishLaunchingWithOptions:(NSDictionary的*)launchOptions方法,您呼叫的以下内容:
[[UAPush shared] setAutobadgeEnabled:YES];
[[UAPush shared] resetBadge];//zero badge on startup
,也叫[[UAPush shared] resetBadge];在下面的方法,以及:
applicationDidBecomeActive:(UIApplication *)application
和
didReceiveRemoteNotification:(NSDictionary *)userInfo
技术人员还提到,分配0至applicationIconBadgeNumber是没有必要的,所以我把它。仍然美丽的作品。
编辑#2:
我最后不得不修改应用:didReceiveRemoteNotification:以包括UA的的handleNotification的电话:applicationState:方法:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
// Get application state for iOS4.x+ devices, otherwise assume active
UIApplicationState appState = UIApplicationStateActive;
if ([application respondsToSelector:@selector(applicationState)])
{
appState = application.applicationState;
}
[[UAPush shared] handleNotification:userInfo applicationState:appState];
[[UAPush shared] resetBadge];
}
因为我是在以下情况下有问题:
- 用户在应用程序
- 推送通知收到
- 返回到主屏幕时
- 另一种推送通知被接收(如预期)没有徽章是显示在应用程序图标
- 徽章显示超过1
数大
通过上面的修改,可以处理这种情况。我想你必须告诉UA,当收到一个通知并且应用程序在前台运行时处理该通知。
您正在本地清除徽章号码。您还需要从Urban Airship服务器清除它。我不知道城市飞艇。但我确定它有一个API来重置服务器上的通知标志。 – EmptyStack
我正在发送徽章号码+1作为我api中的增量。 –