自 google 自动播放政策更改后如何在网站上播放通知声音
How to play notification sound on website since google autoplay policy change
我一直试图在网站上发出短哔声以获取通知,但 google 自动播放政策更改不允许我这样做,我该怎么办。我看到很多网站仍在这样做,例如 facebook 聊天等。
我已经尝试过但没有成功(也尝试过 element):
function beep(vol, freq, duration){
v=a.createOscillator()
u=a.createGain()
v.connect(u)
v.frequency.value=freq
v.type="square"
u.connect(a.destination)
u.gain.value=vol*0.01
v.start(a.currentTime)
v.stop(a.currentTime+duration*0.001);
}
beep(vol, freq, duration);
问题是根据Chrome的自动播放策略,在某些情况下自动播放声音会被阻止。
在以下情况下允许有声自动播放:
- 用户与域进行了交互(点击、点击等)。
- 在桌面设备上,已超过用户的媒体参与指数阈值,这意味着用户之前播放过 有声视频。
- 用户已将网站添加到移动设备的主屏幕或在桌面设备上安装了 PWA。
- 顶级框架可以将自动播放权限委托给它们的 iframe 以允许自动播放声音。
有关详细信息,请参阅 https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio。
您可以使用以下代码,但必须在该网站的通知设置中将 Sound
设置为 Allow
,例如 Google Chrome 设置中的 localhost:8000
let audio = new Audio("../../assets/sound/quite-impressed.wav");
audio.play();
我一直试图在网站上发出短哔声以获取通知,但 google 自动播放政策更改不允许我这样做,我该怎么办。我看到很多网站仍在这样做,例如 facebook 聊天等。
我已经尝试过但没有成功(也尝试过 element):
function beep(vol, freq, duration){
v=a.createOscillator()
u=a.createGain()
v.connect(u)
v.frequency.value=freq
v.type="square"
u.connect(a.destination)
u.gain.value=vol*0.01
v.start(a.currentTime)
v.stop(a.currentTime+duration*0.001);
}
beep(vol, freq, duration);
问题是根据Chrome的自动播放策略,在某些情况下自动播放声音会被阻止。
在以下情况下允许有声自动播放:
- 用户与域进行了交互(点击、点击等)。
- 在桌面设备上,已超过用户的媒体参与指数阈值,这意味着用户之前播放过 有声视频。
- 用户已将网站添加到移动设备的主屏幕或在桌面设备上安装了 PWA。
- 顶级框架可以将自动播放权限委托给它们的 iframe 以允许自动播放声音。
有关详细信息,请参阅 https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio。
您可以使用以下代码,但必须在该网站的通知设置中将 Sound
设置为 Allow
,例如 Google Chrome 设置中的 localhost:8000
let audio = new Audio("../../assets/sound/quite-impressed.wav");
audio.play();