CLActivityType值之间的差异 - iOS SDK

Pau*_*ski 9 location cllocationmanager ios

这些值之间有什么区别:

CLActivityTypeAutomotiveNavigation,
CLActivityTypeFitness,
CLActivityTypeOtherNavigation,
Run Code Online (Sandbox Code Playgroud)

当分配给?的activityType财产CLLocationManager

文档建议我应该根据我使用CLLocationManager的目的使用它们,但是我没有提供关于确定暂停位置更新的算法差异的提示.

从文档引用:

CLActivityTypeAutomotiveNavigation

[...]此活动可能会导致仅在车辆长时间不移动时暂停位置更新.

CLActivityTypeFitness

[...]此活动可能会导致仅在用户未在一段时间内移动较长距离时暂停位置更新.

CLActivityTypeOtherNavigation

此活动可能仅在车辆在一段时间内没有移动很长的距离时才会暂停位置更新.

我真的看不出这些描述之间的区别.

文档来源:

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/c/econst/CLActivityTypeOther

Mat*_*cci 6

这不仅会activityType影响罗伯特的回答和苹果官方文档中指定的电池寿命,还可能会影响在某些条件下返回的坐标“捕捉”到最近道路的方式。

简而言之,如果您没有使用活动类型“其他导航”,并且位置变化很快(=您在足够快的车辆上),并且您的手机能够以某种方式通过互联网或互联网获取所需的信息。本地缓存,管理器报告的位置将不准确,因为它们将“捕捉”到最近的道路。

自 iOS 6 以来,所有版本的 iOS 均报告了此问题。如果在整个系统上运行的位置管理器的任何实例设置了非“其他导航”的活动类型,则似乎也会出现此问题:该属性的默认值是“其他”,这与“其他导航”不同。

一些参考:


Rob*_*ert 5

似乎activityType仅在监视位置时会影响电池性能。特别是当它暂停轮询位置时。

将在以下时间暂停轮询

AutomotiveNavigation-不动在很长一段时间。

OtherNavigation(如船/火车) -不移动太多在很长一段时间。

Fitness -在较短的时间内没有移动太多。

Other -大概不会停止轮询。

原因是

  • 对于船只或火车,它们可能已经停下来了,但是您仍然可以在它们里面走来走去,因此您实际上并不关心这些小的更新。

  • 为了健身,您可能已经停止跑步了,但是您仍然在房子里四处走动...您真的不想一直消耗电池电量。

其他注意事项

pausesLocationUpdatesAutomatically的文档进一步建议activityType由其确定是否应自动暂停位置更新。

通过为activityType属性分配值,可以帮助确定何时暂停位置更新。