如何在UIWebview中的播放器中获取MPMoviePlayerPlaybackStateDidChangeNotification?

时间:2015-10-19 15:12:24

标签: ios video uiwebview mpmovieplayercontroller

我有这个应用程序(由前任同事编写),它调用视频网站显示视频列表,当用户点击一个视频时,应用程序会自动创建一个MPMoviePlayer并播放视频。

我要求做的是在用户暂停视频时添加广告。但似乎我无法通过添加观察者获得MPMoviePlayerPlaybackStateDidChangeNotification。

我做了一些研究并找到了这些解决方案:

Media Callbacks with Embedded YouTube Videos on iOS

How to receive NSNotifications from UIWebView embedded YouTube video playback

Get Notification when a video starts or stops in UIWebView

但它们都不起作用,至少对于ios8而言。这是我从第三个网址的建议中使用的代码:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playbackStateDidChange:)
                                                 name:@"MPAVControllerPlaybackStateChangedNotification"
                                               object:nil];
- (void)playbackStateDidChange:(NSNotification *)note
{
    NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]);
    int playbackState = [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue];
    switch (playbackState) {
        case 1: //end
            ;
            break;
        case 2: //start
            ;
            break;
        default:
            break;
    }
}

那我该怎么办?如果我想自己创建MPMoviePlayer,这是否意味着我必须实现一个看起来像应用程序现在使用的视频列表html的视图?我认为这还有很多工作要做。那么,如果有任何方法可以从UIWebview中嵌入的MPMoviePlayer获取PlaybackState通知吗?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

请显示通知触发的观察者和选择器。 还有一件事 - 试着澄清"暂停视频"意思是 - 是暂停webview还是直接暂停MoviePlayer? 不应该有任何理由不通知播放器发送通知,因此显示您的代码可能会有所帮助。

你研究中的第1点和第2点呈现不同的问题,最后一个用正确的观察者解决,这是方向(只要视频播放器实际上是MPMoviePlayer类型)。