如何在 WKWebView 中检测视频播放器的播放/暂停事件?

Posted

技术标签:

【中文标题】如何在 WKWebView 中检测视频播放器的播放/暂停事件?【英文标题】:How can I Detect Play/Pause events of a video player in WKWebView? 【发布时间】:2018-03-01 11:02:32 【问题描述】:

假设有一个 youtube 视频正在网络视图中播放,使用嵌入式代码,

let videoID = "oxtP3wxXlTA" // https://www.youtube.com/watch?v=oxtP3wxXlTA

let embededhtml = "<html><body style='margin:0px;padding:0px;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>function onYouTubeIframeAPIReady()ytplayer=new YT.Player('playerId',events:onReady:onPlayerReady)function onPlayerReady(a)a.target.playVideo();</script><iframe id='playerId' type='text/html' width=100% height=100% src='http://www.youtube.com/embed/\(videoID)?modestbranding=1?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'></body></html>"


videoPlayerWebView.loadHTMLString(embededHTML as String, baseURL:Bundle.main.resourceURL )

是否有任何选项可以使用本机 Swift 代码跟踪视频播放器的播放或暂停事件?我尝试了很多 javascript 代码,但没有奏效,我还需要本机 swift 或 ObjectiveC 代码。

另一个主要问题是,它可以是任何播放器,而不仅仅是 youtube 播放器,需要跟踪来自任何类型的视频播放器的播放/暂停事件。

有人可以指导我吗?关于如何追踪事件?

【问题讨论】:

【参考方案1】:

请使用此网址中的“YTPlayerView”https://github.com/youtube/youtube-ios-player-helper 您可以使用此库中的以下枚举。

 typedef NS_ENUM(NSInteger, YTPlayerState) 
    kYTPlayerStateUnstarted,
    kYTPlayerStateEnded,
    kYTPlayerStatePlaying,
    kYTPlayerStatePaused,
    kYTPlayerStateBuffering,
    kYTPlayerStateQueued,
    kYTPlayerStateUnknown
;

【讨论】:

不,我正在尝试创建一个代码,它将收听正在 web 视图上播放的所有视频,而不仅仅是 Youtube。如果您有与此相关的内容,请分享,不过,感谢您的努力!

以上是关于如何在 WKWebView 中检测视频播放器的播放/暂停事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测在 WKWebView 中播放的电影?

如何在WKWebView中禁用YouTube视频的自动播放?

如何使用wkwebview在我的应用程序中自动播放视频

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

avplayer 和 wkwebview 视频播放

如何在 wkwebview 视频中禁用自动启动 AVPlayer