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实现坐标拾取器功能示例
Nov 18 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
vue-router懒加载的3种方式汇总
Feb 28 Vue.js
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
Three.js基础学习教程
2017/11/16 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
python实现发送邮件功能代码
2017/12/14 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Python 如何提高元组的可读性
2019/08/26 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
python 生成器需注意的小问题
2020/09/29 Python
html5时钟实现代码
2010/10/22 HTML / CSS
企业新年寄语
2014/04/04 职场文书
销售团队激励口号
2014/06/06 职场文书
体育节口号
2014/06/19 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技