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中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
详解Vue的sync修饰符
May 15 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
vue实现列表拖拽排序的示例代码
Apr 08 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中die(),exit(),return的区别
2013/06/20 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
php实现的日历程序
2015/06/18 PHP
php抽象类用法实例分析
2015/07/07 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
js 上传图片预览问题
2010/12/06 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
javascript数组去重小结
2016/03/07 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
python避免死锁方法实例分析
2015/06/04 Python
python友情链接检查方法
2015/07/08 Python
深入浅析Python字符编码
2015/11/12 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
校本教研工作方案
2014/01/14 职场文书
挂科检讨书范文
2014/02/20 职场文书
大学学风建设方案
2014/05/04 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
Go语言安装并操作redis的go-redis库
2022/04/14 Golang