无法在 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 中获取位置更新

应用程序处于后台模式时如何在 iOS5 上获取用户位置?

如何在 iOS 应用程序中每 n 分钟获取一次后台位置更新?

0x8badf00d 在后台获取监听位置后崩溃

即使应用程序处于终止状态或被杀死,如何在 iOS 中获取位置更新? [复制]

如何在ios中每n秒获取一次位置更新