Core Motion 102错误是什么意思?

我使用Core Motion的传感器融合来获得朝北的运动更新:

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:motionQueue withHandler:motionHandler] 

在极少数情况下,只能在选定的客户设备(运行iOS 6.0.2的iPhone 4S)上重现我在motionHandler中收到此错误:

 Error Domain=CMErrorDomain Code=102 "The operation couldn't be completed. (CMErrorDomain error 102.) 

此外,似乎我之后没有获得任何有效的deviceMotion更新。 有谁知道这个错误102意味着什么? 我在文档中找不到任何内容。

正如Krishnabhadra正确指出的那样,此错误代码表示CMErrorTrueNorthNotAvailable 。 描述(“真正的北方在这个设备上不可用。这通常表明设备的位置尚不可用。”)遗憾的是没有给出任何提示如何解决问题所以我想描述我的发现当这个发生错误。

当使用CMAttitudeReferenceFrameXTrueNorthZVerticalCMAttitudeReferenceFrameXMagneticNorthZVertical可以)时,它发生在iOS 6.0+设备的一小部分(少数几个)中。 尽管有错误描述,但Core Location正常工作。 在受影响的设备上,错误在100%的情况下被触发,并完全阻止Core Motion更新。 -[CMMotionManager deviceMotion]始终返回nil

重置iOS系统设置可以解决问题。

我已经记录了rdar:// 12952327以及更多细节。

更新:如果在隐私/位置服务/系统服务部分禁用罗盘校准,则会发生此错误。

从文档

 typedef enum { CMErrorNULL = 100, CMErrorDeviceRequiresMovement, CMErrorTrueNorthNotAvailable } CMError; 

似乎错误102是CMErrorTrueNorthNotAvailable ,其描述是

CMErrorTrueNorthNotAvailable

关于导致此错误的原因似乎没有太多信息。 它可能是设备的任何硬件问题。

此外,请确保已启用此function。 启用此选项后,我在使用xTrueNorthZVertical时没有遇到102问题。

设置>隐私>位置服务>系统服务>指南针校准

iOS 11系统服务

102是CMErrorTrueNorthNotAvailable。 我想你的设备在确定北方向或某些方面存在问题。

我收到此错误,当我试图找到解决方案时,显然我的设备中的位置服务已关闭,一旦我打开,它就可以工作了。