ios 9 app不在后台报告位置

时间:2016-05-18 03:04:42

标签: ios swift core-location

我正在编写(在Swift中)一个需要位置更新的iOS 9应用程序,包括后台模式。问题是我只在前台获得位置更新。我想我已经做好了一切:

在info.plist中:

  • 为NSLocationAlwaysUsageDescription指定了一个值。

  • 为NSLocationUsageDescription指定了一个值。

  • 为NSLocationWhenInUseUsageDescription指定一个值。

  • 包含"位置"在UIBackgroundModes。

  • 包括" gps"和"位置服务"在UIRequiredDeviceCapabilities

  • 按如下方式启动位置管理器:

    let locationManager = CLLocationManager()
    locationManager.desiredAccuracy =
        kCLLocationAccuracyHundredMeters
    locationManager.distanceFilter = 250.0
    locationManager.allowsBackgroundLocationUpdates = true
    locationManager.startUpdatingLocation()
    
  • 我也证实了这一点 locationManager.pausesLocationUpdatesAutomatically为false。

当应用不在前台时,我得到没有位置更新。我唯一一次获得位置更新的方法是将应用程序带到前台,即便如此,也不是所有时间。

知道出了什么问题吗?或者我的期望不正确?

1 个答案:

答案 0 :(得分:0)

你如何将应用程序发送到后台?如果您滑动以杀死,那么您的应用将无法自动重新启动以接收位置事件。我在你的代码中没有看到它,你是否打电话给requestAlwaysAuthorization?您可能还想实现LocationManager:didFailWithError,看看是否能给您带来任何想法。