我在application:didFinishLaunchingWithOptions:
方法中有一些15s超时的网络请求。我发现了以下奇怪的情况。
T1:app按主页按钮
进入后台
T2:应用程序收到静默推送并执行didFinishLaunchingWithOptions:
方法,然后发送请求
T3(> T2 + 15s):用户点击应用图标。 T2中的所有请求都会立即超时。
我的问题是为什么didFinishLaunchingWithOptions
在那种情况下被触发以及如何调试(重现这种情况,因为以上都在日志中)。
答案 0 :(得分:0)
您可以检查应用状态,以确定应用是否在收到通知后从后台启动:
- (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
}
}
编辑::
这里没有什么可以调试的,它是预期的功能。
如果您想以不同方式处理它,可以查找
UIApplicationLaunchOptionsLocalNotificationKey
启动选项内部,并执行从通知启动应用程序时所需的任何工作。
答案 1 :(得分:0)
SELECT [DOCNAME],[DOCNUM],[EDITWHEN] as 'last edited date',[ENTRYWHEN] as 'created date', MAX (ACTIVITY_DATETIME) as 'last accessed date'
FROM [Knowledge_Prod].[MHGROUP].[DOCMASTER] dm
INNER JOIN [Knowledge_Prod].[MHGROUP].[DOCHISTORY] dh
ON dm.DOCNUM = dh.DOCNUM
WHERE dm.DOCNUM in ('10098776', '1355264')
AND dh.ACTIVITY in ('View','Create','Copy', 'Checkin', 'Checkout','Print','Mail')
GROUP BY [DOCNAME],[DOCNUM],[EDITWHEN],[ENTRYWHEN]
。您的应用程序可能已在后台崩溃,并且正在调用didFinishLaunchingWithOptions
的方式。
要调试该方案,请执行以下操作。
答案 2 :(得分:0)
静默推送可以将挂起的应用程序(由于内存紧张而被iOS系统正确杀死,而不是用户手动杀死)到后台。在这种情况下,应用程序的生命周期变为:
application:willFinishLaunchingWithOptions:
application:didFinishLaunchingWithOptions:
applicationDidEnterBackground: