IOS 12.2 deviceorientation

提供: ディーズガレージ wiki
移動先: 案内検索

iOS 12.2のsafariでは、デフォルトでセンサー値取得が不可になったようです。
センサーを使用する全てのWebVR・WebARに影響が出ているものと思われます。
センサーが使用可能な状態なのか判別方法を探ってみます。

環境

iPhone XS
発火する条件を見たいので 設定 > safari >「モーションと画面の向きのアクセス」をON/OFF切り替えて確認

three.js

参考: three.js / examples / controls / deviceorientation

ソース

test01.html
DeviceOrientationControls.js

DeviceOrientationControls.js
追記

    this.disconnect = function () {
        alert('disconnect!');
    };

確認

ON/OFF両方で発火しない

Google

参考: 端末画面の向きと端末のモーション | Web | Google Developers

ソース

test02.html

確認

ON/OFF両方で発火する window.DeviceOrientationEvent
OFFで動かない/ONで発火する window.addEventListener("deviceorientation");
OFFで何も返さない/ONで返す alpha beta gamma

iOSハック

  • iOS 12.2以上に分岐 UAParser.js GPLv2 or MIT License
  • DeviceOrientationEventで判別しない 削除
  • iOS 12.2以上の条件でdeviceorientationリスナーを起動させておく 動かなくても構わない
  • alpha,beta,gammaに初期値0を与え、setTimeout後の様子で判別

ソース

test03.html

確認

期待する動き

ライブラリ

ソース

test04.html
iOSdeviceorientationCheck.js

設置

<script src="https://cdn.jsdelivr.net/npm/ua-parser-js@0/dist/ua-parser.min.js"></script>
<script src="iOSdeviceorientationCheck.js"></script>

確認

期待する動き

動作確認

スマホdeVR deviceorientation devicemotion
宇宙マイクロ波背景放射VR universal deviceorientation geolocation
スマホDEバーチャルモデル universal deviceorientation devicemotion
shake! universal deviceorientation devicemotion
SpaceColony universal deviceorientation

更新履歴

  • 2019.4.11 公開