CLActivityType 值之间的差异 - iOS SDK
Posted
技术标签:
【中文标题】CLActivityType 值之间的差异 - iOS SDK【英文标题】:Difference between CLActivityType values - iOS SDK 【发布时间】:2016-01-03 02:51:43 【问题描述】:这些值有什么区别:
CLActivityTypeAutomotiveNavigation,
CLActivityTypeFitness,
CLActivityTypeOtherNavigation,
当分配给CLLocationManager
的activityType
属性时?
文档建议我应该根据我使用 CLLocationManager 的目的来使用它们,但我没有给出关于确定停止位置更新的算法的差异的提示。
引用自文档:
CLActivityTypeAutomotiveNavigation
[...] 此活动可能会导致位置更新 仅当车辆长时间不移动时才暂停。
CLActivityTypeFitness
[...]此活动可能会导致位置更新 仅当用户没有移动很长的距离时才暂停 一段时间。
CLActivityTypeOtherNavigation
仅当车辆在一段时间内没有移动很长的距离时,此活动可能会导致位置更新暂停。
我真的看不出这些描述之间的区别。
文档来源:
https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/c/econst/CLActivityTypeOther
【问题讨论】:
【参考方案1】:似乎activityType
仅在监控位置时影响电池性能。特别是当它暂停轮询位置时。
会暂停轮询
AutomotiveNavigation
- 很久没有完全移动了。
OtherNavigation
(例如船/火车)- 很长时间没有移动很多。
Fitness
- 在较短的时间内没有太大的移动。
Other
- 大概不会停止轮询。
原因
对于船只或火车,它们可能已经停止,但您仍可能在其中四处走动,因此您并不真正关心这些小更新。
为了健身,您可能已经停止了跑步,但您仍在屋内四处走动……您并不想一直消耗电池电量。
其他说明
pausesLocationUpdatesAutomatically 的文档进一步建议activityType
仅确定是否应自动暂停位置更新。
您可以通过为 activityType 属性分配一个值来帮助确定何时暂停位置更新。
【讨论】:
对我来说还是不太清楚。例如,当我使用 AutomotiveNavigation 时,位置会在停止移动一段时间后停止更新。那么我再次移动后它会恢复更新吗?【参考方案2】:activityType
不仅会影响 Robert 的回答和 Apple 官方文档中指定的电池寿命,还可能会影响返回的坐标在某些条件下“捕捉”到最近道路的方式。
简而言之,如果您没有使用“其他导航”类型的活动,并且位置变化很快(= 您在车辆上的速度足够快),并且您的手机能够通过某种方式获取所需的信息互联网或本地缓存,经理报告的位置将不准确,因为它们会被“捕捉”到最近的道路。
自 iOS 6 以来的所有 iOS 版本都报告了此问题。如果在整个系统上运行的位置管理器的任何实例设置了活动,则似乎也会出现此问题不是“其他导航”的类型:请注意,该属性的默认值为“其他”,与“其他导航”不同。
一些参考资料:
关于 *** 的另一篇文章:Control iOS gps input 一篇博文:http://regex.info/blog/2016-01-19/2666 一个没有答案的openradar问题:https://openradar.appspot.com/radar?id=6056041628303360 还有一个:http://openradar.appspot.com/radar?id=2245401【讨论】:
以上是关于CLActivityType 值之间的差异 - iOS SDK的主要内容,如果未能解决你的问题,请参考以下文章