2

我已经实现application:didReceiveRemoteNotification:fetchCompletionHandler:了,这是在收到推送通知后运行所必需的。我还打开了“后台获取”和“远程通知”后台模式。我的推送通知包括content-available标志,设置为1.

如果我的应用程序处于 Active、Background 或 Suspended 状态,则会适当调用此函数,并且应用程序会暂时进入 Inactive 状态。但是,如果我的应用程序由于内存不足问题(即用户在启动我的应用程序后打开了许多其他应用程序,这种情况相当普遍)而从暂停状态中清除,它会进入未运行状态。此时,它不会调用该didReceiveRemoteNotifications函数。

此功能的文档指出:

如果您启用了远程通知后台模式,系统会启动您的应用程序(或将其从挂起状态唤醒)并在远程通知到达时将其置于后台状态。但是,如果用户强制退出,系统不会自动启动您的应用程序。在这种情况下,用户必须重新启动您的应用程序或重新启动设备,然后系统才会再次尝试自动启动您的应用程序。

用户强制退出应用,应用不调用该函数的场景是可以接受的。但是我看到的是,如果系统出于相当普遍的原因终止了应用程序,那么这个函数就不会被调用。

我还尝试实现application:didReceiveRemoteNotification:已弃用的函数,以查看当应用程序处于未运行状态时是否会调用该函数。它没有。

4

0 回答 0