2012-04-25 14 views
5

良い日、私はWebViewの焼成中に再生ボタンを見つけ、タグを使用して(私のアプリ内でユーチューブの動画を表示するようになりました加工方法を持っているのUIWebViewを使用することによりYouTubeの解雇イベント(iOS版)

そのタッチイベント)。

魅力的な作品です。ビデオがポップアップして再生されます。しかし、ビデオが終了したとき、またはユーザーが完了ボタンをクリックしたときにイベントを受け取ることを希望します。

私はインターネット上でイベントがあることを発見しました:あなたが聞くことができるMPAVControllerItemPlaybackDidEndNotification。しかし、これは呼び出されません。

さらに調査したところ、私は、UIWebViewを介して埋め込まれたYoutubeビデオで、別の通知が呼び出されたことを確認しました(UIMoviePlayerControllerDidExitFullscreenNotification)。残念ながら、それはもはや動作しません。 (found it here

ビデオの再生が終了した後、または却下された後に、どのように何らかのアクションを実行できますか?

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

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

答えて

-1

はこのようなものです。 iOS6では実際にUIMoviePlayerControllerDidExitFullscreenNotificationが省略されているようです。

マインドその......ウィル...違い...でした!

詳細については、あなたの質問で参照した投稿内の更新された回答をもう一度確認してください。

+0

あなたはiOSの6としてみてくださいましたか?これを前に試してみましたが、通知はここでは発生しません。 – fabb

+0

MPMoviePlayerWillExitFullscreenNotificationはiOS 6で動作しています。動作しているかどうか確認できますか? – defactodeity

+0

残念ながら、それは私のためには機能しません。たぶん私はUIWebView内のYoutubeビデオを使用するという事実と関係がありますか? – fabb

5

DONEボタンをタップし、ユーザー次第お知らせ取得するためのUIMoviePlayerControllerWillExitFullscreenNotificationを使用してください:あなたがここに必要なもの

おかげ

+2

ios 8で動作しません –

0

のは、このシナリオを見てみましょう:あなたのビューで

enter image description here

、あなたがボタンを持っています。クリックすると、動画を直接再生します。 ためには、そうするように、あなたはあなたのビューのモーダルビューとしてのWebViewを開く:あなたのWebViewのために

[self presentModalViewController:videoWebView animated:NO]; 

、あなたはビデオを統合し、自動再生するYouTubeのAPIを使用する必要があります。ここに提案されている作業例を参照してください:https://stackoverflow.com/a/15538968

あなたのwebviewビューのモーダルビューでビデオが起動していることがわかります。動画が終了したとき(「完了」ボタンがクリックされたとき)を検出する方法の1つは、WebviewのビュークラスでviewDidAppearを使用することです。この方法では、Webviewビューも閉じますが、このビューが最初に起動されたときに、そのビューを閉じることはしません。ブール値のプロパティを追加すると、それを回避できます。 viewDidLoad方法において

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

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

、NOこのプロパティを設定し、webViewDidFinishLoad方法(のWebViewのデリゲートメソッド)にYESに設定します。

私はそれがあなたの質問の一部に答えると思います。ビデオの最後の検出に関しては、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; 
} 
関連する問題