2016-05-13 33 views
2

我讀過this以及其他許多問題。我瞭解到,無法在特定時間安排任務從後臺運行。如何在特定時間段內運行CLLocationManager

我的應用程序使用CLVisit API將位置信息發送到服務器。但我希望用戶能夠選擇一個時間範圍來發送他/她的簽入。在背景的特定時間有沒有什麼不同的方式來stopMonitoringVisits()startMonitoringVisits()?我的應用程序是否應該在收到didVisit電話後始終監視並決定發送位置信息?

同樣的問題可以問startMonitoringSignificantLocationChanges()

回答

3

只要訪問監控不正是你的應用需求,保持監測總是和正確的處理決定(是否應報告位置服務器)處理didVisit回調時。

這種方式不會給電池帶來任何明顯的壓力,因爲訪問跟蹤非常電池友好,iOS默認運行那種監控,無論您是否使用您的應用。此外,任何試圖採用一些旨在規避供應商推薦的良好實踐並且甚至由API設計實施的「巧妙」技巧的嘗試都不可避免地導致「不良實踐」,這在您的案例中很可能會帶來額外的電池消耗。

保持監控始終的唯一不利影響是狀態欄,這被認爲是由許多「受過教育的」 iPhone用戶的高電池使用的標誌實線箭頭。如果這是主要問題,並且您的用例涉及了很多時間跨度(例如,離開辦公室和家庭位置),則您可以嘗試在正確的時間使用靜默推送通知來激活監控。

+0

你的意思是得到一個無聲的推回調(在暫停/後臺狀態),你可以'startLocationUpdates'?好的。那麼你是否允許追蹤180秒,或者如果你在plist中設置了位置服務並且'allowBackgroundLocationUpdates'設置爲'true',它將無限期地運行? – Honey

相關問題