MPMoviePlayerController автоматически зацикливает воспроизведение видео на iOS13 в некоторых устройствах - PullRequest
2 голосов
/ 18 октября 2019

После выхода iOS 13 произошло одно исключение в одном из наших интерфейсов воспроизведения видео. Этот интерфейс предназначен для воспроизведения видео с использованием MPMoviePlayerController. В некоторых случаях видео, которые будут воспроизводиться только один раз, теперь будут автоматически зацикливаться. В то же время уведомление MPMoviePlayerPlaybackDidFinishNotification также не получено.

По отзывам пользователей эта проблема будет появляться только на устройствах iOS13. После тестирования я обнаружил, что только один iPhone11 во всех устройствах iOS13 будет иметь эту проблему, и другие устройства iOS13 (включая другой iPhone11) не имеют такой проблемы.

Когда возникла проблема, я напечатал значение repeatModeи обнаружил, что оно по-прежнему равно 0. Позже я попытался вручную установить repeatMode в MPMovieRepeatModeNone и обнаружил, что эта проблема все еще возникает.

Некоторая дополнительная информация:
1) По какой-то причине я все еще используюXcode10.3 (базовый SDK: iOS12.4) для компиляции проекта, поэтому использование MPMoviePlayerController не приводит к сбою напрямую.
2) Проблемным устройством является тестовая машина партнера, поэтому я могу только удаленно дать им указание протестировать, естьнет возможности отладки локально.

Вот код, который я использовал для проверки:

  NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
  NSURL *url = [NSURL fileURLWithPath:filePath];

  self.playerController = [[MPMoviePlayerController alloc] init];
  [self.playerController setScalingMode:MPMovieScalingModeAspectFit];
  [self.playerController.backgroundView setBackgroundColor:[UIColor clearColor]];
  self.playerController.movieSourceType = MPMovieSourceTypeFile;
  [self.playerController setControlStyle:MPMovieControlStyleNone];
  [self.playerController.view setFrame:self.view.bounds];
  self.playerController.view.userInteractionEnabled = YES;
  [self.view addSubview:self.playerController.view];

  self.playerController.contentURL = url;
  [self.playerController prepareToPlay];
  [self.playerController play];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...