2013-02-14 3 views
1

В соответствии с нашим требованием мы должны воспроизводить звук, даже если приложение находится в фоновом режиме. Мы используем [AVAudioPlayer Play] для воспроизведения звука.AVAudioPlayer Воспроизведение в фоновом режиме

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

Мы уже прошли через многие ссылки, добавили фоновые режимы в plist, а также добавили [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];, но все не получилось.

Просьба указать, есть ли другие альтернативы.

+0

возможно дубликат [AVAudioPlayer играть файл в фоновом режиме] (http://stackoverflow.com/questions/7965419/avaudioplayer-play-file-in-background) – Shubhank

ответ

3

Для воспроизведения аудио в фоновом режиме просто добавьте в ваш info.plist сделать массив как этот enter image description here

и проверить его в реальное устройство не в тренажере

+0

Если вы читаете вопрос правильно, у меня уже есть что ... – Sagrian

11

Просто добавьте эти три строки, где вы инициализации AVAudioPlayer «s пример:

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mySong" ofType:@"mp3"]]; 

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 

// These lines need to be added: 

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
[[AVAudioSession sharedInstance] setActive: YES error: nil]; 
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

[audioPlayer play]; 
2

Попробуйте это,

AppDelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    __block UIBackgroundTaskIdentifier task = 0; 
    task=[application beginBackgroundTaskWithExpirationHandler:^{ 
    NSLog(@"Expiration handler called %f",[application backgroundTimeRemaining]); 
    [application endBackgroundTask:task]; 
    task=UIBackgroundTaskInvalid; 
    }]; 
} 
Смежные вопросы