RSS Twitter Facebook

2018/04/20 (2018年04月 のアーカイブ)

Chrome 66 自動再生無効化の影響


さて、4月17日、Chrome 66 安定版がリリースされたわけですが、このバージョンではページを開いた時に動画/音声を自動再生する機能が無効化されるようになりました。これが Web Audio API を利用したアプリケーションに軒並み影響を与える可能性があります。

https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio

Web Audio API に関する内容としては 「AudioContext は(ボタンを押す等の)ユーザーのアクション以降に作成またはresume()しないといけない」という事になります。つまり、ユーザーのアクションがまだ無い状態で作成された AudioContext はサスペンド状態になります。

今までのバージョンでもモバイルデバイスでは、オシレータ等の start() はユーザーがボタンを押す等のアクションからトリガーしてあげないと音を出せないという制限がありましたが、今回の制限はPC向けブラウザでも同様です。

上のリンクのページに解説がありますが、何かのボタンを押すとアプリが走り始めるというパターンの場合の対処方法が提示されています。


// 元々のコードで、ページロードでAudioContext を作成している。
window.onload = function() {
  var context = new AudioContext();
  // Setup all nodes
  ...
}

// ボタンがクリックされたタイミングで resume() する
document.querySelector('button').addEventListener('click', function() {
  context.resume().then(() => {
    console.log('Playback resumed successfully');
  });
});

あるいは

// ボタンがクリックされた時点から AudioContext を作り始める
document.querySelector('button').addEventListener('click', function() {
  var context = new AudioContext();
  // Setup all nodes
  ...
});

このサイト上のオーディオ系アプリも軒並み音が出なくなっているようで WebModular だけは直しましたがその他も順次対応して行きます。ちゃんとニュースを追いかけて、Chrome Canary とかで検証していれば事前に対応できる事ではあるんですけどねー、なかなかねー。

Posted by g200kg : 2018/04/20 14:12:05