2016-04-16 42 views
1

我有一個應用程序通過BLE與自定義硬件進行通信。在正常情況下,我希望我的應用程序在用戶按下主頁按鈕時快速終止。但是,當我的應用程序正在更新我的自定義硬件上的固件時,我想阻止iOS終止該應用程序。該固件操作從開始到結束大約需要五分鐘。我知道沒有辦法阻止iOS絕對終止應用程序,但是我可以做任何事情來阻止它在執行固件更新操作時終止我的應用程序嗎?如何阻止iOS在執行關鍵操作時終止應用程序?

+0

嗯,我懷疑這是可能的。如果用戶希望終止該應用程序,它將被終止。我嚴重懷疑蘋果會允許你這麼幹擾他們的用戶體驗,並阻止他們終止一個應用程序。您最可能做的就是在終止時向他們發送通知,通知他們需要重新打開應用程序並允許大量時間。 – MikeG

+0

@MikeG我不想覆蓋用戶強行終止我的應用程序或關鍵的操作系統條件,如低內存。我只是試圖阻止iOS在更常見的情況下更新固件(即內存不錯,但用戶按下主頁按鈕並在等待此固件更新期間開始瀏覽網頁時)更新固件時殺死我的應用程序。 – JacobJ

+0

@Rob感謝羅布,這兩個信息是優秀的(3分鐘的限制,藍牙中央提及)。如果你想把這些答案放在答案中,我會接受它作爲解決方案。 – JacobJ

回答

3

如果您需要3分鐘或更少時間,則可以在更新時使用beginBackgroundTaskWithName:expirationHandler:,以便應用程序將請求時間繼續在後臺運行,以便即使用戶點擊主頁按鈕以完成任務。問題是它只給你3分鐘,不會超過那個。

鑑於3分鐘顯然不足以讓您完成上傳,如果您沿着這條路走下去,我會建議將這個結合起來,在屏幕上顯示一些非常嚴肅的信息,告訴用戶不要離開應用程序。當應用程序即將進入後臺時(applicationDidEnterBackground),您也可以安排本地通知,以提醒用戶返回到應用程序,否則將面臨嚴重後果。

更好的是,您可以將應用程序聲明爲需要適當背景模式的應用程序。例如,有可能適用的專用背景模式bluetooth-centralbluetooth-peripheral。然後三分鐘限制不適用。請參閱適用於iOS的應用程序編程指南中的Declaring Your App’s Supported Background Tasks

相關問題