Звук, когда приложение находится в фоновом режиме iOS - PullRequest
1 голос
/ 25 сентября 2011

Я пытаюсь воспроизвести звук, когда мое приложение находится в фоновом режиме.Я использую AVAudioPlayer, и он работает правильно, когда приложение активно, но в фоновом режиме AVAudioPlayer ничего не играет, и я не знаю, как я могу это сделать.

Я думал, что яможет использовать UILocalNotification, но он показывает и выводит предупреждение на экране блокировки, и я не хочу его.


Спасибо за ваши ответы.У меня есть еще одно сомнение.Если я создаю эту аудиосессию и играю музыку, система будет одновременно микшировать оба.когда он закончил, как и большинство запущенных приложений в AppStore.(На заднем плане тоже)

Это мой код в AppDelegate

//Creamos la sesión de audio
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];

И, на мой взгляд, когда я хочу воспроизвести звук:

-(void)avisosound{

   // AudioSessionSetActive(YES);
    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/sound.wav", [[NSBundle mainBundle] resourcePath]]];

    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.numberOfLoops = 0;

    if (audioPlayer == nil){
    }
    else{
        [audioPlayer play];  
    }
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    }

Нопри воспроизведении звука музыка ipod останавливается.

Ответы [ 4 ]

4 голосов
/ 01 февраля 2013

Вам нужно внести пару изменений в файл plist.

  1. Установить Требуется фоновый режим на Приложение воспроизводит звук
  2. Установить Приложение не работает в фоновом режиме в ДА

Затем вам нужно написать следующий код в вашем AppDelegate:

   NSError *setCategoryErr = nil;
   NSError *activationErr  = nil;
   [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
   [[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

Теперь вы можете легко воспроизводить звук, когда экран телефона блокируется или ваше приложение находится в фоновом режиме.

1 голос
/ 25 сентября 2011

Следующее указывает системе продолжать воспроизведение аудио, даже когда экран iPhone заблокирован:

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

(Большую часть времени вы вставляете это в свой didFinishLaunchingWithOptions.)

И чтобы система воспроизводила аудио, когда ваше приложение находится в фоновом режиме, добавьте UIBackgroundModes и установите для него значение audio в вашем списке.

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

Чтобы добавить «приглушение», чтобы уменьшить громкость другого звука во время воспроизведения звука, вам необходимо реализовать kAudioSessionProperty_OtherMixableAudioShouldDuck.Ищите это в руководстве по программированию Audio Session.

1 голос
/ 21 октября 2011

Для воспроизведения звука в фоновом режиме (при условии, что ваше приложение настроило надлежащие фоновые режимы), ваше приложение должно запускать звук на переднем плане, а не останавливать его.Самый простой способ сделать это - использовать API Audio Queue или RemoteIO Audio Unit.

0 голосов
/ 25 сентября 2011

В библиотеке разработчиков iOS есть статья, объясняющая, что вы можете делать. Смотри http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

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