最近做了个摇一摇类似的功能,使用的是shake.js,但在ios13.3之前的版本中可以触发摇一摇,之后的版本需要兼容,需要制作一个让用户能手动点击的弹框,才能使用户授权动作与方向的权限。(需使用https协议)
1
2
3
4
5
6
7
8
9
10
11
|
< 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
//引入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+设备" ) } }, } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/m0_48076809/article/details/113091396