2012-04-25 53 views
5

好日子,的Youtube解僱事件(IOS)

通過使用一個UIWebView的我現在有一個工作方法,以顯示我的應用程序內的YouTube視頻(使用標籤,找到的WebView和燒製中的播放按鈕觸摸事件)。

工程就像一個魅力。視頻彈出並播放。但是,我想在視頻結束或用戶單擊完成按鈕時收到事件。

在互聯網上我發現有一個事件:MPAVControllerItemPlaybackDidEndNotification,你可以聽。但是這個不會被調用。

經過一番進一步的研究,我發現對於通過UIWebView嵌入的Youtube視頻,另一個通知被稱爲(UIMoviePlayerControllerDidExitFullscreenNotification)。不幸的是,一個不再工作。 (found it here

有沒有人有任何想法如何我可以做一些行動後,視頻播放或已被解僱?

感謝

回答

-1

你所需要的就是這樣的:

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

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

你嘗試與iOS 6?之前嘗試過,通知不在這裏解僱。 – fabb 2012-09-25 19:02:58

+0

MPMoviePlayerWillExitFullscreenNotification適用於iOS 6我可以檢查它是否適合您? – defactodeity 2012-09-25 19:09:41

+0

不幸的是,它不適合我。也許這與我在UIWebView中使用Youtube視頻的事實有關? – fabb 2012-09-26 09:11:36

5

使用UIMoviePlayerControllerWillExitFullscreenNotification爲了得到通知,一旦挖掘完成按鈕的用戶。在iOS6上,UIMoviePlayerControllerDidExitFullscreenNotification似乎確實被省略。

記住,...沒有......會...區別!

有關該主題的更多信息,請再次查看您在問題中引用的帖子中的更新答案。

+2

不適用於ios 8 – 2014-10-13 12:30:29

0

讓我們看一下這樣的場景:

enter image description here

在你看來,你有一個按鈕。點擊時,您想直接播放視頻。 爲了,要做到這一點,你打開網頁流量爲您的視圖的模式的看法:

[self presentModalViewController:videoWebView animated:NO]; 

對於網頁視圖,您應該使用YouTube API集成和自動播放視頻。請參閱此處提出的工作示例:https://stackoverflow.com/a/15538968

您會看到該視頻是在您的webview視圖的模式視圖中啓動的。檢測視頻何時解除(點擊「完成」按鈕時)的一種方法是在您的webview視圖類上使用viewDidAppear。在這種方法中,你將會忽略webview視圖,但是......當這個視圖首先啓動時,你不想解僱它。您可以添加一個布爾屬性來避免這種情況。

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

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

viewDidLoad方法,該屬性設置爲NO,並在webViewDidFinishLoad方法(web視圖的委託方法)將其設置爲YES。

我認爲它回答了你的問題的一部分。關於視頻結束的檢測,您必須修改您的文件以偵聽狀態更改。

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