IOS9 推送省电模式 - didReceiveRemoteNotification 未调用

IOS9 Push Battery Saver Mode - didReceiveRemoteNotification not called

On IOS9 如果 iPhone 处于省电模式,回调

application:didReceiveRemoteNotification:fetchCompletionHandler: 

未调用。相反,我在控制台中收到以下警告

High Priority Push: com.your-company.app - Battery Saver Mode Enabled

当使用 PushKit 时,它似乎确实有效。

其他人是否遇到过这种行为?

还有其他解决方法吗?

不幸的是,我相信这是预期的行为。有关推送通知的文档不断地对冲它们的可靠性。例如:

https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

Important: Delivery of notifications is a “best effort”, not guaranteed. It is not intended to deliver data to your app, only to notify the user that there is new data available

有很多情况会导致通知无法发送或延迟发送,有时 Apple 会合并多个通知,只发送最后一个通知。

PushKit 是需要 VOIP 功能的应用程序的更可靠的替代品,在这些应用程序中使用通知给用户打电话需要更好的可靠性。这就是为什么它仍在省电模式下工作的原因。

就解决方法而言,这实际上取决于您要实现的目标。一种可能性是您可以在您的应用处于 运行 时安排本地通知,这将比标准的远程通知更可靠。