Youtube解雇事件(iOS)

时间:2012-04-25 21:03:14

标签: ios xcode youtube notifications

美好的一天,

通过使用UIWebview,我现在有了一种在我的应用程序中显示youtube视频的工作方法(使用标记,在webview中查找播放按钮并在其上触发触摸事件)。

像魅力一样工作。视频弹出并播放。但是,我想在视频结束或用户点击完成按钮时收到一个事件。

在互联网上,我发现有一个事件:MPAVControllerItemPlaybackDidEndNotification,你可以听。然而,这个不被称为。

经过一些进一步的研究后,我发现对于通过UIWebView嵌入的Youtube视频,还调用了另一个通知(UIMoviePlayerControllerDidExitFullscreenNotification)。不幸的是,一个人不再工作了。 (found it here

有人知道在视频播放完毕或被解雇后我如何采取行动?

由于

3 个答案:

答案 0 :(得分:5)

用户点击DONE按钮后,使用UIMoviePlayerControllerWillExitFullscreenNotification获取通知。在iOS6上似乎确实省略了UIMoviePlayerControllerDidExitFullscreenNotification

请注意 ...已... ...将... 差异!

有关该主题的更多信息,请再次在您在问题中引用的帖子中查看我的更新答案。

答案 1 :(得分:0)

让我们来看看这个场景:

enter image description here

在您看来,您有一个按钮。点击后,您想直接播放视频。 为此,您可以打开webview作为视图的模态视图:

[self presentModalViewController:videoWebView animated:NO];

对于您的网页浏览,您应该使用Youtube API来集成和自动播放视频。请参阅此处提出的工作示例:https://stackoverflow.com/a/15538968

您会看到视频是在您的网络视图视图的模态视图中启动的。检测视频何时被解除的一种方法(单击“完成”按钮时)是使用webview视图类中的viewDidAppear。在这种方法中,您将关闭webview视图,但是......首先启动此视图时,您不想忽略它。您可以添加一个布尔属性来避免这种情况。

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

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

viewDidLoad方法中,将此属性设置为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;
}

答案 2 :(得分:-1)

你需要的是这样的事情:

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

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