iOS WKWebView 音频只播放一次

Posted

技术标签:

【中文标题】iOS WKWebView 音频只播放一次【英文标题】:iOS WKWebView Audio only plays once 【发布时间】:2019-04-10 18:51:48 【问题描述】:

我正在使用

<plugin name="cordova-plugin-wkwebview-engine" spec="^1.1.4" />

使用 Cordova@7.1 + ios@5.0.0

我已将偏好设置为

<preference name="AllowInlineMediaPlayback" value="true" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />

在我页面的 js 代码中,我播放了一个声音(一旦加载),但这只在第一次工作

 (...)on('touchstart', function()
     snd.play();
 );

snd 是一个已预加载的 Audio 对象。 代码在 Chrome 和 Android Webview 上运行良好,每次我触摸它都会播放我的声音。

但它只在 iOS WKWebView 上播放一次,任何进一步的 touchstart 都不会播放声音。知道为什么吗?

【问题讨论】:

【参考方案1】:

好吧,我找到了答案,所以我将其发布回来。 iOS webview一次只允许一种声音,从我的测试来看,资源一旦结束就必须重新加载。

function onSoundEnded()
    snd = new Audio();
    snd.addEventListener('ended', onSoundEnded, false);
    snd.src = 'snd/click.mp3';


onSoundEnded();

【讨论】:

以上是关于iOS WKWebView 音频只播放一次的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 iOS 9 上的 WKWebView 中的音频流无法播放?

WKWebView 在后台应用程序时停止音频

如何检测 WKWebView 正在关闭,来自 javascript

iOS:在 WKWebView 中嵌入视频在后台停止音乐

播放音频 WKWebView 时如何使用 MPNowPlayingInfoCenter 显示播放信息?

如何在 WKWebview 中添加观察者以播放和暂停音频文件的操作?