有些代码跑着跑着就报错了,有些陀螺仪用着用着就不能用了。

目前时间是2020.4.4,发现  ios 13系统调用陀螺仪 需要申请用户权限(这应该是个趋势,后面安卓应该陆续跟进)。具体实现来看下:

1.申请权限的方法是:window.DeviceOrientationEvent.requestPermission,返回值是个promise,promise中会返回 用户的  允许(“granted”)/拒绝(”denied“) 状态;可能还有第三个值”prompt“,目前不知道怎么会返回这第三个值;

2.requestPermission方法的”首次“调用 需要 由用户交互触发(目前发现 click,touchend事件可以)。

  2.1  先说下 ”首次“的含义。指的是用户 完全退出app(而不是 app切换到后台运行) 后再次打开为首次。用户在首次进入后 如果页面需要陀螺仪权限,需要用户交互才能触发requestPermission方法。之后系统会记录 用户对本网址的授权信息,不退出app的情况下就不需要重复申请本权限了,本记录信息会一直保留  直到完全退出app。

2.2 非首次调用的话  则不需要用户交互 触发,我们在页面初始化时调用来拿到 用户的 授权状态  进而做一些处理。

   2.3  如果首次调用 不是由 用户触发,比如 页面初始化时 调用,则此方法的promis会返回reject状态。

3.现在可以写一下 大概逻辑流程。

  

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

5.上一个官方文档,点这.

6.贴个代码

 window.DeviceOrientationEvent.requestPermission()
            .then(state => {
                if(state === "granted"){//允许
                    console.error("用户允许",state)
                }else if(state === "denied"){//拒绝
                    console.error("用户拒绝",state)
                }else if(state === "prompt"){
                    console.error("用户干了啥",state)
                }

最新文章

  1. 循序渐进redis(一) —— redis的安装及可视化工具的使用
  2. 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?
  3. 可视化工具gephi源码探秘(一)
  4. jQuery jsonp无法捕获404、500状态错误
  5. MySQL5.6 报错1067
  6. iOS证书快要过期怎么办?
  7. Js 对象添加属性
  8. ES2:ElasticSearch 集群配置
  9. Workout Wednesday Redux (2017 Week 3)
  10. Promise (2) 基本方法
  11. MySQL高级特性——绑定变量
  12. centos7下安装docker(15.5容器跨主机网络--flanneld)
  13. Star sky CodeForces - 835C
  14. 解析 STM32 的库函数
  15. 操作系统->数组越界(待完善)
  16. django之视图view小知识
  17. 牛客网校招全国统一模拟笔试(二月场)- Java方向
  18. 阶段01Java基础day13常见对象02
  19. Java捕获异常的问题
  20. [Done]BTrace使用小记

热门文章

  1. 简单说 用CSS做一个魔方旋转的效果
  2. JVM—垃圾回收GC算法
  3. 高性能内存队列Disruptor--原理分析
  4. .NET微服务从0到1:服务注册与发现(Consul)
  5. Levenshtein Distance(编辑距离)算法与使用场景
  6. C++常数优化
  7. 教你高效使用数据可视化BI软件创建医院卫生耗材运营监控大屏
  8. 深入理解yield from语法
  9. 028.核心组件-API Server
  10. 服务发现组件之 — Eureka