我们有一个 React 网站,其声音效果可响应用户操作而播放。经过一番努力,它们终于可以在所有设备和浏览器上运行,包括 Android,但不能在 iPhone 或 iPad 上运行。它不完全是 Safari,因为它可以在 Safari 桌面上运行!
幸运的是,我们能够从 iPad 收到此控制台错误:
NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.enter image description here
即使用户点击了取消静音按钮并且视频当前正在播放,也会发生这种情况。
我看到这是一个常见的问题,问了很多,但专门针对视频,而不是声音效果。我们可以预加载音频,如一些 Google 结果所示,但这可能不太适合我们的代码/用户体验的交付方式。 (它现在可以工作,但不能随着我们的扩展而工作)
我们尝试搜索堆栈溢出,并实施建议的修复,但是其中一些提到内联播放视频,还有一些提到预加载音频,我们正在尝试这样做,但是什么时候呢?而且,这会增加设备的负载,因此理想情况下,当播放或请求播放时。如果我们可以在请求的那一刻预加载然后播放它,那就可以了!
我们也尝试过
if (navigator.userActivation.hasBeenActive) {
按照https://webkit.org/blog/13862/the-user-activation-api/
这也没有解决问题......这有点令人震惊。
有人有什么想法吗?在这里被难住了!
任何见解/建议将不胜感激!
提前致谢!
创建一个名为“`
的函数调整基于设备类型的音量
`”根据设备是移动设备还是 iPhone 来调整音量。