2014-09-24 83 views
2

我正在開發一個iOS應用程序,該應用程序在後臺定位服務中用於監視信標和GPS區域。這會導致我的應用無用地消耗電池,如果設備不在我的iBeacons的位置附近。它也總是在狀態欄中顯示位置服務藍色箭頭,這給我的用戶對我的應用程序的不好理解。定期喚醒iOS應用程序以檢查位置

我希望能夠永久使用位置服務,但仍能夠檢測iBeacons。我認爲定期喚醒我的應用程序以檢查位置,看設備是否在我的iBeacons的位置附近,這樣可以節省電池電量,並讓我找到設備,而無需始終在狀態欄中顯示位置服務藍色箭頭。

此解決方案可能嗎?或者你認爲有更好的解決方案?

回答

1

當您的應用在後臺查找信標時,iOS已經優化了電池使用情況。我的測試表明,額外的電池使用量是最小的,並且藍色箭頭位置圖標而不是當您的應用程序在後臺顯示時,信標已暫時將您的應用程序暫時喚醒到背景中的非常短時間段(約10秒)在信標檢測之後。

你確定這是你的應用程序,使藍色箭頭顯示?這是否真的發生在很長一段時間的背景?您的位置背景模式是否在您的plist中不必要地設置?

+0

你是對的,監視一個'CLBeaconRegion'不會在狀態欄中顯示一個實心的箭頭,只有一個空的箭頭。我的猜測是,如果我監視一個CLCircularRegion(GPS),它將會是相同的,它將在狀態欄中顯示相同的空箭頭。你知道哪兩種類型的地區更節能? – 2014-09-25 19:13:53

+0

我覺得這兩種電池都很溫和。對不起,我不知道哪個更有效。 – davidgyoung 2014-09-26 17:43:38

0

iOS 7.1後,蘋果已經優化了信標服務。現在你會得到你附近的地區。當應用程序很難關閉,你會得到本地通知。您可以使用這些方法的額外代碼: -

-(void)locationManager:(CLLocationManager *)manager 
     didEnterRegion:(CLRegion *)region { 
} 
-(void)locationManager:(CLLocationManager *)manager 
     didExitRegion:(CLRegion *)region { 
} 

正如@davidgyoung表示,iOS版已經優化了電池的使用,所以不要擔心。 :)

+1

是的,這是我將使用的方法,但是您知道是否已經進行了電池消耗測試,以確定「CLCircularRegion」的監控是否比監控「CLBeaconRegion」更節能? – 2014-09-26 15:30:27

+0

我想你可以通過Instrumentation(系統追蹤)來完成。你可以使用它們來知道哪一個是有效的。 – 2014-09-29 07:22:51