Apple Developer Network 的官方文档提到,推送通知的有效负载是在应用程序在前台运行时或因推送通知而被激活时提供给应用程序的。我找不到有关应用程序在后台运行时发生的情况的声明。
我用一个即时消息应用程序做了一个测试,发现了一些我不明白的地方。测试过程为:
- 为应用启用推送通知
- 将应用切换到后台
- 向客户发送两个即时消息。两个推送通知到达客户端,应用程序图标上的角标(Badge)变为 2
- 关闭蜂窝网络以防止应用与其服务器通信
- 点击应用图标将其切换到前台
完成这些步骤后,我可以在聊天窗口中看到这 2 条消息。因为应用程序无法直接从服务器检索消息,唯一的解释是推送通知由应用程序在后台处理,或者它们被缓存在某个地方,当应用程序切换到前台时可以访问。但是 iOS 真的允许应用程序在后台执行代码,或者缓存应用程序的通知吗?
最佳答案
应用程序将通知缓存 2-5 分钟(我不知道确切时间)..
如果您收到通知并在 2-5 分钟内打开应用
然后在你的应用委托(delegate)中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
}
然后您将获得通知对象 .. 您可以使用 launchOPtions
对象作为键 UIApplicationLaunchOptionsRemoteNotificationKey
如果你在2-5分钟内没有打开它..将没有通知对象,
这是基于我的经验..不能完全支持这个答案
关于ios - iOS 是否缓存在后台运行的应用程序的远程通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9613023/