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-cli 创建模板项目
Nov 19 Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
Vue实现图书管理小案例
Dec 03 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
vue-video-player 断点续播的实现
Feb 01 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
vue实现移动端div拖动效果
Mar 03 Vue.js
vue修饰符.capture和.self的区别
Apr 22 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多线程类及用法实例
2014/12/03 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
axios学习教程全攻略
2017/03/26 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
中间件分为哪几类
2012/03/14 面试题
高三政治教学反思
2014/02/06 职场文书
迎新晚会主持词
2014/03/24 职场文书
新春文艺演出主持词
2014/03/27 职场文书
贷款担保书范文
2014/05/13 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
高中信息技术教学反思
2016/02/16 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python