无法在 iOS 11 上获取后台位置更新
Posted
技术标签:
【中文标题】无法在 iOS 11 上获取后台位置更新【英文标题】:Can't get background location update on iOS 11 【发布时间】:2017-10-11 19:31:41 【问题描述】:我在 .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) ios 11.0.2
【问题讨论】:
【参考方案1】:你可能遗漏了两件事:
-
在
CLLocationManager
对象上将allowsBackgroundLocationUpdates
设置为YES
。见Apple Documentation
在 Info.plist 文件中启用“位置”作为背景模式。见Apple Documentation
【讨论】:
以上是关于无法在 iOS 11 上获取后台位置更新的主要内容,如果未能解决你的问题,请参考以下文章
即使应用程序在后台运行,如何使用 swift 在 ios 中获取位置更新
如何在 iOS 应用程序中每 n 分钟获取一次后台位置更新?