2017-08-21 124 views
-1

我有一些網絡請求與15秒超時application:didFinishLaunchingWithOptions:方法。我發現以下奇怪的情況。爲什麼iOS靜默推觸發器應用程序:didFinishLaunchingWithOptions:當應用程序在後臺

T1:應用程序輸入的背景通過按壓主頁按鈕
T2:接收到的應用程序推無聲並執行didFinishLaunchingWithOptions:方法,然後將請求發送
T3(> T2 + 15S):用戶輕敲應用程序圖標。 T2中的所有請求都立即超時。

我的問題是爲什麼didFinishLaunchingWithOptions在這種情況下被觸發,以及如何調試(重現這種情況,因爲以上都在日誌中)。

回答

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

裏面的啓動選項,和你需要時,應用程序從通知發佈到力所能及的工作。

+0

謝謝,但您可能需要了解我的問題。 – xuning0

+0

我編輯了我的答案澄清 – anomeric

0

didFinishLaunchingWithOptions被調用,如果你的應用程序暫停或死亡,你得到通知。你的應用程序可能已經在後臺崩潰,這就是調用didFinishLaunchingWithOptions的方式。

要調試該場景,請執行以下操作。

  1. 單擊目標,並選擇Edit Scheme enter image description here

  2. 選擇Launch Wait for executable to be launched enter image description here

  3. 運行應用程序。

    enter image description here

現在你可以在didFinishLaunchingWithOptions添加破發點,並通知您的設備。一旦設備收到通知,您可以進行調試。

+0

謝謝。我試過,但收到無聲通知時沒有執行斷點。 – xuning0

相關問題