Я пытаюсь установить свойство currentPlaybackTime для MPMoviePlayerController в MPMoviePlayerViewController, чтобы оно возобновляло воспроизведение видео (поток HLS) с того момента, когда оно было остановлено, когда приложение было активным. Вот мой код:
//the functinon that sets playback time
- (void)setCurrentPlayTime:(NSNumber *)time {
if (self.moviePlayer.currentPlaybackTime < [time floatValue] - 10.0) {
[self.moviePlayer setCurrentPlaybackTime:(NSTimeInterval)[time floatValue]];
}
}
//app did become active callback
- (void) applicationDidBecomeActiveNotification:(NSNotification*)notification {
if (!isnan(_curPlayTime) && _curPlayTime > 0.0) {
[self performSelector:@selector(setCurrentPlayTime:) withObject:[NSNumber numberWithFloat:_curPlayTime] afterDelay:0.1];
}
}
//player load state did change callback
-(void)playerLoadStateDidChange:(NSNotification *)notification {
MPMoviePlayerController *player = notification.object;
MPMovieLoadState loadState = player.loadState;
if (loadState & MPMovieLoadStatePlaythroughOK) {
if (!isnan(_curPlayTime) && _curPlayTime > 0.0) {
[self performSelector:@selector(setCurrentPlayTime:) withObject:[NSNumber numberWithFloat:_curPlayTime] afterDelay:0.1];
_curPlayTime = 0.0;
}
}
Когда я просто нажимаю кнопку «Домой», а затем снова открываю приложение, а также, если я получаю входящий звонок, но отклоняю его, оно работает. Но если я отвечаю на входящий вызов, после того, как я закончу вызов, воспроизведение начнется с 0.0, игнорируя вызов метода setCurrentPlaybackTime. Кто-нибудь знает, где проблема и может быть какой-нибудь пример, как это нужно сделать, чтобы работать правильно?