我想在我的.gravityAndHeading
配置上使用ARWorldTrackingConfiguration.worldAlignment
。但是,我不断收到此错误:
设备方向错误:错误Domain = CMErrorDomain Code = 102“(null)”2018-03-01 20:08:25.218445 + 0000 App [759:84092] [Session] Session(0x10ba12ce0):确实失败并出现错误:Error Domain = com.apple.arkit.error Code = 102“所需传感器失败。” UserInfo = {NSLocalizedFailureReason =传感器未能提供所需的输入。,NSUnderlyingError = 0x1c0850740 {Error Domain = CMErrorDomain Code = 102“(null)”},NSLocalizedRecoverySuggestion =确保应用程序具有所需的隐私设置。,NSLocalizedDescription =必需传感器失败。}会话失败。更改worldAlignment属性。
文档说确保Info.plist包含相关的隐私要求 - 我添加了相机,位置,动作等但无济于事。
有没有经历过同样的人/制定出解决方案?
我正在使用这个特定的设置,因为我需要将节点映射到物理世界,而不仅仅是用户的相对位置。
你有没有把这些钥匙添加到你的info.plist
?
基于其他研究,例如What Does Error Code 102 Mean似乎以下内容可能适用于您的情况:
CMErrorTrueNorthNotAvailable
从上面的帖子中,一个StackOverFlow
用户似乎通过更改其设备上的以下设置解决了该问题:
设置>隐私>位置服务>系统服务>指南针校准:
除了@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])
}