iPhoneでマナーモードにしてても音がなってしまう現象。
調べたのでわすれないようにメモ。
webaudioAPI単体なら問題ないが、HTMLAudioを一回でも使うとマナーモード無視で音が鳴ってしまう。今回はhowler.js使っててこのライブラリの場合どうやらライブラリ内でfallbackする際に使われてる模様。(たぶんAPIの存在チェックでnew Audio()とかやってる)
けれど、一発で解決できるグローバルパラメータあったので解決。
そんなものはなかったので、howler.jsちょいいじった
ここをコメントアウトして、
https://github.com/goldfire/howler.js/blob/master/src/howler.core.js#L209-L214
この行の前で、
https://github.com/goldfire/howler.js/blob/master/src/howler.core.js#L232
こんな感じで強制return
self._codecs = { mp3: true } return self;
※今やってるのはwebAudioAPI非対応のIE11も対応するので、上記のコメントはiOSのみの場合に限定した。こんな感じで。
var isiOS = /iPhone|iPad|iPod/i.test(self._navigator && self._navigator.userAgent); if(!isiOS) { try { var test = new Audio(); if (test.muted) { self.noAudio = true; } } catch (e) {} }