我的应用程序高度基于CLLocation
时间戳。我发现CLLocationManager
以~1s间隔更新位置。这对我的应用来说还不够。是否可以配置CLLocationManager
以更短的间隔更新位置,还是应该寻找其他方法(定时器+手动询问位置)?
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.allowsBackgroundLocationUpdates = true
locationManager.distanceFilter = kCLDistanceFilterNone
if #available(iOS 11.0, *) {
locationManager.showsBackgroundLocationIndicator = true
}
locationManager.startUpdatingLocation()
计时器+ requestLocation()
无效。
答案 0 :(得分:4)
您无法更改更新频率。但你可能不需要那样做。您可以使用CMMotionManager
框架计算手机排名,然后使用CLLocationManager
框架获取用户位置。
使用accelerometer
计算设备移动。从didAccelerate method
开始,您可以获得移动的x
,y
和z
,因此,通过将其应用于检测到的用户位置,您可以计算新的设备位置。
希望这会有所帮助,祝你好运。
答案 1 :(得分:1)
您无法更改位置更新的频率。只有在超出distanceFilter的值时,才会更新位置服务。 如果要强制进行位置更新,请尝试更改distanceFilter的值(以米为单位,双精度数据类型)。您可以使用kCLDistanceFilterNone作为distanceFilter的值。 试试:
locationManager.distanceFilter = kCLDistanceFilterNone
如果位置或每次移动发生任何微小变化,此代码将强制位置服务通知您。