无法在iOS 11上获取后台位置更新

时间:2017-10-11 19:31:41

标签: ios cllocationmanager ios11 xcode9 cllocation

我已在.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 个答案:

答案 0 :(得分:3)

你可能会遗漏两件事:

  1. allowsBackgroundLocationUpdates对象上将YES设置为CLLocationManager。请参阅Apple Documentation
  2. 在Info.plist文件中启用“location”作为后台模式。请参阅Apple Documentation