我在iOS8中使用位置服务。
设置为kCLLocationAccuracyBest
,startMonitoringSignificantLocationChanges
在后台重新启动,startUpdatingLocation
为准确。
当我设置pausesLocationUpdatesAutomatically = YES
时,位置服务会暂停并按预期恢复。但是,以下对didUpdateLocations:
的调用只包含一个位置。
我希望在交付暂停时收到操作系统收到的一堆位置。我在这里错过了什么吗?它与deferredLocationUpdatesAvailable
有什么关系吗?
这篇answer讨论了关于Apple Dev Forum的帖子,但在搜索pausesLocationUpdatesAutomatically
时我什么都没得到。
请注意:此问题与调用requestAlwaysAuthorization
或在info.plist
中设置提示无关。
答案 0 :(得分:4)
继Quentin Hayot之后的答案......
pausesLocationUpdatesAutomatically
州的文档:
允许位置管理器暂停更新可以延长目标设备的电池寿命,而不会牺牲位置数据。
极具误导性。
它的真正含义是when location manager pauses it will sacrifice location data: the app does not get and never will get location updates until the location manager resumes
。
应该说明已暂停位置更新与延迟位置更新完全不同。
为了延长电池续航时间,应用应拨打allowDeferredLocationUpdatesUntilTraveled:timeout:
,这会提供所有位置更新,同时推迟到locationManager:didUpdateLocations:
。
locationManager:didUpdateLocations:
州的文档:
如果延迟更新或者在交付之前多个位置已到达,则阵列可能包含其他条目。
这是相当清楚的,但它可以说它与pausesLocationUpdatesAutomatically
没有任何关系,也不应该与它混淆。
答案 1 :(得分:2)
暂停位置更新后,系统会认为您暂时不需要该位置。恢复它只会给你当前的位置 这是正常行为。