Core Motion 102错误是什么意思?

Ort*_*ntz 5 iphone ios core-motion

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

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:motionQueue withHandler:motionHandler]
Run Code Online (Sandbox Code Playgroud)

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

Error Domain=CMErrorDomain Code=102 "The operation couldn’t be completed. (CMErrorDomain error 102.)
Run Code Online (Sandbox Code Playgroud)

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

Ort*_*ntz 7

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

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

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

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

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