APNs:在应用程序处于前台时更改应用程序徽章
APNs: Change the app badge while the app is the foreground
我有一个应用程序和一个服务器端推送发送器。当新通知到达时,服务器会发送一个空的推送消息,其中只包含徽章更新。
当应用程序在后台时,徽章已成功更新。但是,当应用程序在前台时,徽章根本不会更新 - 推送会传送到应用程序,应用程序会丢弃它。
明显的解决方法是从应用程序中捕获推送并更新徽章。由于某些技术原因,这需要一些时间才能生效(开发时间、应用商店检查时间、不经常升级的用户等)
我想知道是否有办法绕过这个并使用服务器端 APNs 推送更新徽章,而不管应用程序状态、前景或背景如何。
有没有办法在应用程序处于前台时使用推送消息更改 iOS 应用程序徽章,而不处理来自应用程序内部的推送通知?
这只能通过您的 AppDelegate
中定义的应用程序委托方法来实现
已在 iOS10
中弃用
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
或者,
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;
上面的委托函数在应用程序处于前台时被调用,您可以解码您的推送有效负载并分配应用程序徽章,如下所示
[UIApplication sharedApplication].applicationIconBadgeNumber=[[userInfo objectForKey:@"aps"] valueForKey:@"badge"];
干杯。
我有一个应用程序和一个服务器端推送发送器。当新通知到达时,服务器会发送一个空的推送消息,其中只包含徽章更新。
当应用程序在后台时,徽章已成功更新。但是,当应用程序在前台时,徽章根本不会更新 - 推送会传送到应用程序,应用程序会丢弃它。
明显的解决方法是从应用程序中捕获推送并更新徽章。由于某些技术原因,这需要一些时间才能生效(开发时间、应用商店检查时间、不经常升级的用户等)
我想知道是否有办法绕过这个并使用服务器端 APNs 推送更新徽章,而不管应用程序状态、前景或背景如何。
有没有办法在应用程序处于前台时使用推送消息更改 iOS 应用程序徽章,而不处理来自应用程序内部的推送通知?
这只能通过您的 AppDelegate
中定义的应用程序委托方法来实现已在 iOS10
中弃用 - (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
或者,
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;
上面的委托函数在应用程序处于前台时被调用,您可以解码您的推送有效负载并分配应用程序徽章,如下所示
[UIApplication sharedApplication].applicationIconBadgeNumber=[[userInfo objectForKey:@"aps"] valueForKey:@"badge"];
干杯。