【问题标题】:Changing application icon badge when notification arrives通知到达时更改应用程序图标徽章
【发布时间】:2013-02-01 09:10:50
【问题描述】:

在我的应用程序中,我已注册远程通知。当用户发布某些内容时,每个用户都会收到通知。我正在尝试计算到达的通知数量并更新图标徽章编号。

比如一个用户收到3个通知,徽章编号必须变成3,当用户打开应用程序时,徽章编号又回到0。但是我不知道用哪种方法设置徽章。我试过这个:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
application.applicationIconBadgeNumber = 2;    
// Handle Socialize notification at foreground
[self handleNotification:userInfo];
}

问题在于,如果我收到通知,则当我实际打开应用程序(将其带到前台)时,徽章设置为 2,而不是在我收到通知时设置。我该如何解决这个问题? 感谢您的帮助。

编辑:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"1"] intValue];
// Handle Socialize notification at foreground
[self handleNotification:userInfo];
}

【问题讨论】:

  • 您是从服务器获取徽章计数还是在本地计算?
  • 但我不需要一个精确的数字,只是告诉用户有东西可以看
  • @user2014474 如果您不需要确切的数字,请在通知 JSON 有效负载中设置 "badge": 1。这样,每当用户收到通知时,您的应用图标上就会出现一个“1”徽章。在您的应用委托中使用 application.applicationIconBadgeNumber = 0 删除徽章。
  • 你能给我一些示例代码吗?用什么方法设置?
  • 重点是我使用的是 Socialize api,所以我无法控制通知及其呈现方式。我可以在我的应用委托中设置此选项吗?

标签: ios xcode


【解决方案1】:

在发送通知之前,您需要确定服务器上的徽章数量。当应用收到通知时,确定正确的数字为时已晚,因为通知中的数字会立即覆盖应用设置的数字。

【讨论】:

  • 我不需要一个精确的数字,只是告诉用户有东西可以看
  • 应用打开时,即使用户没有真正看到更新的内容,徽章也会归零
猜你喜欢
  • 2014-07-18
  • 2020-08-13
  • 1970-01-01
  • 2015-10-25
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多