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 相关文章推荐
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
Vue中computed和watch有哪些区别
Dec 19 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
Vue仿百度搜索功能
Dec 28 Vue.js
如何在vue 中使用柱状图 并自修改配置
Jan 21 Vue.js
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
深入理解Vue的数据响应式
May 15 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
Vue+TypeScript中处理computed方式
Apr 02 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
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
Django中几种重定向方法
2015/04/28 Python
Python实现身份证号码解析
2015/09/01 Python
python的unittest测试类代码实例
2017/12/07 Python
python的exec、eval使用分析
2017/12/11 Python
Python的argparse库使用详解
2018/10/09 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python groupby 函数 as_index详解
2019/12/16 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
给分销商的致歉信
2014/01/14 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
七年级数学教学反思
2016/02/17 职场文书
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers