什麼應該是正確的方法來識別在背景周圍的信標[不在區域內]的時間花費。我可以在應用處於前臺時使用didRangeBeacons和一些業務邏輯來做到這一點。我在幾個論壇上看到,當應用在後臺註冊位置更新時,該功能可以工作,但我沒有成功。我在plist中添加了UIBackgroundModes
的位置更新密鑰。在信標周圍花費的時間
我正在使用estimote信標和它們的sdk。
什麼應該是正確的方法來識別在背景周圍的信標[不在區域內]的時間花費。我可以在應用處於前臺時使用didRangeBeacons和一些業務邏輯來做到這一點。我在幾個論壇上看到,當應用在後臺註冊位置更新時,該功能可以工作,但我沒有成功。我在plist中添加了UIBackgroundModes
的位置更新密鑰。在信標周圍花費的時間
我正在使用estimote信標和它們的sdk。
我看到這裏有兩個可能的解決方案:
監聽進入和退出區域的事件,存儲時間戳,然後用它們來計算在退出的時間跨度。如果您定義您的區域以使其僅包含一個信標,則監控該區域將相當於監控信標。唯一要記住的是,iOS強制同時監控20個區域的限制 - 所以這個解決方案不能擴展到20個以上的信標。
在後臺使用測距。除了UIBackgroundModes
之外,您還需要開始定期的位置服務,即startUpdatingLocation
。
當應用程序在前臺運行時,信標測距通常會傳送事件。 當您的應用程序位於後臺時,僅當爲應用程序啓用位置更新後臺模式並且標準位置服務正在運行時,此服務纔會傳遞事件。
(這是來自CLLocationManager class reference,部分「使用在背景定位服務」)
注意範圍的背景將被耗盡的電池壽命比平常多,而蘋果也需要理由使用背景模式。除非您的應用程序的用戶來自背景模式,否則他們可能會選擇拒絕。總而言之,明智地使用背景! (:
您是否已將NSLocationAlwaysUsageDescription密鑰添加到.plist中? – 2014-09-29 14:24:22