刚刚升级ios11.3之后导致视频播放闪断的问题

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer];

正常这个Notification是在视频播放完成、玩家手动触发视频结束和视频播放出错时调用,现在升级到11.3之后莫名其妙在播放刚执行的时候就触发了,目前还没有找到触发的原因,这个Notification抛出理论上是MPMoviePlayer自己的逻辑,也有可能是其他设置或者操作导致了这个控件抛出的,这个大家一起找找原因吧
我临时的解决方案是:判断该推送触发时视频的播放状态,如果是正在播放中就不执行结束,目前测试11.3版本和以下都可以兼容。

-(void) videoFinished:(NSNotification*)notification
{
    if(_videoPlayer != nullptr)
    {
        if([self.moviePlayer playbackState] != MPMoviePlaybackStatePlaying)
        {
            [self mainTheadVideoFinished];
        }
    }
}

这个MPMoviePlayer估计快要被苹果抛弃了,更新几乎没有,这次莫名其名除了这个问题,以后需要启用新的视频解决方案了。

1赞

赞,相关讨论帖,链接一下

http://forum.cocos.com/t/ios11-3-videoplayer/57130/9?u=2627993092

另外一个贴,@zjupigeon 给出的代码是:

-(void) videoFinished:(NSNotification *)notification
{
    if(_videoPlayer != nullptr)
    {
        if([self.moviePlayer playbackState] == MPMoviePlaybackStatePlaying) {
             return;
        }
        if([self.moviePlayer playbackState] != MPMoviePlaybackStateStopped)
        {
            _videoPlayer->onPlayEvent((int)VideoPlayer::EventType::COMPLETED);
        }
    }
}