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+iview分页组件的封装
Nov 17 Vue.js
浅析VUE防抖与节流
Nov 24 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
一篇文章学会Vue中间件管道
Jun 20 Vue.js
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 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
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
采用call方式实现js继承
2014/05/20 Javascript
javascript基本类型详解
2014/11/28 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现的简单抽奖系统实例
2015/05/22 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
Python如何测试stdout输出
2020/08/10 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
四风问题自查报告剖析材料
2014/02/08 职场文书
质量负责人任命书
2014/06/06 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书