我们可以发送/显示静默iOS通知的徽章数吗?

时间:2015-07-16 05:50:31

标签: ios objective-c apple-push-notifications push badge

我想在iOS应用程序中处理徽章计数增量。根据我迄今为止所做的研究,我了解应用程序可以在前台进行编程时以编程方式读取/更新徽章。此外,仅当应用程序处于前台状态时才会调用'application:didReceiveRemoteNotification'。

但是,即使我的应用处于后台状态,我也希望能够增加徽章。我遇到了下面的通知回调方法,即使在后台状态下也会调用该方法 - 应用:didReceiveRemoteNotification:fetchCompletionHandler

它是在iOS 7中引入的。但是我注意到即使这个新引入的回调也没有在后台状态下调用。然后在做了一些研究之后,我意识到这个方法仅在静默iOS通知的情况下调用。所以现在我的问题是,是否可以显示静默通知的徽章计数,我可以在有效负载中收到徽章计数吗?我只是想通过利用可用于静默通知的后台支持来实现徽章计数计算。

目前,任何建议/指导/帮助对我们都非常宝贵。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将徽章计数放入有效负载中。在这种情况下,服务器端应该处理徽章计数。例如:

{ "aps" : { "badge" : 5, }, }

如果您的应用正在运行前台并增加/减少服务器发送的徽章计数,则以下示例将有所帮助。

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  {
    NSLog(@"remote notification: %@",[userInfo description]);

    if (userInfo) {
        NSLog(@"%@",userInfo);

        if ([userInfo objectForKey:@"aps"]) { 
            if([[userInfo objectForKey:@"aps"] objectForKey:@"badgecount"]) {
                [UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
            }
        }
    }
}