当用户进入该区域时,我正在制作一个带有位置更新的 ibeacon 区域监控应用程序(应用程序不在前台)。此位置更新必须配置为 kCLLocationAccuracyBestForNavigation 准确度(因为我必须在使用时进行跟踪,而仍然在该区域内,订阅我的重大更改是不够的)。一切正常,但 20 秒后(有时 1 分钟以上)我停止接收位置更新。我将所有键都放在 info.plist 中以始终使用位置,我在功能部分中包含背景模式,并在背景中包含位置更新。
我用不同的配置配置 locationManager 并且总是停止我的位置更新。我正在使用 IOS 12 和 Iphone 7 进行测试。
我配置CLLocationManager的方式:
self.locationManager.desiredAccuracy
=kCLLocationAccuracyBestForNavigation
self.locationManager.activityType = .automotiveNavigation
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.delegate = self
self.locationManager.allowsBackgroundLocationUpdates = true
self.locationManager.pausesLocationUpdatesAutomatically = false
开始位置更新(当用户进入 Ibeacon 区域时):
func beaconManager(_ manager: KTKBeaconManager, didEnter region:
KTKBeaconRegion) {
self.locationManager.startUpdatingLocation()
}
最后,在 didUpdate 位置,我调用了一个 Web 服务:
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
//Call web service using alamofire
}
我寻求您的帮助,以了解我是否为我想要执行的目的正确执行了设置,以及任何让我知道为什么操作系统会终止我的进程以获取位置更新的线索