是否可以通过接收静默推送来更新应用程序徽章计数.
当应用程序未在后台运行时,不会调用此方法.
我的猜测是,即使应用程序没有在后台运行,也会调用此方法.我错了吗?
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler { int currentBadge = [UIApplication sharedApplication].applicationIconBadgeNumber; DLog(@"%@,badge = %i",userInfo,currentBadge); [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1; completionHandler(UIBackgroundFetchResultNoData); }
我只是想通过任何收到的通知增加徽章号码.通知有效负载没有“徽章”字段.
可能吗?
如果应用程序没有运行后台,UIApplicationExitsOnSuspend = YES,我想知道在这种情况下是否会无声推送工作?
解决方法
在iOS上预处理和修改通知的有效负载有各种可能性.
在iOS 10之前
您可以发送Silent Notifications,不会向用户显示的内容.将终止或在后台唤醒我们的应用程序,您将能够对通知内容进行预处理.查看更多信息here,如何设置.但是,此通知类型不是100%可靠,并且不应滥用,例如,用于所有要发送的通知,因为Apple可以停止在一些消息之后发送通知.
另一种选择是,如果您的应用程序支持VoIP.这样,您的应用程序几乎总是会听取推送通知,并且您将始终可以预先处理通知,然后再显示它们.但是,如果您的应用没有真正的VoIP功能,例如电话,Apple会在评论时拒绝您的应用. Here是一个很棒的教程,如何设置它.
来自iOS 10
随着iOS 10的推出,我们终于能够对我们的通知进行预处理,甚至在应用程序处于后台或终止时也是如此.不需要发送VoIP功能或特殊类型的通知. Here是一个很棒的教程,如何设置它.