iOS 關于《定位服務》后臺一直開啟的解決辦法

? ? ? ? 最近公司要做停車自動標記車輛位置的功能,這是室內定位反向尋車系統的前提條件,也是室內定位技術剛需!

解決思路:

? ? ? ? 剛開始想到該技術通過傳感器中加速度計、計步器等數據,通過一系列算法計算分辨出,“人行”/“車行”。從而通過時間戳對照到GPS定位點,從而做到標記車輛位置到地圖上!

? ? ? ? 經過測試iPhone 計步器和加速度計,發現當用戶把手機鎖屏或者APP掛起狀態時候,計步器和加速度計,GPS都不會在后臺發送數據,(因為要通過收集數據才能分析處理,所以掛起狀態不發送數據從而不能從這思路解決問題)通過查閱資料,發現GPS定位服務可以在后臺一直處于運行狀態,以下是解決辦法:

1、 首先把定位服務的后臺啟動模式打開 如圖 1

圖 1

2、設置CLLocationManager的屬性,如圖2。 ? ??

?提示: ?1)2)3)4)一步不能少,少了APP就不能在后臺一直運行了。

? 1) 定位管理者需要一直請求定位服務,requestAlwaysAuthorization;

? 2)需要允許后臺更新數據更新,setAllowBackgroundLocationUpdates;

? 3) ?設置不允許暫停自動刷新數據功能,pusesLocationUpdatesAutomatically = NO;

? 4)設置定位更新的最小距離為空,kCLDistanceFilterNone;

圖 2

然后經過測試,定位服務和計步器、傳感器都能在掛起狀態不能被KILL掉。

注意: 之前沒有設置2的 ?3) 4)的時候,APP有時候會在16分鐘,18分鐘,20分鐘左右不發送用戶位置,和計步器、傳感器數據。一定要把3)4)設置正確。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容