2013-06-26 17 views
0

我使用UIBackgroundModes = location來跟蹤用戶位置並將數據發送到我的服務器。ios背景位置與kCLLocationAccuracyKilometer和GPS圖標

其實我:

self.bgLocationManager=[[CLLocationManager alloc] init]; 
self.bgLocationManager.delegate=self; 
self.bgLocationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 
self.bgLocationManager.distanceFilter = 250.0; 
[self.bgLocationManager startUpdatingLocation]; 

我見過kCLLocationAccuracyKilometer使用手機信號塔技術作爲默認的方法來發現用戶位置。

當我的應用程序進入後臺狀態時,GPS圖標仍處於活動狀態,這可能會讓用戶擔心電池消耗。另外,我看到其他應用程序(例如谷歌縱橫)可以關閉GPS圖標。

開發跟蹤用戶位置的應用程序的正確方法在哪裏?

編輯: 要使用startMonitoringSignificantLocationChanges,我需要更換我的代碼:

self.bgLocationManager=[[CLLocationManager alloc] init]; 
self.bgLocationManager.delegate=self; 
self.bgLocationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 
self.bgLocationManager.distanceFilter = 250.0; 
[self.bgLocationManager startMonitoringSignificantLocationChanges]; 

不是嗎?

回答

1

一對夫婦的想法:

  1. 的GPS圖標不只是警告他們關於電池的消耗(雖然在實踐中,這就是人們擔心,當他們看到那個圖標的第一件事情),但正如重要的是,還有一個隱私警告,他們的位置正在被追蹤。 (爲了說明這一點,位置服務設置位於「設置」應用程序中的「隱私」下。)

  2. 與其希望kCLLocationAccuracyKilometer不會耗盡電池太多,您可能會考慮使用重要更改服務,正是爲了這個目的而設計的。這也有一個好處,就是當位置發生變化時它會喚醒你的應用程序,而標準服務不會。

順便說一句,我希望有不同的顏色圖標或顯著變化服務與標準服務的一些其他視覺提示(有點像存在用於地理圍欄),所以用戶可以在電池排水區分問題和隱私問題,但我不相信。

+0

感謝您的回覆。關於第一點,我明白了,但關於第二點,你的意思是我必須將我的代碼替換爲我的最後一次編輯? – CeccoCQ

+1

@Cecco我想說的是,GPS圖標並不是要說「嗨,你電池正在耗盡」,而是「嘿,你被跟蹤」。所以你關心用戶對前者的看法是有效的,你可以通過告訴他們儘可能尊重他們的電池來改善他們的擔憂(例如,在你的應用的設置中有一個功能,提及「低功耗位置服務」)。但是,如果位置服務處於啓用狀態,圖標就會顯示,您只需盡一切可能來緩解他們可能的擔憂。 – Rob

+0

@Cecco更好的解決方案是確保在不需要它時關閉位置服務(例如,當應用程序進入後臺時,如果位置不會稍微改變等)。參見[保存電池的技巧](http://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW17) 。 – Rob