AVKit 中没有 MPMoviePlayerPlaybackDidFinishReasonUserInfoKey 和 MPMoviePlayerPlaybackDidFinishNotification 等价物。要在 AVKit 中完成相同的功能,您必须分别收听三个通知,而不是一个具有不同可能原因的通知。
- MPMovieFinishReasonPlaybackEnded >>> AVPlayerItemDidPlayToEndTimeNotification
- MPMovieFinishReasonPlaybackError >>> AVPlayerItemFailedToPlayToEndTimeNotification
- MPMovieFinishReasonUserExited。没有转换。有多种方法可以检测用户是否杀死了玩家。一个是检测模式已关闭。
如果你想知道视频是否正在播放,你可以做一个 KVO:
[self.player addObserver:self forKeyPath:@"rate" options:0 context:nil];
然后添加这个方法:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"rate"]) {
if ([self.player rate]) {
[self changeToPause]; // This changes the button to Pause
}
else {
[self changeToPlay]; // This changes the button to Play
}
}
}