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中defineProperty和Proxy的区别详解
Nov 30 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
Vue实现图书管理案例
Jan 20 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
Vue SPA 首屏优化方案
Feb 26 Vue.js
Vue全家桶入门基础教程
May 14 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
解读Vue组件注册方式
May 15 Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
PHP伪静态写法附代码
2008/06/20 PHP
php array_search() 函数使用
2010/04/13 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
自动最大化窗口的Javascript代码
2013/05/22 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
Python中有趣在__call__函数
2015/06/21 Python
Python中的id()函数指的什么
2017/10/17 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
浅析python redis的连接及相关操作
2019/11/07 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
公务员培训心得体会
2013/12/28 职场文书
通信研究生自荐信
2014/02/01 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
典型事迹材料范文
2014/12/29 职场文书
客户答谢会致辞
2015/07/30 职场文书
单位病假条范文
2015/08/17 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书