странная ошибка от MP _playbackInterruptionDidEndNotification - PullRequest
0 голосов
/ 05 октября 2011

Кто-нибудь имеет представление о том, что означает этот вывод консоли?

Я использую 4.3.3 SDK на xcode 4.0.2 на снежном барсе

и время от времени во время записи видео или воспроизведения

Я получаю это сообщение в консоли

MP _playbackInterruptionDidEndNotification :: NSConcreteNotification 0x6402a80 {name = AVController_PlaybackInterruptionDidEndNotification; object = <AVController: 0x64a35f0>; userInfo = {
"AVController_InterruptionStatusNotificationParameter" = "non-resumable.SoloAmbientSound";
"AVController_InterruptorNameNotificationParameter" = "AudioSession-2113";

если кто-то может пролить свет на то, что это значит или как от него избавиться?

спасибо заранее

1 Ответ

0 голосов
/ 07 октября 2011

Я получил ту же ошибку при использовании многозадачного жеста (смахивание четырьмя пальцами) с экземпляром MPMoviePlayerViewController, открытым в fullScreen. Это привело к серьезному аварийному завершению работы приложения, в результате чего iPad не мог вращаться и в конечном итоге убивал iPad.

Похоже, что причина этого в значительной степени связана с неправильной настройкой файла .plist.

  1. Откройте файл .plist и найдите ключ «Необходимые фоновые режимы» (если вы показываете необработанные значения ключа, он называется «UIBackgroundModes»).
  2. Откройте раскрывающийся список «Требуемые фоновые режимы» и щелкните «Элемент 0» (или добавьте туда новую строку)
  3. В столбце «Значение» введите «Приложение воспроизводит аудио» (вы можете увидеть его в выпадающем меню, если щелкнуть по стрелке рядом со знаком добавления плюс плюс

Как только вы это сделаете, вы больше не получите эту ошибку.

// EDIT Пока приложению не нужно воспроизводить видео и аудио, пока вы находитесь где-то еще в вашем приложении или другом приложении, вы, вероятно, не хотите, чтобы это видео передавалось в потоковом режиме и использовало эти ресурсы. Поэтому добавьте и установите флажок «Приложение не запускается в фоновом режиме» в вашем .plist.

Что касается воспроизведения, во время воспроизведения может возникнуть множество мыслей, которые могут привести к сбою приложения и устройства. Добавьте этот метод перед методом, который открывает ваш MPMoviePlayerController:

- (void) moviePlayerPlaybackStateDidChange: (NSNotification *) notification {
if (movplayer.playbackState == MPMoviePlaybackStateStopped) {
    [movplayer setContentURL:[movplayer contentURL]];
    [movplayer play];
}
}

Затем добавьте этого наблюдателя в метод, который вызывает ваш MPMoviePlayerController:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];

Это поймает изменение, например, завершение видеоплеера или ускоренную перемотку в конец видео, и сбросит видео до начала, если iOS что-то не нравится. Полезно управлять такими ошибками / сбоями, которые случаются с игроком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...