2014-09-01 57 views
1

我試圖讓一個應用程序無限期運行..我正在開發一個內部應用程序,所以蘋果的批准並不重要。iOS - 試圖讓應用程序無限期地在後臺運行

我已經嘗試了一些不同的東西,包括使用本教程模擬VOIP應用..

http://www.raywenderlich.com/29948/backgrounding-for-ios

最後,我就遇到了這個代碼片段網上

[application beginBackgroundTaskWithExpirationHandler:^{}]; 

我把這個在beginBackgroundTaskWithExpirationHandler然後在application:didFinishLaunchingWithOptions

叫我的應用程序委託的內緩慢循環功能

這會記錄每3秒剩餘的背景時間。它這樣做,當我離開我的應用程序..我看到180(3分鐘)倒計時,最終0

然後它只是不斷記錄0下去。我會認爲如果背景時間達到零,那麼我的過程不會執行。

任何人都知道這裏發生了什麼?

+0

你的應用程序* *可能會繼續在後臺運行(如你所看到的),但如果您加載另一個應用程序,特別是一個需要佔用大量內存(*辛普森輕拍*是我的最愛之一,用於測試:))那麼你的應用程序將被卸載 – Paulw11 2014-09-01 00:37:03

+1

你通過Xcode啓動了嗎?我相信通過調試器運行應用程序也會影響行爲。如果您在設備上安裝應用程序,然後直接從設備運行應用程序,則行爲可能也會發生變化。 – Rob 2014-09-01 00:40:37

+0

我在我的設備上運行這個,但插入我的電腦。即時通過xcode看日誌消息 – hamobi 2014-09-01 00:41:19

回答

0

如果您使用beginBackgroundTaskWithExpirationHandler並從Xcode啓動應用程序,那麼這將改變此UIBackgroundTaskIdentifier(Xcode將使應用程序保持活動狀態)的行爲。如果您看到Xcode調試控制檯中顯示的日誌消息,那意味着應用程序是通過Xcode在設備上啓動的。現在

該應用程序被安裝在設備上,阻止它(通過觸及在Xcode「停止」按鈕,或通過經由所述跳板設備上手動終止應用程序)。一旦確認應用程序未運行,您現在可以通過點擊設備本身上的應用程序圖標再次運行它。它應該開始,而不是以任何方式鏈接到Xcode。

儘管應用程序現在不通過Xcode運行,但您仍然可以通過轉到Xcode的「Device Organizer」來監視您記錄的進度,並打開實際設備的控制檯。我懷疑你會看到後臺任務過期,就像你期望的那樣。