我已经实现了application:didReceiveRemoteNotification:fetchCompletionHandler:
,这是在收到推送通知后运行所必需的。我也打开了" Background Fetch"和#34;远程通知"背景模式。我的推送通知包括content-available
标记,设置为1
。
如果我的应用程序处于Active,Background或Suspended状态,则会正确调用此函数,并且应用程序会暂时进入Inactive状态。但是,如果我的应用程序由于内存不足问题(即自启动我的应用程序以来用户已经打开了许多其他应用程序,这是一个相当常见的事件)而被从Suspended状态清除,它将进入Not Running状态。此时,它不会调用didReceiveRemoteNotifications
函数。
The documentation for this function州:
如果您启用了远程通知后台模式,系统会启动您的应用(或将其从暂停状态唤醒),并在远程通知到达时将其置于后台状态。但是,如果用户强行退出,系统不会自动启动您的应用。在这种情况下,用户必须重新启动您的应用程序或重新启动设备,然后系统才会再次尝试自动启动您的应用。
用户强制退出应用程序的情况,因此应用程序不会调用此功能。但我所看到的是,如果系统以相当常见的原因终止应用程序,那么这个功能就不会被调用。
我还尝试实现已弃用的application:didReceiveRemoteNotification:
函数,以查看当应用处于“未运行”状态时是否会调用该函数。它没有。