4

Я хотел бы перехватить клик в UIWebView, а затем использовать URL-адрес видео. Как это возможно? Я нашел несколько аналогичную должность, указанную в таблицеОбнаружение и перехват воспроизведения видео в UIWebView

webView:shouldStartLoadWithRequest:navigationType: 

делегат. Кажется, я не могу загрузить загруженный URL-адрес видео с этим делегатом.

Я пытаюсь получить код, работающий в iOS8

ответ

8

Существует Hacky способ найти URL путем прослушивания уведомления AVPlayerItemBecameCurrentNotification. Это уведомление вызывается, когда UIWebView показывает медиаплеер, и он отправляет AVPlayerItem в качестве объекта уведомления.

Например:

[[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]; 
} 

Это работает для любого видео (и аудио). Однако ничего не стоит того, что он запускается после загрузки медиаплеера, поэтому вы не можете остановить запуск проигрывателя на этом этапе (если это было вашим намерением).

+3

У кого-нибудь есть обновленное решение для этого с помощью WKWebView? –

+0

Когда WKWebView воспроизводит видео, уведомление не будет отправлено. Вы можете прослушать все уведомления и журнал печати, чтобы доказать это. @CharltonProvatas –

+0

Мне удалось получить его с помощью уведомлений UIWindow. Я не думаю, что это будет работать, однако, для видео, играющих inline: https://developer.apple.com/reference/uikit/uiwindow –

1

Если вышеуказанное решение не работает ни для кого, попробуйте прослушивать AVPlayerItemNewAccessLogEntry, а не AVPlayerItemBecameCurrentNotification. AVPlayerItemNewAccessLogEntry, как представляется, вызывается впоследствии, и именно там я смог установить информацию.

 Смежные вопросы

  • Нет связанных вопросов^_^