ios13陀螺仪DeviceOrientationEvent需要申请⽤户权限js
有些代码跑着跑着就报错了,有些陀螺仪⽤着⽤着就不能⽤了。
⽬前时间是2020.4.4,发现  ios 13系统调⽤陀螺仪需要申请⽤户权限(这应该是个趋势,后⾯安卓应该陆续跟进)。具体实现来看下:
1.申请权限的⽅法是:questPermission,返回值是个promise,promise中会返回⽤户的允许(“granted”)/拒绝(”denied“)状态;可能还有第三个值”prompt“,⽬前不知道怎么会返回这第三个值;
  2.1  先说下 ”⾸次“的含义。指的是⽤户完全退出app(⽽不是 app切换到后台运⾏)后再次打开为⾸次。⽤户在⾸次进⼊后如果页⾯需要陀螺仪权限,需要⽤户交互才能触发requestPermission⽅法。之后系统会记录⽤户对本⽹址的授权信息,不退出app的情况下就不需要重复申请本权限了,本记录信息会⼀直保留直到完全退出app。
2.2 ⾮⾸次调⽤的话则不需要⽤户交互触发,我们在页⾯初始化时调⽤来拿到⽤户的授权状态进⽽做⼀些处理。
  2.3  如果⾸次调⽤不是由⽤户触发,⽐如页⾯初始化时调⽤,则此⽅法的promis会返回reject状态。
3.现在可以写⼀下⼤概逻辑流程。
4.需要注意,使⽤陀螺仪需要https协议,且⼀经⽤户授权/禁⽌,系统会保留⽤户授权状态,不再重复系统弹框,直到完全退出app。
5.上⼀个官⽅⽂档,.
6.贴个代码
questPermission()
.then(state => {
if(state === "granted"){//允许
<("⽤户允许",state)
}else if(state === "denied"){//拒绝
<("⽤户拒绝",state)
}else if(state === "prompt"){
<("⽤户⼲了啥",state)ios13测试版
}