2012-12-07 50 views
5

我正在iphone中进行推送通知。当我收到推送通知时,它在我的应用程序图标上显示1,下次显示为2,3,4。如果我打开应用程序的0.下一次它应该是1,2,3,4 ...但它显示最后的数字和+1。我想在打开应用程序后重置推送通知徽章。我从城市飞艇发送+1。增加后清除推送通知徽章

而且它不适合我。

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
+0

您正在本地清除徽章号码。您还需要从Urban Airship服务器清除它。我不知道城市飞艇。但我确定它有一个API来重置服务器上的通知标志。 – EmptyStack

+0

我正在发送徽章号码+1作为我api中的增量。 –

回答

0

我已经使用城市飞艇,并有过这个问题。您没有显示代码,但我假设收到通知时,您正在设置应用程序徽章号码,以指明城市飞艇传递给您的内容,不要这样做。只要让应用程序自己处理这个问题,当远程通知进入时,让它自动自动增加。如果情况并非如此,那么在城市飞艇方面,您可能会设置一个徽章号码来发送。不要发送带有推送通知的徽章号码,不要发送该部分,iOS会自动将您的徽章从当前的徽章号码中增加。

3

我使用此代码在我的应用程序,因为城市飞艇(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. 用户在应用程序
  2. 推送通知收到
  3. 返回到主屏幕时
  4. 另一种推送通知被接收(如预期)没有徽章是显示在应用程序图标
  5. 徽章显示超过1
  6. 数大

通过上面的修改,可以处理这种情况。我想你必须告诉UA,当收到一个通知并且应用程序在前台运行时处理该通知。

+0

我遇到同样的问题。我尝试了你的建议,但它不适合我。你能帮我解决吗?请看看我的问题在这里:http://stackoverflow.com/questions/20073212/reset-urbanairship-badge-count –

+0

我不知道我可以添加什么其他信息。你在上面看到的代码适用于我。 – Moebius