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 17 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
解读Vue组件注册方式
May 15 Vue.js
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
ant design vue的form表单取值方法
Jun 01 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 strnatcmp()函数的用法总结
2013/11/27 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
php单一接口的实现方法
2015/06/20 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
关闭时刷新父窗口两种方法
2014/05/07 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
python万年历实现代码 含运行结果
2017/05/20 Python
对python中的logger模块全面讲解
2018/04/28 Python
pygame实现打字游戏
2021/02/19 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
this关键字的作用
2016/01/30 面试题
应届毕业生个人求职信范文
2014/01/29 职场文书
优秀干部获奖感言
2014/01/31 职场文书
团日活动策划书
2014/02/01 职场文书
运动会入场词100字
2014/02/06 职场文书
基层党员公开承诺书
2014/05/29 职场文书
创文明城市标语
2014/06/16 职场文书
python实现三次密码验证的示例
2021/04/29 Python
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android