H5页面实现摇一摇性能

最近公司做了一个微信摇一摇领红包的流动,趁着刚上线有点空余工夫,做一下摇一摇流动总结,记录一下做摇一摇流动过程中遇到的问题,旨在为了不便本人下次做相似流动的时候查阅以及让没做过摇一摇流动的小伙伴们少踩坑吧

<!-- > 留神:因为我的集体博客域名协定是http的,所以苹果手机ios12以上没有成果 -->

点这里查看摇一摇demo成果

用手机扫描二维码查看成果:

摇一摇要实现的性能细节

1. 如何实现监听手机设施摇一摇性能

应用H5原生API devicemotion事件监听设施摇摆频率

具体代码如下:

//静止事件监听if (window.DeviceMotionEvent) {    window.addEventListener(        "devicemotion",        deviceMotionHandler,        false    );} else {    alert("该浏览器不反对摇一摇性能");}
留神:该事件在ios12以上非https协定下会生效,安卓手机不会,所以在ios手机上测试必须要在https协定的域名环境测试

2. 如何判断手机设施是不是在摇一摇

具体代码如下:

// 获取加速度信息// 通过监听上一步获取到的x, y, z 值在肯定工夫范畴内的变化率,进行设施是否有进行晃动的判断。// 而为了避免失常挪动的误判,须要给该变化率设置一个适合的临界值。let SHAKETHRESHOLD = 4000;let lastUpdate = 0;let x,    y,    z,    lastX = 0,    lastY = 0,    lastZ = 0;function deviceMotionHandler(eventData) {    let acceleration = eventData.accelerationIncludingGravity;    let curTime = new Date().getTime();    if (curTime - lastUpdate > 50) {        let diffTime = curTime - lastUpdate;        lastUpdate = curTime;        x = acceleration.x;        y = acceleration.y;        z = acceleration.z;        let speed = (Math.abs(x + y + z - lastX - lastY - lastZ) / diffTime) * 10000;        if (speed > SHAKETHRESHOLD) {                setTimeout(() => {                    alert("祝贺你,摇到丑陋妹纸一枚!"); // Do something                }, 1000);            }        }        lastX = x;        lastY = y;        lastZ = z;    }}

3. 如何实现手机振动性能

navigator.vibrate() 该办法能够调用手机设施的振动性能

留神:1、ios手机上浏览器不反对该办法 2、该办法须要用户触发某种操作能力调用, 不能一加载完页面就调用振动性能
// 调用手机振动性能useVibrateAction() {    navigator.vibrate =        navigator.vibrate ||        navigator.webkitVibrate ||        navigator.mozVibrate ||        navigator.msVibrate;    if (navigator.vibrate) {        console.log("手机振动");        navigator.vibrate(1000); // 振动工夫毫秒数    } else {        console.log("该浏览器不反对振动性能");    }}

本文由mdnice多平台公布