2013-05-16 71 views
1

由於我需要用戶在後臺的位置,我正在獲取用戶的位置在didUpdateLocation。但由於這樣會消耗更多的電池。獲取用戶在後臺的位置

我已經實施startMonitoringSignificantLocationChanges後臺方法,但根據我didUpdateLocation不起作用。

任何解決方案,所以我可以消耗電池電量不足電源,也可以頻繁地獲取用戶的更新位置。

+1

給一些你寫的代碼 – Durgaprasad

+0

self.locationManager = [[CLLocationManager alloc] init]; _locationManager.delegate = self; _locationManager.pausesLocationUpdatesAutomatically = NO; _locationManager.desiredAccuracy = kCLLocationAccuracyBest; [_locationManager startUpdatingLocation]; – Maddy

+0

在後臺的方法[_locationManager startMonitoringSignificantLocationChanges] – Maddy

回答

0

「didUpdateLocation。但由於這樣會消耗更多的電池。」

這並非完全正確。您可以使用didUpdateLocation調整所需的精度級別。這取決於你想要什麼樣的準確性,您的設備將只使用,而不是你的母語GPS接收機的蜂窩位置數據打開所有的時間,例如:

較低的電池消耗和500米的精度
CLLocationAccuracy myaccuracy = 500.00;

最大精度和最大電池引流可以有(需要在設備上的充電器被插入)
CLLocationAccuracy myaccuracy = -1.0;


如果你不知道要選擇哪個值也可以使用常量:

的extern const的CLLocationAccuracy kCLLocationAccuracyBestForNavigation; < - 表示-1.0
extern const CLLocationAccuracy kCLLocationAccuracyBest;
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;
extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;

https://developer.apple.com/library/mac/#documentation/CoreLocation/Reference/CoreLocationConstantsRef/Reference/reference.html#//apple_ref/c/data/kCLLocationAccuracyBest


現在回答你的問題:

didUpdateLocation只適用於當你問你的LocationManager到startUpdatingLocation。

當你使用startMonitoringSignificantLocationChanges時,你沒有從你的GPS單元獲得任何信息。使用這種方法時,一旦手機從一個手機塔變爲另一個手機塔(例如乘火車或汽車旅行),您的應用程序將被喚醒。當你的應用被它喚醒,你需要實現:

id locationValue = [launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]; 
if (locationValue) {  
    NSLog(@"locationValue received, now needs to start updateLocation again"); 
    //your code goes here 
} 

裏面你

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

}

然後你就可以以接收didUpdateLocation通知重新開始你的正常startUpdatingLocation。或者,您可以查看Apple的文檔,並查看launchOptions在應用程序啓動時是否攜帶任何位置信息。