tutorial open example ios objective-c uiwebview video-streaming uiwebviewdelegate

ios - open - uiwebview tutorial



Detectando e interceptando la reproducción de video en UIWebView (2)

Me gustaría interceptar un clic en un UIWebView y luego usar la URL del video. ¿Cómo es esto posible? Encontré una publicación algo similar que apuntaba a la

webView:shouldStartLoadWithRequest:navigationType:

delegar. Parece que no puedo obtener la URL cargada del video con este delegado.

Estoy intentando que el código funcione en iOS8


Existe una forma AVPlayerItemBecameCurrentNotification de encontrar la URL escuchando la notificación AVPlayerItemBecameCurrentNotification . Esta notificación se activa cuando UIWebView muestra el reproductor multimedia y envía un AVPlayerItem como el objeto de la notificación.

Por ejemplo:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemBecameCurrent:) name:@"AVPlayerItemBecameCurrentNotification" object:nil]; -(void)playerItemBecameCurrent:(NSNotification*)notification { AVPlayerItem *playerItem = [notification object]; if(playerItem == nil) return; // Break down the AVPlayerItem to get to the path AVURLAsset *asset = (AVURLAsset*)[playerItem asset]; NSURL *url = [asset URL]; NSString *path = [url absoluteString]; }

Esto funciona para cualquier video (y audio). Sin embargo, no vale la pena que esto se active después de que el reproductor multimedia se haya cargado, por lo que no puedes detener al jugador para que se lance en este momento (si esa era tu intención).


Si la solución anterior no funciona para nadie, intente escuchar AVPlayerItemNewAccessLogEntry en lugar de AVPlayerItemBecameCurrentNotification. AVPlayerItemNewAccessLogEntry parece ser llamado después y es donde pude establecer la información.