MPMoviePlayerViewController 가 iOS 13 에서 공식적으로 deprecated 되면서
AVPlayerViewController로 변경이 필요 하게 되었다
AVPlayerViewController 기본 사용 코드
//플레이어 생성 @property (assign, nonatomic) AVPlayerViewController * playerController; self.playerController = [AVPlayerViewController new]; self.playerController.showsPlaybackControls = NO; //기본 컨트롤러 안보이게 self.playerController.player.actionAtItemEnd = AVPlayerActionAtItemEndPause;
//url 등록 후 self.playerController.player = [[AVPlayer alloc] initWithURL:[NSURL fileURLWithPath:videoUrl]]; //영상이 끝난 후 호출을 받을 수 있게 노티 등록 //완료 처리 콜백 함수 videoFinished(여기서 후처리) 등록 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFinished:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.playerController.player.currentItem]; [self.playerController.view setFrame:videoRect]; //비디오 사이즈 설정 [self.view addSubview:self.playerController.view];
//play //resume [self.playerController.player play]; //pause [self.playerController.player pause]; //stop /* MPMoviePlayerViewController의 경우에는 *stop 기능*을 이용하여서 *stop 종료 핸들러를 통해* 처리를 하고 있었다. AVPlayerViewController의 경우 *stop* 같은 함수가 따로 제공 되어 있지 않다. 그래서 seekToTime 함수를 이용하여서 클릭시 stop 처리 함 */ [self.playerController.player seekToTime:CMTimeMake(sec, 1)]; // 종료 시간을 넣어주게 처리 //플레이어 해제시 //노티 삭제 [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:self.playerController.player.currentItem];
self.playerController.player.actionAtItemEnd
* 재생 완료 후 수행
* AVPlayerActionAtItemEndPause 재생 후 정지 되도록
노티 등록
* AVPlayerItemDidPlayToEndTimeNotification
* AVPlayer의 영상이 종료 되었을때 노티 받을 수 있는 핸들러
그리드형(광고전용)