我正在写(在Swift中)需要位置更新(包括在后台模式下)的iOS 9应用程序。问题是我只能在前台获取位置更新。我想我已经正确地做了一切:ios 9应用程序不在后台报告位置
在info.plist中:
指定NSLocationAlwaysUsageDescription的值。
为NSLocationUsageDescription指定了一个值。
为NSLocationWhenInUseUsageDescription指定了一个值。
包含UIBackgroundModes中的“位置”。
包括在UIRequiredDeviceCapabilities
开始外景经理 “GPS” 和 “定位服务”,如下所示:
let locationManager = CLLocationManager() locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters locationManager.distanceFilter = 250.0 locationManager.allowsBackgroundLocationUpdates = true locationManager.startUpdatingLocation()
我也验证了 locationManager.pausesLocationUpdatesAutomatically是假的。
我得到没有位置更新,而应用程序是不是在前台。我唯一一次获得位置更新的方式是,如果我将应用程序放到前台,甚至不是所有时间。
任何想法发生了什么问题?或者我的期望不正确?
我看到你将距离过滤器设置为250.你尝试了一个更小的值/你走得够远吗? – Raptor
kCLLocationAccuracyHundredMeters的定位精度不会使用GPS,所以您可能需要移动一个公平的距离才能获得任何更新;可能在500-600米左右。你在哪里分配你的位置经理?它是你的AppDelegate的一个属性吗?如果你不需要快速更新或精确的位置,你可能会更好使用显着的位置变化监测 – Paulw11
即使驾驶10-30英里后,我看到绝对没有位置更新。更新仅在我将应用程序放到前台时才会发生。 –