2016-11-28 54 views
0

每當用戶殺死我的應用程序時,我的應用程序都會收到通知(不會將其移至背景,但通過雙擊主屏幕按鈕並向上滑動屏幕截圖實際完全退出),這一點非常重要。我知道applicationWillTerminate()幾乎沒有被調用,所以我想知道什麼最安全的方式是當用戶將殺死應用程序通知。 Apple似乎不太可能爲此提供任何形式的解決方案,因爲許多iOS用戶在完成使用它的應用程序後會自行殺死應用程序,所以如果它真的會真的真的很奇怪不可能趕上這個事件。我需要做的唯一事情就是發送一個URLRequest發送一些更新指令到我的web服務。當應用程序被殺時向Web服務發送請求? (Swift 3)

+0

您可以嘗試攔截SIG_KILL或SIG_TERM信號,這兩個信號中的一個會在被殺死時發送給應用程序。然而,不知道你的應用是否能夠在當前生命週期中做很多事情(接近其結束時) – Cristik

+0

@Cristik我想是值得一試的。我怎麼做? –

回答

0

當我添加一個觀察者來處理UIApplicationWillTerminateNotification時,我獲得了更多的一致性。當用戶雙擊主頁按鈕並輕掃應用程序以殺死它時,它會被調用。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{ 
    NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(AppDelegate.onAppWillTerminate(_:)), name:UIApplicationWillTerminateNotification, object:nil) 
    return true 
} 


func onAppWillTerminate(notification:NSNotification) 
{ 
    print("onAppWillTerminate") 
} 
+1

哇,它的工作!我不明白。如果'NSNotification'有一個應用程序終止通知,那麼applicationWillTerminate()幾乎不會被調用(主要是永遠不會)? Apple爲什麼不在AppDelegate中實現委託方法而不是使用此通知?無論如何,非常感謝!當我讀到你的答案時,我並不十分有信心它會奏效,因爲每個人都告訴我很久以後,趕上'應用程序關閉'事件是不可能的。你的回答證明了很多人的錯誤。令人驚喜的是,這有一個解決方法。再次感謝! –

+0

不客氣!樂於幫助! :) –

相關問題