当应用程序处于终止状态时,iOS 静默推送通知不会收到

Posted

技术标签:

【中文标题】当应用程序处于终止状态时,iOS 静默推送通知不会收到【英文标题】:iOS Silent Push Notification does not receive when app in killed state 【发布时间】:2019-03-04 13:48:12 【问题描述】:

我想在收到静默通知然后生成本地通知时根据某些条件显示显示通知。还可以在 xcode 中启用后台模式并启用远程通知和后台获取。 对于像这样的静默通知消息格式-


 "message":
   "token":"iosdevicetoken",
   "apns":    
   "payload": 
            "aps": 
                "content-available": 1,
                "category": "GENERAL",
                "priority": "high",
                "token": "randomkey",
                "customkey": "abcs"
            
        
    
  

但当应用程序处于终止状态(从后台状态滑动)时,不会调用下面的委托方法

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

【问题讨论】:

推送通知在终止状态下不起作用。 【参考方案1】:

这是故意的。来自documentation 为application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

此外,如果您启用了远程通知后台模式,系统会启动您的应用(或将其从挂起状态唤醒)并在远程通知到达时将其置于后台状态。但是,如果用户强制退出应用,系统不会自动启动您的应用。在这种情况下,用户必须重新启动您的应用或重启设备,然后系统才会再次尝试自动启动您的应用。

(强调)

iOS 将用户从任务切换器中删除应用程序视为他们不希望应用程序再在后台运行的信号。因此,iOS 不会在后台重新启动应用程序,直到用户明确重新启动它。

【讨论】:

以上是关于当应用程序处于终止状态时,iOS 静默推送通知不会收到的主要内容,如果未能解决你的问题,请参考以下文章

应用程序处于非活动状态时无法接收静默通知 iOS

(iOS) GCM 静默推送通知以在应用程序终止时触发调用另一个 API

当应用程序处于后台或终止状态时如何增加推送通知批处理计数

静默推送通知是不是能够唤醒 ios 中处于未运行状态的应用程序?

如果应用程序被杀死,则使用 firebase 发送静默推送通知以唤醒应用程序

使用firebase发送静默推送通知,以便在应用程序被杀死时唤醒它