JPVideoPlayer icon indicating copy to clipboard operation
JPVideoPlayer copied to clipboard

后台切换回来会自动播放 设置代理shouldResumePlaybackWhenApplicationDidBecomeActiveFromBackgroundForURL为NO无效

Open dengchenglin opened this issue 6 years ago • 4 comments

dengchenglin avatar May 09 '19 06:05 dengchenglin

我这边发现问题可能出现在"JPVideoPlayer.m" JPDebugLog(@"AVPlayerItemStatusReadyToPlay"); self.playerStatus = JPVideoPlayerStatusReadyToPlay; // When get ready to play note, we can go to play, and can add the video picture on show view. if (!self.playerModel) return; [self callPlayerStatusDidChangeDelegateMethod]; [self.playerModel.player play]; [self displayVideoPicturesOnShowLayer];

alvinh77 avatar May 10 '19 04:05 alvinh77

切换回来会触发这个方法: - (void)playerItemDidPlayToEnd:(NSNotification *)notification {}

lingzuer avatar May 10 '19 08:05 lingzuer

我发现源码里有声明这么个属性playerStatus_beforeEnterBackground 但是作者没有用到它; 我在源码基础上加了这些代码 暂时解决了这个问题

  • (void)applicationStateMonitor:(JPApplicationStateMonitor *)monitor applicationStateDidChange:(JPApplicationState)applicationState{ ... else if(applicationState == JPApplicationStateDidEnterBackground){ self.videoPlayer.playerStatus_beforeEnterBackground = self.videoPlayer.playerStatus; ... } else if (applicationState == JPApplicationStateDidBecomeActive){ self.videoPlayer.playerStatus_beforeEnterBackground = JPVideoPlayerStatusUnknown; } }

然后

  • (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{ ... case AVPlayerItemStatusReadyToPlay:{ ... if(self.playerStatus_beforeEnterBackground == JPVideoPlayerStatusPause){ [self.playerModel.player pause]; } else{ [self.playerModel.player play]; } ... }

dengchenglin avatar May 14 '19 03:05 dengchenglin

暂时不确定是否会引起其他什么bug 希望作者看到这条留言后能给个回复

dengchenglin avatar May 14 '19 03:05 dengchenglin