Ios 如何在WKMediaPlaybackState更改时获得通知
当webView的WKMediaPlaybackState的值更改时,如何添加运行回调的观察者 当webView中的vimeo视频暂停时,我正在尝试进行一些更改 这是我的密码Ios 如何在WKMediaPlaybackState更改时获得通知,ios,swift,webview,wkwebview,vimeo-player,Ios,Swift,Webview,Wkwebview,Vimeo Player,当webView的WKMediaPlaybackState的值更改时,如何添加运行回调的观察者 当webView中的vimeo视频暂停时,我正在尝试进行一些更改 这是我的密码 目前我正在使用requestMediaPlaybackState函数,但它只运行一次您可以直接从java脚本观察视频播放器的状态,为此,您应该将所需的事件侦听器添加到video对象,然后通过webkit.messageHandlers将状态发布到本机: webView.configuration.userContentCo
目前我正在使用requestMediaPlaybackState函数,但它只运行一次您可以直接从java脚本观察视频播放器的状态,为此,您应该将所需的事件侦听器添加到
video
对象,然后通过webkit.messageHandlers
将状态发布到本机:
webView.configuration.userContentController.add(self,名称:“playbackMessageHandler”)
让js=”“”
函数onPlaybackState(playbackState){
const{webkit:{messageHandlers:{playbackMessageHandler}}}=window;
playbackMessageHandler?.postMessage({playbackState});
};
window.addEventListener('load',(事件)=>{
const video=document.querySelector('video');
视频?.addEventListener('play',(事件)=>onPlaybackState('playing');
视频?.addEventListener('pause',(事件)=>onPlaybackState('paused');
视频?.addEventListener('suspend',(事件)=>onPlaybackState('suspended');
});
"""
let script=WKUserScript(来源:js,injectionTime:.atDocumentEnd,forminframeonly:false)
webView.configuration.userContentController.addUserScript(脚本)
webView.load(…)
...
扩展视图控制器:WKScriptMessageHandler{
func userContentController(userContentController:WKUserContentController,didReceive消息:WKScriptMessage){
guard let body=message.body as?[String:String],let playbackState=body[“playbackState”]else{return}
打印(播放后台状态)
}
}
@IBOutlet weak var vimeoVideoPlayer: WKWebView!
func buildVimeoVideoPlayer(with video: Video) {
let url = URL(string: "https://player.vimeo.com/video/\(video.id)")!
let requestObj = URLRequest(url: url)
vimeoVideoPlayer.load(requestObj)
vimeoVideoPlayer.contentMode = UIView.ContentMode.scaleAspectFit
vimeoVideoPlayer.configuration.allowsAirPlayForMediaPlayback = true
vimeoVideoPlayer.configuration.allowsInlineMediaPlayback = true
vimeoVideoPlayer.configuration.allowsPictureInPictureMediaPlayback = true
vimeoVideoPlayer.navigationDelegate = self
vimeoVideoPlayer.scrollView.isScrollEnabled = false
vimeoVideoPlayer.requestMediaPlaybackState { mediaState in
switch mediaState {
case .paused:
print("the video was Paused")
case .playing:
print("the video is playing")
case .suspended:
print("the video is suspended")
default:
break
}
}
}