找回密码

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

发新帖

3322

积分

好友

主题
发表于 2020-5-24 21:53:34 | 查看: 1299| 回复: 0
有些代码跑着跑着就报错了,有些陀螺仪用着用着就不能用了。
目前时间是2020.4.4,发现  ios 13系统调用陀螺仪 需要申请用户权限(这应该是个趋势,后面安卓应该陆续跟进)。

8 d7 _( D3 M" Y* i$ U+ j1 u
具体实现来看下:
1.申请权限的方法是:window.DeviceOrientationEvent.requestPermission,返回值是个promise,promise中会返回 用户的  允许(“granted”)/拒绝(”denied“) 状态;可能还有第三个值”prompt“,目前不知道怎么会返回这第三个值;
* w4 a8 O' O" X+ p! U
2.requestPermission方法的”首次“调用 需要 由用户交互触发(目前发现 click,touchend事件可以)。

' |; n) G' e  s, I6 b+ H  H
2.1  先说下 ”首次“的含义。指的是用户 完全退出app(而不是 app切换到后台运行) 后再次打开为首次。用户在首次进入后 如果页面需要陀螺仪权限,需要用户交互才能触发requestPermission方法。之后系统会记录 用户对本网址的授权信息,不退出app的情况下就不需要重复申请本权限了,本记录信息会一直保留  直到完全退出app。
/ I: a. {9 V# x* G# b" K. b
2.2 非首次调用的话  则不需要用户交互 触发,我们在页面初始化时调用来拿到 用户的 授权状态  进而做一些处理。

5 W+ M+ e1 C$ c& K% i6 K
2.3  如果首次调用 不是由 用户触发,比如 页面初始化时 调用,则此方法的promis会返回reject状态。
- a# ?% O* d9 O, Z
3.现在可以写一下 大概逻辑流程。
  
/ K0 O' }0 M. [1 Y8 o  A
                               
登录/注册后可看大图

8 O( ^$ ^  {0 i: x, Q
4.需要注意,使用陀螺仪 需要https协议,且一经用户授权/禁止,系统会保留用户授权状态,不再重复系统弹框,直到完全退出app。

8 i4 M9 p4 y* G
5.上一个官方文档,点这.
4 O- |  M- o$ h8 w
6.贴个代码
window.DeviceOrientationEvent.requestPermission()3 w* T1 P, Q3 J: n
            .then(state => {
) e8 \/ F& h* K. [                if(state === "granted"){//允许
  T' o1 _: a4 G; f/ r+ V! d' T9 }                    console.error("用户允许",state)
0 P( L, N: ?# Q* E% H                }else if(state === "denied"){//拒绝
: F& m0 J( c2 u4 i2 d. f( G- Y4 B                    console.error("用户拒绝",state)7 {  |5 m) p  U# i/ m% C
                }else if(state === "prompt"){
. g! m0 y6 a/ i' D. ]+ y* K  e$ G                    console.error("用户干了啥",state)
) m$ [. [1 z4 z% t9 Y- |                }
3 }9 G2 R: N! ~# }
" ?3 j+ ^0 B5 D

" F# J. U/ q* I3 c

QQ|首页|活动TV|活动社区|WoGoods|IGV5|M现场|微现场IM|大屏幕Plus|手机版|微信互动素材库

GMT+8, 2024-4-20 16:48 , Processed in 0.047167 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表