Phone 授予对传感器的访问权限,但浏览器不支持类型 'Gyroscope'?
Phone grants access to sensor but browser doesn't support type 'Gyroscope'?
所以我正在使用 JavaScript 制作一个网络应用程序,在我的 phone 权限 API 调用中我说我是“g运行ted”访问我的陀螺仪,但是当我尝试调用 new Gyroscope({frequency: 60})
时,我发现一个错误,提示我的浏览器不支持它。我是 运行 我的代码,通过 nodejs
设置使用 vite
来提供我的内容。
navigator.permissions.query({ name: 'gyroscope' })
.then(result => {
if(result.state === 'granted') { // <-- this returns true
try {
this.gyroscope = new Gyroscope({frequency: 60});
this.gyroscope.addEventListener('reading', e => {
console.log(e);
});
this.gyroscope.start();
} catch(error) {
// Handle construction errors.
if (error.name === 'SecurityError') {
// See the note above about feature policy.
alert('Sensor construction was blocked by a feature policy.');
} else if (error.name === 'ReferenceError') {
alert('Sensor is not supported by the User Agent.');
} else {
alert(error);
}
}
} else {
alert('No gyroscope or denied, computer assumed, falling back to keyboard.');
// fallback setup here
}
});
触发的错误就是这个Sensor is not supported by the User Agent.
我决定进一步调查,我偶然发现了这个充满传感器测试的存储库:https://intel.github.io/generic-sensor-demos/sensor-tester/build/bundled/accelerometer 当我 运行 我的 phone 上的那些时,我通过了所有测试。
那么关于使用传感器 API 我在这里遗漏了什么?我试图查看上面存储库中的代码,但我终其一生都无法弄清楚它们是如何工作的,而我却做不到。
对于以后遇到此问题的任何人来说,问题是传感器 API 需要 SSL 才能为 一切 工作。因此,为了解决我的问题,我继续使用 mkcert 制作一个有效的 key.pem
和 cert.pem
文件以用于我的本地网络服务器设置。
这也是使 SSL 适用于任何需要 SSL 的本地主机 Web 开发设置的方法。
所以我正在使用 JavaScript 制作一个网络应用程序,在我的 phone 权限 API 调用中我说我是“g运行ted”访问我的陀螺仪,但是当我尝试调用 new Gyroscope({frequency: 60})
时,我发现一个错误,提示我的浏览器不支持它。我是 运行 我的代码,通过 nodejs
设置使用 vite
来提供我的内容。
navigator.permissions.query({ name: 'gyroscope' })
.then(result => {
if(result.state === 'granted') { // <-- this returns true
try {
this.gyroscope = new Gyroscope({frequency: 60});
this.gyroscope.addEventListener('reading', e => {
console.log(e);
});
this.gyroscope.start();
} catch(error) {
// Handle construction errors.
if (error.name === 'SecurityError') {
// See the note above about feature policy.
alert('Sensor construction was blocked by a feature policy.');
} else if (error.name === 'ReferenceError') {
alert('Sensor is not supported by the User Agent.');
} else {
alert(error);
}
}
} else {
alert('No gyroscope or denied, computer assumed, falling back to keyboard.');
// fallback setup here
}
});
触发的错误就是这个Sensor is not supported by the User Agent.
我决定进一步调查,我偶然发现了这个充满传感器测试的存储库:https://intel.github.io/generic-sensor-demos/sensor-tester/build/bundled/accelerometer 当我 运行 我的 phone 上的那些时,我通过了所有测试。
那么关于使用传感器 API 我在这里遗漏了什么?我试图查看上面存储库中的代码,但我终其一生都无法弄清楚它们是如何工作的,而我却做不到。
对于以后遇到此问题的任何人来说,问题是传感器 API 需要 SSL 才能为 一切 工作。因此,为了解决我的问题,我继续使用 mkcert 制作一个有效的 key.pem
和 cert.pem
文件以用于我的本地网络服务器设置。
这也是使 SSL 适用于任何需要 SSL 的本地主机 Web 开发设置的方法。