我正在编写(在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。
当应用不在前台时,我得到没有位置更新。我唯一一次获得位置更新的方法是将应用程序带到前台,即便如此,也不是所有时间。
知道出了什么问题吗?或者我的期望不正确?
答案 0 :(得分:0)
你如何将应用程序发送到后台?如果您滑动以杀死,那么您的应用将无法自动重新启动以接收位置事件。我在你的代码中没有看到它,你是否打电话给requestAlwaysAuthorization?您可能还想实现LocationManager:didFailWithError,看看是否能给您带来任何想法。