根据远程通知的Apple's documentation:
讨论
使用此方法处理应用的传入远程通知。 与
application:didReceiveRemoteNotification:
方法不同 仅当您的应用程序在前台即系统中运行时才会调用 当您的应用在前台运行或运行时调用此方法 背景。此外,如果您启用了远程通知 在后台模式下,系统启动你的应用程序(或从中唤醒它) 暂停状态)并将其置于远程时的后台状态 通知到了。 但是,系统不会自动进行 如果用户强行退出,请启动您的应用。在那种情况下, 用户必须重新启动应用程序或在系统之前重新启动设备 尝试再次自动启动您的应用。
在我的情况下(iOS 7.1.1),应用程序被杀后(从“最近的应用程序列表”向上滑动)并且重新启动手机后,远程通知不会传递到应用程序。如果我打开应用程序,会按预期交付通知。我错过了什么?
编辑:避免任何误解。我期望的是以下流程:
答案 0 :(得分:1)
问题是您是开发人员,使用情况并不常见。您的操作:启动应用程序,将其滑出,关闭手机(不是待机,而是关闭),重新启动,输入密码,让服务器发送通知。那不行
由于某些原因,在重新启动手机后的90秒左右时间内仍未收到发送的通知。等待90秒钟,然后您发送通知,并且应该会收到它。由于重新启动用户电话的时间与您发送通知的时间之间没有关系,因此这对于开发人员和测试人员而言只是一个问题,而不是对于真正的用户而言。
答案 1 :(得分:0)
从您链接的文章中,找到您引用的方法(application:didReceiveRemoteNotification:
)
如果远程通知到达时应用程序未运行,则 方法启动应用程序并提供相应的信息 启动选项字典。 该应用不会调用此方法 处理该远程通知。相反,你的实施
application:willFinishLaunchingWithOptions:
或application:didFinishLaunchingWithOptions:
方法需要得到 远程通知有效载荷数据并做出适当的响应。
您是否在will/didFinishLaunchingWithOptions:
的选项词典中检查了远程通知有效负载?