为什么iOS静默推送触发应用程序:didFinishLaunchingWithOptions:当应用程序处于后台时
我在为什么iOS静默推送触发应用程序:didFinishLaunchingWithOptions:当应用程序处于后台时,ios,background,timeout,launch,silentpush,Ios,Background,Timeout,Launch,Silentpush,我在应用程序:didFinishLaunchingWithOptions:方法中有一些网络请求超时15秒。我发现了以下奇怪的情况 T1:应用程序通过按下主页按钮进入后台 T2:应用程序收到静默推送,并执行didfishlaunchingwithoptions:method,然后发送请求 T3(>T2+15s):用户点击应用程序图标。T2中的所有请求立即超时 我的问题是为什么在这种情况下触发了didfishlaunchingwithoptions,以及如何调试(重现这种情况,因为以上所有内容都在日
应用程序:didFinishLaunchingWithOptions:
方法中有一些网络请求超时15秒。我发现了以下奇怪的情况
T1:应用程序通过按下主页按钮进入后台T2:应用程序收到静默推送,并执行
didfishlaunchingwithoptions:
method,然后发送请求T3(>T2+15s):用户点击应用程序图标。T2中的所有请求立即超时
我的问题是为什么在这种情况下触发了
didfishlaunchingwithoptions
,以及如何调试(重现这种情况,因为以上所有内容都在日志中)。您可以检查应用程序状态,以确定在收到通知时应用程序是否从后台启动:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground ) {
//opened from a push notification when the app was on background
}
}
编辑::
这里没有什么可调试的,它是预期的功能
如果你想以不同的方式处理它,你可以寻找
UIApplicationAunChoptionSlocalNotificationKey
在启动选项中,并在从通知启动应用程序时执行任何需要的操作 如果您的应用程序被挂起或终止,并且您收到通知,则调用didfishlaunchingwithoptions。您的应用程序可能在后台崩溃,这就是调用
didfishlaunchwithoptions
的方式
要调试该场景,请执行以下操作
编辑方案
等待可执行文件启动
现在,您可以在
didfishlaunchingwithoptions
中添加断点,并向设备发送通知。一旦设备收到通知,您就可以进行调试 静默推送可以将暂停的应用程序(由于内存紧张,已被iOS系统正确关闭,而不是用户手动关闭)启动到后台。在这种情况下,应用程序的生命周期变为:
应用程序:将使用选项完成启动:
应用程序:使用选项完成启动:
ApplicationIdentinterBackground:
苹果文档:谢谢,但您可能需要理解我的问题。谢谢。我尝试过,但在收到静默通知时未执行断点。