自iOS9发布以来,我们可以使用wkWebView
loadFileURL:allowingReadAccessToURL:
呈现本地HTML
到目前为止这看起来不错,但是我们在HTML中播放本地mp3时遇到了问题。
有一个带有<audio>
属性的src
标记,其中包含mp3文件的相对路径。
iOS9-Simulator正确播放我们的mp3,但物理设备没有。使用JavaScript捕获错误会显示networkState NETWORK_NO_SOURCE
,这对我们没有意义......
使用http URL作为src
并从网络流式传输mp3工作正常。
是否有人设法使用wkWebView
播放本地音频文件?
答案 0 :(得分:2)
我在iOS 9.2上也遇到过这个问题。具有本地URL的视频在模拟器上可以正常播放,但在设备上则无法播放。使用Safari工具进行调试显示视频错误为相同的无源错误。我们为它提交了一个雷达:http://www.openradar.me/24281444
这是一个疯狂的部分 - 一个工作的kludgy解决方法(无需运行本地Web主机)是我们发现如果您首先在UIWebView中播放视频,那么wkwebview视频将起作用。我们更进了一步,使用了一个隐藏的UIWebview来播放半秒视频,没有声音在标签和web视图中有自动播放属性
uiWebView.mediaPlaybackRequiresUserAction = false
虽然hacky和我看过的任何东西都会导致WKWebview播放视频。这是解决问题的另一个解决方案。
答案 1 :(得分:1)
WKWebView
内的代码似乎无法访问本地文件。我不知道这是预期的行为还是一个错误(雷达,任何人?)
在iOS 9中引入loadFileURL:allowingReadAccessToURL:
之前,有workaround加载本地HTML文件,方法是将其复制到tmp/www
。
令人惊讶的是,那里的文件可以从WKWebView
内部进行访问 - 包括媒体文件。
答案 2 :(得分:0)
非常简单的修复实际上你只需要在src URL前加上localhost和你的WKWebview端口(默认为12344)。
将A转为B:
<!-- A -->
<audio src="img/beep.mp3" controls></audio>
<!-- B -->
<audio src="http://localhost:12344/img/beep.mp3" controls></audio>