应用程序处于后台时未收到后台获取远程通知,并且用户未通过推送通知进入

Posted

技术标签:

【中文标题】应用程序处于后台时未收到后台获取远程通知,并且用户未通过推送通知进入【英文标题】:Not receiving background fetch remote notifications while application is backgrounded, and user does not enter through push notification 【发布时间】:2015-01-23 20:16:03 【问题描述】:

我的应用程序当前使用application:didReceiveRemoteNotification:fetchCompletionHandlerapplication:didFinishLaunchingWithOptions: 委托方法来处理后台远程通知。间歇性地,会出现一个推送通知,并且我不会收到一条日志说它已经调用了我的任何一个应用程序委托方法。我已经测试了挂起、活动、后台和挂起状态,它们似乎都工作正常。每 30 次推送中大约有 1 次收到“死亡”推送通知。

****注意:这种情况只发生在我没有通过触摸推送通知进入时,并且发生不可预知。**

【问题讨论】:

如果您的应用完全卸载(即未暂停/在后台)并且用户从图标(不是通知)重新启动,那么您将不会收到通知 @Paulw11 是的,我知道我不会通过用户字典获得通知,但由于我打开了后台获取和远程通知,它仍然应该点击 application:didReceiveRemoteNotification:fetchCompletionHandler 即使在背景或暂停。如果应用程序被 ios 卸载,它应该重新启动到挂起状态并处理通知,对吗? 你的应用是在后台还是卸载了? @Paulw11 我在两个州都看到了错误 【参考方案1】:

该错误来自 Apple 文档中的 iOS 8“功能”。如果 iPhone 的蜂窝或 wifi 信号不佳、电池电量不足或未插入充电器,手机将在锁定屏幕上收到通知,但不会将应用程序启动到暂停状态。因此,如果您不通过滑动通知本身直接进入应用程序,则不会触发 application:didReceiveRemoteNotification:fetchCompletionHandler 等后台事件。

这在测试中被抵消了,因为在调试过程中设备总是插入我的开发机器,并且有很强的 wifi 信号,所以我永远不会陷入糟糕的状态。

这是非常具体的,但如果您的应用严重依赖于后台功能的推送通知,则这一点至关重要。

【讨论】:

以上是关于应用程序处于后台时未收到后台获取远程通知,并且用户未通过推送通知进入的主要内容,如果未能解决你的问题,请参考以下文章

远程通知到达时哪个代表首先调用,而我的应用程序处于终止模式(不在后台)

应用程序在前台时未收到推送通知

当我的应用程序处于后台或关闭时,当远程推送通知到达时从有效负载中获取数据

应用关闭时未收到 Android 推送通知

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

iOS 应用未收到来自 Firebase 的后台推送通知