Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在WKMediaPlaybackState更改时获得通知_Ios_Swift_Webview_Wkwebview_Vimeo Player - Fatal编程技术网

Ios 如何在WKMediaPlaybackState更改时获得通知

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

当webView的WKMediaPlaybackState的值更改时,如何添加运行回调的观察者

当webView中的vimeo视频暂停时,我正在尝试进行一些更改

这是我的密码


目前我正在使用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
            }
    }
}