我有一个WKWebView,用户可以通过多个页面访问包含来自lesson.ly的视频的页面。
问题是视频在网页视图中根本不会显示,视频所在的页面只有一个空白。但是,如果我在iOS上打开chrome,它加载就好了。
我通过调试HTML代码来查明问题。以下是webview上HTML的屏幕截图:
如果您注意到,webview中的iframe中没有任何内容。我不知道为什么它没有加载数据。我启用了“允许任意负载”#39;对于App Transport Security无济于事。
感谢任何帮助,谢谢。
答案 0 :(得分:3)
找出问题所在。这一切都在委托方法webView:decidePolicyForNavigationAction:decisionHandler:
中,因为Lessonly视频来自不同的来源(fast.wistia.net),我不得不添加url expliclity。
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
guard let requestURL = navigationAction.request.url?.absoluteString else { return }
if requestURL.tc_contains("mydomain.lesson.ly") || requestURL.tc_contains("fast.wistia.net"){
decisionHandler(.allow)
}
else {
decisionHandler(.cancel)
}
}
答案 1 :(得分:2)
或者,您可以检查相关请求是否定位到主框架,而不是允许使用特定网址:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {
// Allow navigation for requests loading external web content resources.
guard navigationAction.targetFrame?.isMainFrame != false else {
decisionHandler(.allow)
return
}
...
}