Я добавил UIBackgroundModes
свойство в Info.plist, чтобы иметь запись массива"audio
"и добавили вызов для установки аудио сессии: [session setCategory: AVAudioSessionCategoryPlayback error: &error];
.
Однако единственным тестовым устройством, которое я имею, является 2G iPod Touch, который не поддерживает многозадачность. Я попробовал средство моделирования, но музыка прекращает играть, когда я переключаюсь на Safari. Но когда я переключаюсь назад на свое приложение, песня продолжает подыгрывать более далекому расположению чем тогда, когда я оставил приложение.
Это, кажется, продолжило играть в фоновом режиме, но я не слышал аудио своего приложения при использовании другого приложения (Safari).
У меня тоже возникла такая же проблема. В симуляторе звук приостанавливается, а когда вы запускаете его обратно, он возобновляет воспроизведение. Но при тестировании на устройстве все работало отлично, и звук продолжал воспроизводиться в фоновом режиме. Пример кода, который я использовал:
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioPlayer play];
Добавлена ли клавиша "Требуемый фоновый режим" в info.plist ... Если нет, попробуйте добавить это ... Перейдите к файлу info.plist и нажмите «Добавить» в этом добавлении «Требуемые фоновые режимы», нажмите маленький треугольник, и вы получите item0 в этом добавлении «Приложение воспроизводит аудио» ... Это прекрасно работает ...
~ Равираджа
У меня это сработало даже на устройстве.
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioPlayer play];
Это и настройка ключа info.plist для включения фонового звука - это то, что необходимо для включения фонового воспроизведения звука в приложении iPhone. Однако, если вы хотите воспроизвести последовательность аудиофайлов, вам нужно будет выполнять каждую операцию воспроизведения как фоновую задачу, например:
UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:nil];
Выполните необходимые операции:
[[UIApplication sharedApplication] endBackgroundTask:bgTask];