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