2013-07-16 26 views
1

我正在開發一個iPhone應用程序,我正在使用GPRS不時更新用戶的當前位置。如何限制使用CLLocationManager的應用程序的電量消耗

我發現電池耗盡。

任何人都可以幫助我解決這個問題嗎?

+0

您是否真的指您使用GPRS找到位置?儘管這不是不可能,但相當不尋常。無論如何,你在哪個頻率獲取當前位置? –

+0

假設您正在討論使用位置服務:減少用電量的一種方法是請求較低的準確性。使用適用於您的應用程序的最低精度。不要求後臺更新,如果你不需要它們,當你不需要時不要求你是指導應用程序。此外,您可以使用儀器來分析您的用電量。 – nielsbot

+0

我使用了CoreLocation框架[locationManager startLocationUpdates]&[locationManager stopLocationUpdates] –

回答

6

你的觀察是正確的。 GPS服務是耗電量大的操作。它包括啓動機載無線電和查詢可用的蜂窩塔,Wi-Fi熱點或GPS衛星,這可能需要幾秒鐘的時間。使標準的位置服務長時間運行會消耗設備的電池。

iOS爲此設計了一個解決方案。其所謂的意義位置改變。重大變化的位置服務爲具有蜂窩無線電的設備提供低功率定位服務。此服務僅適用於iOS 4.0及更高版本,還可以喚醒暫停或未運行的應用程序。這種方式的工作原理是您訂閱此服務並請求iOS通知您在用戶發生「指示位置」更改時發生。 「重大」的定義不在你手中。其實,這是節省電池的原因。你不要查詢位置。你得到更新。

在我看來,這個API非常好,給出了一個「相當」的準確位置。除非你正在構建一個跟蹤應用程序,否則這個API是簡單易用的電池。我無法告訴你應用程序的數量(付費&免費)我被無情地刪除,僅僅是因爲他們濫用位置服務和耗盡我的電池。想象一下,由於電池電量耗盡,用戶的iPhone在半天內無法使用。要非常注意這一點。開始此服務的方式是 -

- (void)startSignificantChangeUpdates 
{ 
    // Create the location manager if this object does not 
    // already have one. 
    if (nil == locationManager) 
     locationManager = [[CLLocationManager alloc] init]; 

    locationManager.delegate = self; 
    [locationManager startMonitoringSignificantLocationChanges]; 
} 

之後,與標準位置服務一樣,位置數據被傳遞到委託對象。你可以根據你的使用情況來使用它。更多信息在Apple Location Docs

相關問題