Youtube解雇事件(iOS)

美好的一天,

通过使用UIWebview我现在有一个工作方法来显示我的应用程序内的YouTubevideo(使用标签,在Web视图中find播放button,并触发触摸事件)。

奇迹般有效。 videopopup并播放。 但是,我想在video结束或用户单击完成button时收到一个事件。

在互联网上,我发现有一个事件:MPAVControllerItemPlaybackDidEndNotification,你可以听。 但是这个不会被调用。

经过一些进一步的研究,我发现对于通过UIWebViewembedded的Youtubevideo,另一个通知被调用(UIMoviePlayerControllerDidExitFullscreenNotification)。 不幸的是,一个不工作了。 ( 在这里find )

有没有人有任何想法如何我可以做一些行动后,video播放或被解雇?

谢谢

一旦用户点击完成button,使用UIMoviePlayerControllerWillExitFullscreenNotification获取通知。 在UIMoviePlayerControllerDidExitFullscreenNotification似乎确实被省略了。

请注意… … ……将…差异!

有关该主题的更多信息,请再次检查您在问题中引用的post中的更新答案。

我们来看看这个场景:

在这里输入图像说明

在你看来,你有一个button。 点击时,您需要直接播放video。 为了做到这一点,你打开webview作为你的视图的模态视图:

 [self presentModalViewController:videoWebView animated:NO]; 

对于你的webview,你应该使用Youtube API来整合和自动播放video。 请参阅build议的工作示例: https : //stackoverflow.com/a/15538968

您会看到video是以webview视图的模式视图启动的。 一种检测video何时被解除(点击“完成”button时)的方法是在您的web视图类中使用viewDidAppear 。 在这种方法中,您将忽略webview视图,但是…当这个视图刚开始的时候,你不想解雇它。 您可以添加一个布尔属性来避免这种情况。

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if (_videoLaunched) { [self dismissModalViewControllerAnimated:YES]; } } 

viewDidLoad方法中,将此属性设置为NO,并在webViewDidFinishLoad方法(webview的委托方法)中将其设置为YES。

我认为它回答了你的问题的一部分。 关于video结束的检测,您必须修改您的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; } 

你需要的是这样的:

 - (void)playerWillExitFullscreen:(NSNotification *)notification { //do something... } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerWillExitFullscreen:) name:@"MPMoviePlayerWillExitFullscreenNotification" object:nil];