2014-04-04 189 views
0
UIApplication* app = [UIApplication sharedApplication]; 

_backgroundTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
    [app endBackgroundTask:_backgroundTask]; 
    _backgroundTask = UIBackgroundTaskInvalid; 
}]; 

[self startTimer]; 

NSLog(@"backgroundTimeRemaining: %.0f", [[UIApplication sharedApplication] backgroundTimeRemaining]); 

-(void)startTimer 
{ 
    self.updateTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 
                 target:self 
                 selector:@selector(repeatedMethod) 
                 userInfo:nil 
                 repeats:YES]; 
} 

我能當我的應用程序是在前臺,但是當我來到後臺,如果 backgroundTimeRemaining:10正在運行3分鐘,但是當backgroundTimeRemaining:176 它成功運行不斷運行。有一件事我不明白的是爲什麼backgroundTimeRemaining顯示不同的數字。如何在後臺連續運行過程。我需要提到的一件事是我的後臺進程包含位置更新。我對ios很陌生。任何幫助將是可觀的。如何在後臺繼續在iOS上運行位置更新

回答

0

你需要設置下面的鍵值在你的應用程序的Info.plist文件

所需的背景模式:應用程序註冊了位置更新!

如下圖所示,並在AppDelegate中實現您的位置管理器委託方法,以使其存在於您的應用程序的任何視圖控制器中。

在info.plist中設置上述關鍵值會告訴ios啓用位置服務的後臺模式。

+0

我已經在info.plist中添加了位置更新所需的背景模式。我正在viewcontroller中進行位置更新。並且我正在使用定時器調用appdelegate(repeatedMethod)中的該方法。 – user3496682

0

閱讀「在後臺獲取位置活動(僅適用於iOS)」中:

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW10

基本上您的應用需要請求允許有這樣的背景模式,並使用位置API,而比一次。你會做一些設置(獲取默認位置管理器,設置委託),從CLLocationManager類調用「startUpdatingLocation」,然後定期回調新的位置。

請記住,如果你這樣做,你會很快耗盡用戶的手機電池,並且Apple會從App Store中拒絕你的應用程序,除非你對此作出了免責聲明。

+0

我想知道爲什麼backgroundTimeRemaining在不同的時間顯示不同的數字。此外,我已經在一個viewcontroller中實現了CLLocationManager類,並且每60秒鐘在nstimer的appdelegate中執行clling。是對的嗎。 – user3496682

+0

你不需要計時器。如果您正確設置了位置管理器委託,那麼它(系統的位置管理器)會在位置發生一定距離(您可以指定)變化時調用您。 – RobP

+0

和iOS對於您將獲得backgroundTimeRemaining的內容幾乎沒有保證 - 它可能取決於您的控制之外的其他應用程序,電池續航時間或iOS未來版本中的任何其他應用程序的活動數量。但是,這對於獲取後臺位置更新的目的並不重要 – RobP

0

將您的CLLocationManagerpausesLocationUpdatesAutomatically設置爲NO。它可能會幫助你。

欲瞭解更多信息,請查詢Apple's Location manger documentation

+0

請告訴我什麼是使用backgroundTimeRemaining – user3496682

+0

檢查這[文檔](https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplication_Class/Reference/Reference。HTML#// apple_ref/OCC/instp/UIApplication的/ backgroundTimeRemaining) –

相關問題