Open1

iOSにおいて、setTimeoutでaudioタグをplayしても音が鳴らない

としひでとしひで

問題

setTimeout内でaudioタグを使った時、play()しても再生されない

原因

そもそもiOS端末では仕様で非同期処理で音源を再生できない

https://haruppooooo.com/programming/281/

https://developer.mozilla.org/ja/docs/Web/Media/Autoplay_guide

対策

play()する前にload()する。
ただし、ユーザーのアクション(タップ)に紐づく処理内でload()しなければならない。
※例えばonloadのaddEventListenerでload()しても効かない。