2016-12-05 51 views
0

我有一個藍牙設備,當按下按鈕時,會在我的應用程序中觸發位置服務。位置服務確實運行,但只能運行約8秒鐘。我有一個NSLog輸出在didUpdateToLocation委託方法中找到的位置。它僅輸出該NSLog 8秒鐘。allowedBackgroundLocationUpdates只能工作幾秒

當我將應用程序放在前臺時,位置服務會再次繼續。這裏是我初始化外景經理:

self.locationManager = [[CLLocationManager alloc] init]; 
self.locationManager.delegate = self; 
[self.locationManager requestAlwaysAuthorization]; 
[self.locationManager requestWhenInUseAuthorization]; 
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[self.locationManager setAllowsBackgroundLocationUpdates:YES]; 
[self.locationManager allowsBackgroundLocationUpdates]; 

當按下按鈕時,我運行此:

[self.locationManager startUpdatingLocation]; 
+0

爲了以持續方式開始在後臺更新位置,您必須啓動重要的位置更改監控,同時您的應用處於前臺 – Paulw11

+0

剛剛測試過並且它工作正常,但卻無法做到我需要做的事與我的應用程序?在所有? – Chris

+0

那麼,你只需要留下重要的位置更新。與完整的GPS位置更新相比,它具有較低的能量影響 – Paulw11

回答

0

您需要啓用後臺模式(位置),只要你的位置經理能夠接收位置更新,您的應用程序將收到所有藍牙數據。

正如@ Paulw11在評論中提到的那樣,使用顯着位置更新將大大降低電池使用量。

這是鏈接到Apple guide

以下是question與後臺獲取位置更新相關的鏈接。