如何解决每 X 分钟更新一次服务器位置 iOS
我尝试在每 X 分钟后将位置从应用更新到 firebase(任何小于 15 分钟的值都很好)。
我为位置启用了后台模式,并在以下方法中尝试上传到 Firestore 文档。
func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation])
问题在日志中我可以看到此方法已被调用,但在后台没有数据上传到 firestore。事实上,我有时在应用程序进入后台后才工作,但之后就完全没有了。
有什么解决方法吗?
解决方法
使用带有 Timer 的代码在 Firestore 中调用更新:
在开始地图调用时编写此代码:
locationManager.startUpdatingLocation()
locationManager.delegate = self
在您不想停止位置更新之前避免打电话:
locationManager.stopUpdatingLocation()
符合委托方法:
func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) {
guard let location = manager.location else {
return
}
self.clLocation = location
//Firestore condition here
}
,
检查您是否在位置管理器中将 allowedBackgroundLocationUpdates 设置为 true
locationManager?.allowsBackgroundLocationUpdates = true
仅当位置有任何更新时,您才会在后台更新位置。还要检查您是否在位置管理器中提到了任何 distanceFilter。如果是这样,基于此,您将每 X 米获得一次位置更新
locationManager?.distanceFilter = CLLocationDistance(X)
,使用此代码
locationManager.startUpdatingLocation()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.delegate = self
不要在以下委托方法中停止位置更新。
func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。