1.项目的地址不是以https开头的,改为https开头即可;
2.若改为https之后还是没有效果,那么要看一下你的移动端系统是否为IOS13+ 之前在IOS12.4的时候,使用shake.js这个封装的api还是有效果的,突然拿了一部IOS13+的手机测试了一下发现压根就没有触发shake.js里面封装的devicemotion事件,这个事件绑定的函数接收一个DeviceMotionEvent对象类型的参数描述发生的动作。 从iOS 12.2开始,苹果出于隐私问题决定,默认情况下,浏览器对设备运动和方向事件的访问权限处于关闭状态。现在,也许他们意识到这可能是一个错误,因此在iOS 13中,他们更改了权限请求行为,类似于请求相机权限的方式。
因此,在IOS13+的移动端中,需要在DeviceMotionEvent上调用requestPermission这个方法,该方法请求用户当前来源的权限以显示通知,然后根据用户的不同选择,触发不同的状态【granted(被授予),denied(被拒绝) 或者default(默认)】,并返回一个Promise对象。PS:requestPermission只能在用户手势(例如单击)上调用。相关代码为:
function onClick() { if (typeof DeviceMotionEvent.requestPermission === 'function') {
DeviceMotionEvent.requestPermission()
.then(permissionState => {
if (permissionState === 'granted') {
window.addEventListener('devicemotion', () => {});
}
})
.catch(console.error);
} else {
// handle regular non iOS 13+ devices
}
}