読者です 読者をやめる 読者になる 読者になる

iPhoneでマナーモードにしてても音がなってしまう

iPhoneでマナーモードにしてても音がなってしまう現象。
調べたのでわすれないようにメモ。

qiita.com

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) {}
}