5

我使用 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是什么意思吗?我在文档中找不到任何内容。

4

5 回答 5

7

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

它发生在一小部分(成千上万的少数)iOS 6.0+ 设备上使用CMAttitudeReferenceFrameXTrueNorthZVertical(没问题CMAttitudeReferenceFrameXMagneticNorthZVertical)。尽管有错误描述,Core Location 工作正常。在受影响的设备上,该错误会在 100% 的情况下触发并完全阻止 Core Motion 更新。-[CMMotionManager deviceMotion]总是返回nil

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

我已经记录了rdar://12952327并提供了更多详细信息。

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

于 2013-01-03T21:06:40.320 回答
3

文档

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

似乎错误 102 是CMErrorTrueNorthNotAvailable,它的描述是

CMErrorTrueNorthNotAvailable

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

于 2013-01-02T11:27:59.720 回答
2

另外,请确保已启用此功能。启用此选项后,我在使用 xTrueNorthZVertical 时不再遇到 102 问题。

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

iOS 11 系统服务

于 2018-01-10T17:03:40.737 回答
0

102 是 CMErrorTrueNorthNotAvailable。我猜您的设备在确定北方向或其他方面存在问题。

于 2013-01-02T11:27:46.780 回答
0

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

于 2014-12-23T07:01:49.530 回答