无法在 iOS 11 上获取后台位置更新
Can't get background location update on iOS 11
我已经在 .plist 中添加了所有 3 个可能的键:
隐私 - 位置始终和使用时使用说明
隐私 - 使用时的位置使用说明
隐私 - 位置使用说明
我的代码是:
private lazy var locationManager: CLLocationManager = {
let manager = CLLocationManager()
manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
manager.delegate = self
manager.requestAlwaysAuthorization()
return manager
}()
@IBAction func enabledLocationUpdate(_ sender: UISwitch) {
if sender.isOn {
locationManager.startUpdatingLocation()
} else {
locationManager.stopUpdatingLocation()
}
}
extension LocationViewController: CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let mostRecentLocation = locations.last else {
return
}
NSLog("New location is \(mostRecentLocation)")
}
当应用程序在前台时我可以看到位置更新,但是当我按下主页按钮时 - 位置更新停止。
我做错了什么?
Xcode 版本 9.0 (9A235)
iOS11.0.2
您可能遗漏了两件事:
- 在
CLLocationManager
对象上将 allowsBackgroundLocationUpdates
设置为 YES
。参见 Apple Documentation
- 在您的 Info.plist 文件中启用 "location" 作为背景模式。参见 Apple Documentation
我已经在 .plist 中添加了所有 3 个可能的键:
隐私 - 位置始终和使用时使用说明
隐私 - 使用时的位置使用说明
隐私 - 位置使用说明
我的代码是:
private lazy var locationManager: CLLocationManager = {
let manager = CLLocationManager()
manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
manager.delegate = self
manager.requestAlwaysAuthorization()
return manager
}()
@IBAction func enabledLocationUpdate(_ sender: UISwitch) {
if sender.isOn {
locationManager.startUpdatingLocation()
} else {
locationManager.stopUpdatingLocation()
}
}
extension LocationViewController: CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let mostRecentLocation = locations.last else {
return
}
NSLog("New location is \(mostRecentLocation)")
}
当应用程序在前台时我可以看到位置更新,但是当我按下主页按钮时 - 位置更新停止。 我做错了什么?
Xcode 版本 9.0 (9A235) iOS11.0.2
您可能遗漏了两件事:
- 在
CLLocationManager
对象上将allowsBackgroundLocationUpdates
设置为YES
。参见 Apple Documentation - 在您的 Info.plist 文件中启用 "location" 作为背景模式。参见 Apple Documentation