APN:在应用程序成为前台时更改应用程序徽章

时间:2016-12-26 19:34:11

标签: ios apple-push-notifications foreground

我有一个应用程序和一个服务器端推送发件人。当新通知到达时,服务器会发送一个空推送消息,该消息仅包含徽章更新。

当应用在后台时,徽章已成功更新。但是,当应用程序位于前台时,徽章根本不会更新 - 推送会传送到应用程序,然后将其丢弃。

明显的解决方法是抓住推送并从应用内更新徽章。由于某些技术原因,这需要一些时间才能生效(开发时间,应用商店检查时间,不经常升级的用户等)

我想知道是否有办法环绕这个并使用服务器端APN推送来更新徽章,无论应用程序状态,前景或背景如何。

当应用处于前台时,有没有办法使用推送消息更改iOS应用徽章,而无需处理应用内的推送通知?

1 个答案:

答案 0 :(得分:5)

这只能通过 AppDelegate

中定义的应用委托方法来实现

在iOS 10中弃用

 - (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

,或者

- (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo 
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;

当app位于前台时,会调用上述委托函数,您可以解码Push Payload并按如下方式分配应用程序徽章

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

干杯。