[英]How Can I Continue updating my location even when app is killed or removed from background in ios?
[英]If I have location services turned on then how can my app get killed when it enters background mode?
我的應用程序在后台運行時被殺死。
但是,出於位置跟蹤的目的,我的應用始終在后台保持活動狀態。
我已經與遇到此問題的用戶進行了交談,他們說他們的locationTracking設置為“始終”並且尚未關閉。
我假設即使該應用程序在后台(未掛起),由於內存警告,它仍可能會刷新出內存。
我的問題除了記憶之外還有其他原因嗎? 我查看了Apple文檔,發現這可能是由於+ 80%的CPU在后台運行了1分鍾以上,但這沒有發生。 我知道崩潰也可能是該應用再次啟動的原因,但是我們的崩潰並沒有增加。 我們沒有在locationManager類中看到任何崩潰,並且我們在后台所做的唯一一件事就是跟蹤位置並進行API調用。
我新添加到locationManager
類的唯一一件事是以下額外檢查:
private func checkLocationAccuracy(from location: CLLocation) throws {
let ageOfLocation = -location.timestamp.timeIntervalSinceNow
if ageOfLocation >= maximumAcceptedStale {
throw LocationAccuracyError.stale(secondsOld: ageOfLocation)
}
if location.horizontalAccuracy <= 0 {
throw LocationAccuracyError.invalid
}
if location.horizontalAccuracy > MaximumAcceptedHorizontalAccuracy{
throw LocationAccuracyError.lowAccuracy(metersOff: location.horizontalAccuracy)
}
}
如果拋出錯誤,那么我將其記錄下來。 否則,我只是打一個網絡電話。 這項額外的檢查將減少網絡呼叫,因此我猜測它應該更有效地節約能源。
編寫的代碼有問題。
僅在用戶更改應用程序的“位置(權限)設置”時才發生。 顯然,這是沒有針對測試的方法!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.