スポンサーリンク

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 とかで検証していれば事前に対応できる事ではあるんですけどねー、なかなかねー。

未分類
スポンサーリンク