Vue实现摇一摇功能(兼容ios13.3以上)


Posted in Vue.js onJanuary 26, 2021

最近做了个摇一摇类似的功能,使用的是shake.js,但在ios13.3之前的版本中可以触发摇一摇,之后的版本需要兼容,需要制作一个让用户能手动点击的弹框,才能使用户授权动作与方向的权限。(需使用https协议)

Vue实现摇一摇功能(兼容ios13.3以上)

<van-popup v-model="isTip" class="popInfo" :close-on-click-overlay="false">
 <div class="mainBody">
 <h3 class="systemTip">温馨提示</h3>
 <div class="confirm">
 由于ios系统需要手动获取访问动作与方向的权限,为保障游戏的正常进行,请在访问提示中点击允许。
 </div>
 </div>
 <button class="bottomButton" @click="handleInit">
 知道了
 </button>
</van-popup>

shake.js

//引入shake.js
created(){
 this.initShake()
 const isAction = JSON.parse(localStorage.getItem('getAction'))
 var ua = navigator.userAgent.toLowerCase();
 if(ua.indexOf("like mac os x") > 0){
 var reg = /os [\d._]*/gi ;
 var verinfo = ua.match(reg) ;
 var version = (verinfo+"").replace(/[^0-9|_.]/ig,"").replace(/_/ig,".");
 if (parseFloat(version) >= 13.3 && !isAction){
 localStorage.setItem("getAction",true)
 this.isTip = true
 }
 }
},
methods:{
 initShake(){
 this.myShakeEvent = new Shake({
 threshold: 15, // 摇动阈值
 timeout: 1000 // 事件发生频率,是可选值
 });
 this.myShakeEvent.start();
 window.addEventListener('shake', xx);
 },
 handleInit(){
 this.isTip = false
 this.ios13granted()
 },
 ios13granted() {
 if (typeof DeviceMotionEvent.requestPermission === 'function') {
 DeviceMotionEvent.requestPermission().then(permissionState => {
 if (permissionState === 'granted') {
 this.initShake() //摇一摇
 } else if(permissionState === 'denied'){// 打开的链接不是https开头
 alert("当前IOS系统拒绝访问动作与方向。请退出微信,重新进入活动页面获取权限。或直接点击抽签桶参与活动")
 }
 }).catch((error) => {
 alert("请求设备方向或动作访问需要用户手势来提示")
 })
 } else {
 // 处理常规的非iOS 13+设备
 alert("处理常规的非iOS 13+设备")
 }
 },
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
详解Vue的mixin策略
Nov 19 Vue.js
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
vue实现按钮切换图片
Jan 20 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
vue2的 router在使用过程中遇到的一些问题
Apr 13 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 #Vue.js
Vue使用Ref跨层级获取组件的步骤
Jan 25 #Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 #Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 #Vue.js
vue 计算属性和侦听器的使用小结
Jan 25 #Vue.js
vue keep-alive的简单总结
Jan 25 #Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 #Vue.js
You might like
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
python实现的系统实用log类实例
2015/06/30 Python
python异常触发及自定义异常类解析
2019/08/06 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
.net面试题
2015/12/22 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
四查四看整改措施
2014/09/19 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
承诺函范文
2015/01/21 职场文书
违纪检讨书范文
2015/01/27 职场文书
开学典礼观后感
2015/06/15 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
python_tkinter弹出对话框创建
2022/03/20 Python