我正在做一个关于连续背景位置更新的项目,我的最终目标是让应用程序永久保留(除非用户杀死它)。但我只能运行30个小时而且我不知道为什么。最初,我没有修改distanceFilter,它只能停留26个小时。我检查了有关应用程序的五个州的文档,我不确定应用程序将在何种情况下从后台迁移到暂停状态。
locationManager = CLLocationManager()
locationManager!.requestAlwaysAuthorization()
locationManager!.delegate = self
if #available(iOS 9.0, *) {
locationManager!.allowsBackgroundLocationUpdates = true
}
locationManager!.pausesLocationUpdatesAutomatically = false
locationManager!.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager!.distanceFilter = 100
我使用的是标准位置更新(startUpdatingLocation()),而不是重要的位置更改。另外,我使用firebase作为我的后端,所有位置数据都将更新到那里。
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userID = Auth.auth().currentUser?.uid
let now = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
let currentTime = dateFormatter.string(from: now)
if locations.count == 0 {
return
}
let lastloc = locations.last
if lastloc == nil {
return
}
let lat = String(lastloc!.coordinate.latitude)
let lng = String(lastloc!.coordinate.longitude)
let data = ["Lat": lat, "Lng": lng]
ref.child("GPS").child(userID!).child(String(testCount)+"-"+currentTime).setValue(data)
testCount = testCount + 1
}
我认为firebase没有自动注销功能。 任何建议都会很明显,谢谢。