我正在使用以下代码从UIWebView中提取URL:它工作正常,但是,这个相同的代码用于WKWebView它不再工作了。有人能帮助我吗?在WKWebView中播放的视频是Inlineplacyback,而不是全屏。
我的代码是:
NotificationCenter.default.addObserver(self, selector: #selector(self.playerItemBecameCurrent(_:)), name: NSNotification.Name("AVPlayerItemBecameCurrentNotification"), object: nil)
@objc func playerItemBecameCurrent(_ sender : NSNotification){
let playerItem: AVPlayerItem? = sender.object as? AVPlayerItem
if playerItem == nil {
print("player item nil")
return
}
// Break down the AVPlayerItem to get to the path
let asset = playerItem?.asset as? AVURLAsset
let url: URL? = asset?.url
let path = url?.absoluteString
print(path!,"video url")
}
回应URL:
6条答案
按热度按时间c9qzyr3d1#
这是一种黑客,但唯一的方法,我发现完成这一点。
现在您只需要知道新屏幕何时变为可见,并使用您保存的URL(了解新可见屏幕的视频URL)。
您可以通过侦听UIWindowDidBecomeVisibleNotification通知来执行此操作:
brccelvz2#
您可以尝试在
WKWebView
中注入JS,如下所示:https://paulofierro.com/blog/2015/10/12/listening-for-video-playback-within-a-wkwebviewdsekswqp3#
从WKNavigationDelegate的webView(_:decidePolicyFor:decisionHandler:)方法中的导航操作的请求属性检索完整URL。
也别忘了遵守协议
9gm1akwq4#
使用SWIFT
您可以使用以下代码从webview的url获取html内容
在这种情况下,您将获得整个html内容,
然后查找html字符串中的href链接
检查它是否是youtube网址使用
一般表示式:“”“”“”“
另一种实现方式
"跳出框框思考"
你可以调用一个api来获取url,这看起来很容易,使用像php,.net等网络语言。
在PHP中获取网页内所有URL的代码(使用任何适合你的语言)
要逐一检查是否是youtube网址。
如果您想检查示例应用程序是否使用了相同的方法,请获取一个Web调试代理并对其进行深入研究
以上许多解释都来自其他网站。
我希望它能满足你的需要!编码快乐!
3yhwsihp5#
在ViewController中尝试以下操作,在WKWebView上添加一个URL观察器:
覆盖observeValue以获取url请求:
最后...取消初始化观察者:
tvmytwxo6#
在WKWebView中,我们需要添加
Inlineplacyback
的配置。如果在WKWebView中设置了该配置,则它将自动进入全屏视图。以下代码供参考:
Click here以查看输出视频示例