でしたが、また変わった🙁。。そしてiOS13ではJS側で許可したクリックイベント作るんですね。
出典:iOS 13でデバイスの動きと方向の許可を要求する方法
自作のWebAppで実装して動作確認をしたのでメモです
DeviceOrientationEvent ←→ DeviceMotionEvent
window.addEventListener('deviceorientation' ←→ window.addEventListener('devicemotion'
bunki.js
if (typeof DeviceOrientationEvent.requestPermission === 'function') {
// iOS 13+
popupOpen("requestPermissionPopup");
} else {
// non iOS 13+
window.addEventListener("deviceorientation", 今までのイベント);
}
で、13+かを判定して、
なにかUIでクリックイベントを設定して、
hoge.html
<button onclick="requestPermission()">このエリアを押して モーションの利用を許可してください (iOS 13+) </button>
13+ で許可されたイベントリスナで
bunki.js
// for ios13
requestPermission = ()=> {
DeviceOrientationEvent.requestPermission().then(response => {
if (response === 'granted') {
window.addEventListener("deviceorientation", ios13で許可したイベント);
}
}).catch(console.error);
};
で自分のWebAppでdeviceorientation動くことは確認しました。
許可の1タップがまた増えるのがなんだかなぁ。個人の設定で永続性はできないんですかねぇ。IEの記憶再び。。。🙁
chromeは今の所何もせず動いています。:追記 v78 ios requestPermission になった模様。