iOS12.2より、safariに「モーションと画面の向きのアクセス」項目が追加され、デフォルトでOFFの状態となったため、devicemotionイベント等を取得することができなくなりました。
設定はどうやって変えるの?
設定>Safariから「モーションと画面の向きのアクセス」項目が追加され、デフォルトでOFF
をONにすることで
どうやって検知したらいい?
ググると
if('ondevicemotion' in window) {}
的なコードが出てくるんですが、実際にiOS12.2の設定をOFFにしていても検知してくれません。
const id = setTimeout(() => {
//ここに動かない時にさせたい挙動を書く
}, 500);
window.addEventListener('devicemotion', (e) => clearTimeout(id));
このようなコードをかくことで、
つまり、デバイスオリエンテーションイベントが発生したときにタイマー処理をしているものをクリアしてキャンセル=>動かない時だけsetTimeout()の中身が実行される、ということができるようです。
参考
https://www.macrumors.com/2019/02/04/ios-12-2-safari-motion-orientation-access-toggle/
https://github.com/w3c/deviceorientation/issues/57#issuecomment-481039307