絶妙に困った事項の備忘です。
事象
- 動画プレイヤーを配置しているページにアクセスし、動画が再生されているのに特定時間放置していると画面ロックがされてしまう。
環境
- 端末
iOS17.1.2
safari , chrome119系
- WEBページ
プレイヤーで再生しているのは拡張子はMP4だが、実態はGIFの音声が存在しない動画
プレイヤーにはautoplayの設定を適用している
原因
iOSの自動ロック設定により、ページ内に動きがないと判定され時限でロックが走った。
ページ内でJavascriptによって要素が1秒感覚で変化する仕組みを入れていましたが、それだけでは動きがないと判定されるようです。
ちなみにMetaタグを利用した方法で制御も試しましたがダメでした。
- 自動ロックの仕様について
設定アプリ>画面表示と明るさ>自動ロック から抜粋
画面を注視しているかどうかを検出します。注視が検出された場合、iPhoneのディスプレイは暗くなりません。
- なぜ動きがないと判定されたのか?
プレイヤーにautoplayの設定を実施しており、該当ページアクセスの初期は音量がMuteになっており、それ故に動きがないと判定された為
iOSのブラウザでautoplayを実現するためには、初期値をMuteにしないといけない制約事項(仕様)があります。
利用者の視線の動き、タップ動作、利用しているアプリケーションから音声が発されているか等が対象のようです。
動画プレイヤー内で動画は再生されていたので、動きがあると思い込んでいたのが本件にハマってしまった要因です。
実態がGIFなので、音声について意識が向いてませんでした。
解決方法
- Playerのmuteを解除するようにページにアナウンスを書いておく
- autoplayを実装しない
ちなみにYouTubeのブラウザ版はautoplayが有効になっており、本件と同様に事象が発生する形式でしたが、アプリ版は音声セレクタがプレイヤーに存在せず最初から音声が流れる仕様でした。
最後に
iOSはユーザーとして利用する分には、脳死で使えていいのですが、開発サイドだと苦慮することが多いですね。
WEBアプリより、ネイティブアプリにしてね。という感じがしますね。
以上、どなたかの参考になれば幸いです。