对于 web 视图中的 html 音频元素,iOS 13 webaudio 完全损坏
Posted
技术标签:
【中文标题】对于 web 视图中的 html 音频元素,iOS 13 webaudio 完全损坏【英文标题】:iOS 13 webaudio is totally broken for html audio elements within a webview 【发布时间】:2019-11-16 03:33:02 【问题描述】:我正在使用 cordova 和 wkwebview 构建手机游戏,但我遇到了音频无法在 ios 13(特别是 iPadOS 13.2.2)上运行的重大问题。我有几个连接到 AudioContext 的 html 音频元素,当我在上下文恢复后播放一个时,没有 js 错误,从 js 方面看起来一切都很好。但是,它不播放任何声音,并且在原生 iOS 端,它会抛出这个错误:
2019-11-15 18:27:09.610800-0500 MyApp[9045:99562] [assertion] Error acquiring assertion: <NSError: 0x2811ddfe0; domain: RBSAssertionErrorDomain; code: 2; reason: "Client is missing required entitlement">
userInfo =
RBSAssertionAttribute = <RBSLegacyAttribute: 0x111048cf0; requestedReason: MediaPlayback; reason: MediaPlayback; flags: PreventTaskSuspend | PreventTaskThrottleDown | WantsForegroundResourcePriority>;
2019-11-15 18:27:09.610840-0500 MyApp[9045:99562] [ProcessSuspension] 0x108ee7138 - ProcessAssertion() PID 9045 Unable to acquire assertion for process with PID 9045
2019-11-15 18:27:09.610894-0500 MyApp[9045:99269] [ProcessSuspension] 0x108ee7138 - ProcessAssertion::processAssertionWasInvalidated()
我尝试在 xcode 的“背景模式”选项卡中添加“音频、AirPlay 和画中画”和“背景处理”标志,但它们没有效果。其他需要注意的事项:它在模拟器中播放音频,即使它仍然抛出错误,但无法在实际设备上播放。此外,音频确实使用 AudioBuffer 正确播放,它只是受影响的音频元素。不幸的是,我不能将 AudioBuffers 用于我的音轨,因为它们仅适用于短音,而且加载完整长度的歌曲需要很长时间。
我已将此作为 webkit 错误提交:https://bugs.webkit.org/show_bug.cgi?id=204261
有没有人能够让 html 音频在 iOS 13 上运行,或者知道任何解决方法?
【问题讨论】:
我也有同样的问题,MediaElementAudioSourceNode 在 iOS 13 上根本无法使用。几周前我向 Apple 提交了反馈,但没有任何回复。 【参考方案1】:同样的问题,使用 WKWebView 并且背景中的音频在 30 秒后停止。在 X-Code 的“背景模式”选项卡中勾选“音频、AirPlay 和画中画”和“背景处理”标志,没有效果。在 iOS 12 中一切正常,我不明白这是新 iOS 13 系统或新 Apple 公司政策的问题。 他们的文档中没有任何关于 IOS 13 和背景音频的指定或更改 (https://developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/creating_a_basic_video_player_ios_and_tvos/enabling_background_audio)。 在我通过 Apple Developer Support 提出的问题时,我仍然没有回答。 ...如果有人可以回答我们这个问题或帮助我们。提前谢谢你。
【讨论】:
从那以后你找到解决办法了吗? 不...原生音频播放器是最终的解决方案。【参考方案2】:我有同样的问题,我解决了将这些添加到 config.xml:
<preference name="AllowInlineMediaPlayback" value="true" />
这允许媒体播放在屏幕布局中内嵌显示,使用浏览器提供的控件而不是本机控件。
更多详情请阅读:
https://cordova.apache.org/docs/en/5.1.1/guide/platforms/ios/config.html
【讨论】:
以上是关于对于 web 视图中的 html 音频元素,iOS 13 webaudio 完全损坏的主要内容,如果未能解决你的问题,请参考以下文章