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 elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
Vue接口封装的完整步骤记录
May 14 Vue.js
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
Jun 09 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
vue封装数字翻牌器
Apr 20 Vue.js
Vue Element plus使用方法梳理
Dec 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
Python编程中的反模式实例分析
2014/12/08 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
企业安全生产月活动总结
2014/07/05 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
纪录片信仰观后感
2015/06/08 职场文书
会议简讯范文
2015/07/20 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
Python的property属性详细讲解
2022/04/11 Python
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python