Evento de despedida de Youtube (iOS)

Buen día,

A través del uso de una UIWebview, ahora tengo un método de trabajo para mostrar un video de YouTube dentro de mi aplicación (usar la label, encontrar el button de reproducción dentro de la vista web y activar el evento táctil en eso).

Funciona de maravilla. El video aparece y se reproduce. Sin embargo, me gustaría recibir un evento cuando el video finaliza o el usuario hace clic en el button hecho.

En Internet he encontrado que hay un evento: MPAVControllerItemPlaybackDidEndNotification donde puedes escuchar. Sin embargo, este no se llama.

Después de algunas investigaciones adicionales, descubrí que para videos de YouTube embeddeds a través de UIWebView se llamaba otra notificación (UIMoviePlayerControllerDidExitFullscreenNotification). Lamentablemente, uno ya no funciona. (lo encontré aquí )

¿Alguien tiene alguna idea de cómo puedo hacer alguna acción después de que el video termine de jugar o haya sido despedido?

Gracias

Use UIMoviePlayerControllerWillExitFullscreenNotification para recibir una notificación una vez que el usuario haya tocado el button DONE. El UIMoviePlayerControllerDidExitFullscreenNotification parece omitirse en iOS6.

Ten en count que … Hiciste … contra … ¡Will … diferencia!

Para más información sobre este tema, una vez más verifique mi respuesta actualizada dentro de esa publicación a la que hizo reference en su pregunta.

Veamos este escenario:

introduzca la descripción de la imagen aquí

En su opinión, tiene un button. Cuando se hace clic, desea reproducir el video directamente. En order, para hacerlo, abre la vista web como una vista modal de su vista:

 [self presentModalViewController:videoWebView animated:NO]; 

Para su visualización web, debe usar la API de YouTube para integrar y reproducir automáticamente el video. Vea el ejemplo de trabajo propuesto aquí: https://stackoverflow.com/a/15538968

Verás que el video se inicia en una vista modal de tu vista de vista web. Una forma de detectar cuándo se descarta el video (cuando se ha hecho clic en el button "hecho") es usar viewDidAppear en la class de visualización de la vista web. En este método, usted también descartará la vista de la vista web también, pero … cuando esta vista se inicia al principio, no desea descartarla. Puede agregar una propiedad boolean para evitar eso.

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

En el método viewDidLoad , establezca esta propiedad en NO y en el método webViewDidFinishLoad (delegate method of webview) establézcalo en YES.

Creo que responde a una parte de su pregunta. En cuanto a la detección del final del video, debe modificar su file YT_Player.html para escuchar los cambios de estado.

 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"; } } }); 

Luego capturará el evento en su vista de vista web y lo descartará así:

 -(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; } 

Lo que necesitas aquí es algo como esto:

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