iOS 13.4 上的 deviceMotion rotationRate 为空

deviceMotion rotationRate is null on iOS 13.4

我从 iOS 11 开始就使用 devicemotion 事件访问 Safari 上的陀螺仪。

历史:

问题:

在 iOS 13.4 上,我这边没有代码更改,在我所有使用此功能的项目中,即使用户同意陀螺仪访问,rotationRate 始终为 null。

我在 Apple 上搜索了官方答案,但没有找到。 它看起来像一个错误,但也许我这边的实现是错误的?

很高兴知道我的代码:

首先,我监听 devicemotion 事件(rotationRate 为 null),当界面准备就绪时,用户单击按钮,陀螺仪访问请求和 rotationRate 有值。

有什么想法吗?

这似乎是 iOS 13.4 中的错误,因为即使 webxr polyfill 也无法检测到设备具有哪些功能,因为它们具有(第 3770 行):

if (this.isWithoutDeviceMotion) {
  window.addEventListener('deviceorientation', this.onDeviceOrientationCallback_);
} else {
  window.addEventListener('devicemotion', this.onDeviceMotionCallback_);
}

条件计算结果为 false,因此使用 devicemotion,然后 rotationRateaccelerationIncludingGravity 均为 null。

所以我认为从现在开始的解决方法是监听 deviceorientation 事件而不是 devicemotion,即使提前请求了权限,无论如何这是强制性的。

对,同上,旋转数据为空。 但是 acceleration 和 accelerationIncludingGravity 不为空,你可以用它们代替。