【问题标题】:Icon Badges are not incrementing?图标徽章没有增加?
【发布时间】:2014-03-28 20:34:07
【问题描述】:

由于某种原因,我的应用程序中的徽章编号没有增加

我试过了

[UIApplication sharedApplication].applicationIconBadgeNumber =
               [UIApplication sharedApplication].applicationIconBadgeNumber + 1;

还有:

[UIApplication sharedApplication].applicationIconBadgeNumber =
          [UIApplication sharedApplication].applicationIconBadgeNumber + 
               [[[userInfo objectForKey:@"aps"] objectForKey: @"badge"] intValue];

完整代码:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UIApplication sharedApplication].applicationIconBadgeNumber =
              [UIApplication sharedApplication].applicationIconBadgeNumber + 1;
}

它总是显示 1,从我的服务器我用 badges = 1 发送播放负载

【问题讨论】:

    标签: ios objective-c push-notification badge


    【解决方案1】:

    您应该跟踪服务器上的徽章计数器。

    当您的应用启用时,将徽章计数设置为 0 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

    并向您服务器的自定义 API 发送一个请求,告诉您徽章计数现在为 0

    【讨论】:

    • 我的代码里已经有了,没问题,徽章甚至显示,只是没有增加
    • 您的服务器应该发送带有徽章计数的推送通知。之后,当您的应用程序处于活动状态时,您应该将应用程序徽章设置为零并将请求发送到您的服务器,徽章计数为:0。我已经实现了。
    • 是的,我意识到只有当应用程序处于活动状态时它才会增加,所以基本上你是说我应该通过将徽章编号存储到我的数据库中来跟踪它,这听起来比它应该的更复杂
    • 您不应将徽章编号存储在数据库中。每次发送推送后,服务器都会增加徽章数量,您的应用程序徽章数量也会增加。当应用程序激活时,您必须将徽章计数设置为零并向服务器发出请求,徽章计数为 0。下一次推送将使用徽章计数 1。
    • 您确实需要服务器上的数据库来跟踪徽章计数器。而且我认为通过向服务器 Maksim 发送徽章计数 0 意味着向您服务器的自定义 API 发送一个请求,告诉您现在徽章计数为 0。
    【解决方案2】:

    问题是didReceiveRemoteNotification 在您的应用处于非活动状态时不会被调用。因此,您只能在应用程序激活后增加它。

    您需要跟踪数据库中的 bagde 计数并将其与推送通知一起发送。

    现在您的应用将负责减少/增加该计数,并最终将该标记计数字段更新到您的表格中,以便在下一次推送警报时您的服务器知道应用图标应显示的标记编号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 2013-09-29
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多