wkwebview 播放 h5 音频或视频元素时报错:Error Acquisition assertion: 1.我的 HTML 文件中有一个音频元素和一个按钮按钮。点击按钮播放音频。 2.在我的演示APP中创建一个wkwebview来加载html文件。 3.点击HTML中的按钮播放音频,可以在xcode上看到错误报告。 4.综上所述,在HTML中播放音频或视频时会出现此错误。那么app性能会下降很多,交互响应会很慢。<body>
<button onclick="handleClick()">PLAY</button>
<audio id="audio" src="https://ac-dev.oss-cn-hangzhou.aliyuncs.com/test-2022-music.mp3"></audio>
<script>
function handleClick() {
document.getElementById("audio").play();
}
</script>
</body>
class ViewController: UIViewController , WKUIDelegate{
var webView: WKWebView!
override func loadView() {
let config = WKWebViewConfiguration()
config.preferences.javaScriptEnabled = true
config.allowsInlineMediaPlayback = true
webView = WKWebView(frame: .zero, configuration: config) //.zero
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "https://ac-dev.oss-cn-hangzhou.aliyuncs.com/test-2022-py.html")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
iPadN[2133:855729] [assertion] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 "Required client entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"MediaPlayback" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Required client entitlement is missing}>
答案 0 :(得分:0)
我遇到了类似的问题。我的计划是将 new Audio(...)
与作为对象 url 存储在存储中的资产或 blob 一起使用。它适用于资产,但不适用于以字符串形式存储在存储中的 blob ......但仅在设备上,就像您提到的那样。
我用以下策略解决了它(对于不工作的部分,在我的情况下它是所有类型脚本,但可以直接在java脚本中完成):
ArrayBuffer
await context.decodeAudioData(arrayBuffer, (buffer) => {...})
)const source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
source.start(0)
source.onended = async(): Promise<void> => {
source.disconnect();
await context.close();
}