吐血修复 | IOS重力感应失效,DeviceMotion及DeviceOrientation事件不触发
点击上方收藏,“设为星标”
加“星标★”,你想看的每天都有
项目中有摇一摇功能,但是发现:
window.DeviceMotionEvent 是有定义的,但就是不触发 devicemotion 事件。
导致了手机无法使用重力感应功能,代码如下:
经过查阅后知晓,要想使用重力感应,必须满足下面两个条件:
- 重力感应需要使用https协议,http下不工作
- 在IOS13+系统,苹果为了手机的安全性,导致重力感应需要用户主动进行触发后才可以正常使用
这就涉及到苹果陀螺仪的授权,授权代码如下:
- 苹果授权时候,会弹出comfirm弹窗,确认是否授权重力感应,暂时有三个返回值。
- 这里需要注意,如果用户取消了授权,将在短时间内无法再次授权使用,因此可以在授权前进行提示,提高用户体验性
- 目前确认主动触发的事件可以是click,touch等
在这里分享一个前端插件库:orienter.js
该插件将重力感应的事件进行了兼容封装,使得开发者更好更方便的调用重力感应。使用方式如下:
而自从IOS升级13+系统后,你要区分手机系统,进行不同的操作了。
小F自己在项目中进行了二次简单的兼容封装,大概流程如下,可做参考:
手机线上体验:
https://hd.693975.com/huodong/orienter
orienter这款插件挺好用,但是普及不高,导致网上并没有可用的cdn链接,需要自己下载后上传到服务器:
链接:https://pan.baidu.com/s/1lu2Scuw62yS6flhClo5y1Q
提取码:9t76