MPMoviePlayerController не будет воспроизводиться во время блокировки экрана в ios5

#mpmovieplayercontroller

#mpmovieplayercontroller

Вопрос:

Мое приложение использовало MPMoviePlayerController для воспроизведения подкастов. В ios4 мне удалось обойти блокировку экрана, остановив воспроизведение подкастов с помощью следующего кода:

 OSStatus audioInitStat = AudioSessionInitialize (NULL,NULL,NULL,NULL);
if (audioInitStat != kAudioSessionNoError) {
    printf("AudioSession Failed to Initializen");
}
else {
    UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
    audioInitStat = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,    sizeof(sessionCategory), amp;sessionCategory);
}
  

Возможно, это была глупая удача, что раньше это работало, но факт в том, что теперь, с появлением ios5, проигрыватель фильмов останавливается с блокировкой экрана, чего не было в ios4. Кто-нибудь знает, как разрешить проигрывателю фильмов воспроизводиться во время блокировки экрана. Я не хочу использовать:

 [[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ];
  

потому что это просто разрядит батарею (т. Е. Я хочу, чтобы экран стал тусклым). Любые идеи будут высоко оценены. Если я не могу использовать видеопроигрыватель, не знаете ли вы, могу ли я использовать какие-либо другие звуковые возможности ios для воспроизведения подкастов?

Комментарии:

1. Должен быть способ обойти это, потому что приложения spotify и iheart radio по-прежнему работают с экраном блокировки. Есть идеи?

Ответ №1:

В iOS 5.x вам необходимо установить два ключа в вашем файле info.plist.

Сначала добавьте строку в файл с ключом «UIApplicationExitsOnSuspend», сделайте значение логическим и установите для него значение «НЕТ»

Затем добавьте строку с ключом с именем «UIBackgroundModes»
, это будет массив, и вы хотите, чтобы первый элемент имел значение «audio»

Вы также можете установить для своей аудиосессии AVAudioSessionCategoryPlayback для хорошей оценки:

     [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
  

Это будет работать для аудиофайлов, воспроизводимых с помощью MPMoviePlayerController, но не для видео.

Ответ №2:

После долгих поисков я нашел частичное решение:

Перейдите к вашему info.plist для вашего приложения.

Добавьте ключ «Требуемые фоновые режимы» и установите значение «Приложение воспроизводит аудио» Добавьте ключ «Приложение работает в фоновом режиме» и установите значение «ДА»

Я понятия не имею, где это задокументировано, но это работает.

Это лишь частичное решение. При этом звук может воспроизводиться в фоновом режиме, но вы не можете нажать кнопку home для доступа к другим приложениям. Приложение завершит работу при нажатии кнопки Home.

Комментарии:

1. хотя это частичное решение и работает при его тестировании, оно не проходит этап проверки с помощью xcode organizer при попытке отправить его в app Store (по крайней мере, с ios5)

2. Вы узнали, как это исправить при нажатии кнопки home?

3. @EmreAkman Начиная с iOS6, решения не было. Я пробовал много вещей в течение длительного периода времени, но безуспешно. Я не смотрел на это с iOS7.