Vue實(shí)現(xiàn)搖一搖功能(兼容ios13.3以上)
最近做了個(gè)搖一搖類似的功能,使用的是shake.js,但在ios13.3之前的版本中可以觸發(fā)搖一搖,之后的版本需要兼容,需要制作一個(gè)讓用戶能手動(dòng)點(diǎn)擊的彈框,才能使用戶授權(quán)動(dòng)作與方向的權(quán)限。(需使用https協(xié)議)

<van-popup v-model="isTip" class="popInfo" :close-on-click-overlay="false"> <div class="mainBody"> <h3 class="systemTip">溫馨提示</h3> <div class="confirm"> 由于ios系統(tǒng)需要手動(dòng)獲取訪問動(dòng)作與方向的權(quán)限,為保障游戲的正常進(jìn)行,請(qǐng)?jiān)谠L問提示中點(diǎn)擊允許。 </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, // 搖動(dòng)閾值
timeout: 1000 // 事件發(fā)生頻率,是可選值
});
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("當(dāng)前IOS系統(tǒng)拒絕訪問動(dòng)作與方向。請(qǐng)退出微信,重新進(jìn)入活動(dòng)頁面獲取權(quán)限?;蛑苯狱c(diǎn)擊抽簽桶參與活動(dòng)")
}
}).catch((error) => {
alert("請(qǐng)求設(shè)備方向或動(dòng)作訪問需要用戶手勢(shì)來提示")
})
} else {
// 處理常規(guī)的非iOS 13+設(shè)備
alert("處理常規(guī)的非iOS 13+設(shè)備")
}
},
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue數(shù)據(jù)操作之點(diǎn)擊事件實(shí)現(xiàn)num加減功能示例
這篇文章主要介紹了vue數(shù)據(jù)操作之點(diǎn)擊事件實(shí)現(xiàn)num加減功能,結(jié)合實(shí)例形式分析了vue.js事件響應(yīng)及數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
基于Electron24+Vite4+Vue3搭建桌面端應(yīng)用實(shí)戰(zhàn)教程
這篇文章主要介紹了基于Electron24+Vite4+Vue3搭建桌面端應(yīng)用,這次給大家主要分享的是基于electron最新版本整合vite4.x構(gòu)建vue3桌面端應(yīng)用程序,需要的朋友可以參考下2023-05-05
vue?watch中如何獲取this.$refs.xxx節(jié)點(diǎn)
這篇文章主要介紹了vue?watch中獲取this.$refs.xxx節(jié)點(diǎn)的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue動(dòng)態(tài)組件實(shí)現(xiàn)異常處理方法
Vue3動(dòng)態(tài)組件怎么進(jìn)行異常處理?下面本篇文章帶大家聊聊Vue3 動(dòng)態(tài)組件異常處理的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02

