2012-04-25 3 views
5

Добрый день,Youtube Увольнение событий (IOS)

Благодаря использованию в UIWebView у меня сейчас рабочий метод, чтобы показать Видеосервис YouTube в пределах моего приложения (с помощью тега, найти кнопку воспроизведения в пределах WebView и обжиге это событие касания).

Работает как очарование. Видео всплывает и воспроизводится. Однако я хотел бы получить событие, когда видео заканчивается или пользователь нажимает кнопку «Готово».

В Интернете я обнаружил, что есть событие: MPAVControllerItemPlaybackDidEndNotification, где вы можете слушать. Однако этого не вызвали.

После некоторых дальнейших исследований я обнаружил, что для видео Youtube, встроенных в UIWebView, было вызвано другое уведомление (UIMoviePlayerControllerDidExitFullscreenNotification). К сожалению, это уже не работает. (found it here)

Кто-нибудь знает, как я могу сделать какое-либо действие после того, как видео будет исполнено или было уволено?

Благодаря

ответ

-1

Что вам нужно здесь что-то вроде этого:

- (void)playerWillExitFullscreen:(NSNotification *)notification 
{ 
//do something... 
} 

[[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(playerWillExitFullscreen:) 
name:@"MPMoviePlayerWillExitFullscreenNotification" object:nil]; 
+0

Пробовали ли вы с прошивкой 6? Пробовал это раньше, уведомление здесь не стреляет. – fabb

+0

MPMoviePlayerWillExitFullscreenNotification работает для меня на iOS 6. Можете ли вы проверить, работает ли он на вас? – defactodeity

+0

К сожалению, это не работает для меня. Может быть, это связано с тем, что я использую видео Youtube в UIWebView? – fabb

5

Используйте UIMoviePlayerControllerWillExitFullscreenNotification для получения уведомления, как только пользователь повернутого на кнопке Готово. UIMoviePlayerControllerDidExitFullscreenNotification, похоже, действительно опускается на iOS6.

ум, что ... ли ... против ... Будет ... разница!

Для получения дополнительной информации об этом, еще раз проверьте мой обновленный ответ в этой публикации, на которую вы ссылаетесь в своем вопросе.

+2

Не работает в ios 8 –

0

Давайте посмотрим на этот сценарий:

enter image description here

По вашему мнению, у вас есть кнопка. Когда он щелкнут, вы хотите напрямую воспроизвести видео. Для того, чтобы сделать это, вы открываете WebView как модальный зрения вашей точки зрения:

[self presentModalViewController:videoWebView animated:NO]; 

Для вашего WebView, вы должны использовать Youtube API для интеграции и автовоспроизведение видео. См. Предлагаемый рабочий пример здесь: https://stackoverflow.com/a/15538968

Вы увидите, что видеоролик запущен в режиме просмотра вашего веб-просмотра. Один из способов обнаружить, когда видео отключено (когда нажата кнопка «done»), следует использовать viewDidAppear в вашем классе просмотра веб-просмотра. В этом методе вы также упустите представление веб-просмотра, но ... когда это представление запускается сначала, вы не хотите его отклонять. Вы можете добавить свойство boolean, чтобы этого избежать.

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    if (_videoLaunched) { 
     [self dismissModalViewControllerAnimated:YES]; 
    } 
} 

В методе viewDidLoad, установить это свойство NO и в webViewDidFinishLoad метода (метод делегат WebView) установить его на ДА.

Я думаю, что он отвечает на одну часть вашего вопроса.Что касается обнаружения конца видео, вам необходимо изменить файл 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; 
} 
Смежные вопросы