2014-10-02 32 views
1

有關這個主題的幾個線程,沒有什麼是適合我的。我不必在應用程序商店中部署應用程序,因此我可以在應用程序中進行黑客操作以保持其運行。任何方式我都可以保持應用程序,即使它是背景時?任何指針讚賞。在iOS的背景下永遠運行一個應用程序8

+0

究竟是你想達到什麼目的。您可以使用各種背景模式,但基本上不能讓應用程序永遠運行 - 例如,它可能因內存壓力而終止,但您可以使用一些背景模式讓iOS重新啓動您的應用程序背景 – Paulw11 2014-10-02 01:38:00

+1

設備需要每隔30秒連續獲取數據,並根據從服務器返回的數據對其執行操作。我知道推動是這裏的機制,但我們現在不能這樣做,所以我們必須進行民意調查。因爲如果應用程序背景,我們不能每30秒運行一次,我試圖找到其他方法。 – user3570727 2014-10-02 02:13:29

+0

任何想法或指針? – user3570727 2014-10-02 21:12:02

回答

3

我發現這個github項目解決了這個問題:https://github.com/voyage11/Location 顯然蘋果不會批准這個黑客,但我想它會適用於你的情況。

基本上你需要做的是:

  • 使用位置背景模式的能力在info.plist中
  • 總是有後臺任務運行,但不要讓它運行超過一分鐘。每分鐘創建一個新的後臺任務並停止舊任務。
  • 除了前面的任務滾動之外,還保留了長時間運行的後臺任務。如果真的需要,我不確定。
  • 每分鐘啓動一次位置管理器,然後requestAlwaysAuthorization。

從引用的代碼的一些重要片段:

後臺任務:

bgTaskId = [application beginBackgroundTaskWithExpirationHandler:^{ 
    [self.service debugLog:[NSString stringWithFormat:@"BG....background task %lu expired", (unsigned long)bgTaskId]]; 
}]; 

,並啓動位置管理器:

if(IS_OS_8_OR_LATER) { 
    [_locationManager requestAlwaysAuthorization]; 
} 
[_locationManager startUpdatingLocation]; 
相關問題