ios 13 陀螺儀DeviceOrientationEvent需要申請用戶權限 js


有些代碼跑着跑着就報錯了,有些陀螺儀用着用着就不能用了。

目前時間是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)
                }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM