我正在尝试在.gravityAndHeading
配置中使用ARWorldTrackingConfiguration.worldAlignment
。但是,我一直收到这个错误:
设备方向错误:错误域= CMErrorDomain代码= 102"(null)" 2018-03-01 20:08:25.218445 + 0000 App [759:84092] [Session] Session(0x10ba12ce0):确实失败并出现错误:Error Domain = com.apple.arkit.error Code = 102" Required sensor失败&#34。 UserInfo = {NSLocalizedFailureReason =传感器未能提供所需的输入。,NSUnderlyingError = 0x1c0850740 {错误域= CMErrorDomain代码= 102"(null)"},NSLocalizedRecoverySuggestion =确保应用程序具有所需的隐私settings。,NSLocalizedDescription =必需的传感器失败。} 会话失败。更改worldAlignment属性。
文档说要确保Info.plist包含相关的隐私要求 - 我已经添加了相机,位置,动作等但无济于事。
任何人都有同样的经历/解决方案吗?
我正在使用此特定设置,因为我需要将节点映射到物理世界,而不仅仅是用户的相对位置。
答案 0 :(得分:2)
您是否已将这些密钥添加到info.plist
?
基于其他研究,例如What Does Error Code 102 Mean以下情况似乎适用于您的情况:
<强> CMErrorTrueNorthNotAvailable 强>
从上面的帖子中,一个StackOverFlow
用户似乎已通过更改其设备上的以下设置解决了该问题:
设置&gt;隐私&gt;位置服务&gt;系统服务&gt;指南针校准:
答案 1 :(得分:1)
除了以上@JoshRobbins的答案之外,我还有一个新iPhone,并注意到默认情况下它已关闭,因此应用程序崩溃了。最终用户不知道他必须进入设置并打开罗盘校准。以下绕过:
let configuration = ARWorldTrackingConfiguration()
func session(_ session: ARSession, didFailWithError error: Error) {
switch error.code {
case 102:
configuration.worldAlignment = .gravity
restartSession()
default:
configuration.worldAlignment = .gravityAndHeading
restartSession()
}
}
@objc func restartSession() {
self.sceneView.session.pause()
self.sceneView.session.run(configuration, options: [
.resetTracking,
.removeExistingAnchors])
}