让我们看一下这个场景:
在您看来,您有一个按钮。单击它时,您想直接播放视频。为了做到这一点,你打开 webview 作为你的视图的模式视图:
[self presentModalViewController:videoWebView animated:NO];
对于您的 webview,您应该使用 Youtube API 来集成和自动播放视频。在此处查看建议的工作示例:https ://stackoverflow.com/a/15538968
您将看到视频在您的 webview 视图的模态视图中启动。检测视频何时关闭(单击“完成”按钮时)的一种方法是使用viewDidAppear
webview 视图类。在这种方法中,您也将关闭 webview 视图,但是......当这个视图首先启动时,您不想关闭它。您可以添加一个布尔属性来避免这种情况。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (_videoLaunched) {
[self dismissModalViewControllerAnimated:YES];
}
}
在viewDidLoad
方法中,将此属性设置为 NO,并在webViewDidFinishLoad
方法(webview 的委托方法)中将其设置为 YES。
我认为它回答了你问题的一部分。关于视频结束的检测,您必须修改YT_Player.html
文件以收听状态更改。
ytPlayer = new YT.Player('media_area', {height: '100%', width: '100%', videoId: 'SbPFDcspRBA',
events: {'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange}
function onPlayerStateChange(e) {
var result = JSON.parse(event.data);
if (result.info == 0) { // Video end
window.location = "videomessage://end";
}
}
});
然后,您将在 webview 视图中捕获该事件并像这样将其关闭:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
if ([[url scheme] isEqualToString:@"videomessage"]) {
[self dismissModalViewControllerAnimated:YES];
return YES;
}
return YES;
}