Я пытаюсь воспроизвести последовательность аудиофайлов в фоновом режиме с помощью AVAudioPlayer. Когда приложение не в фоновом режиме, оно играет хорошо, но когда приложение переходит в фоновый режим, оно не воспроизводит вторую песню.
Вот мой код:
-(void)playAudio:(NSString *)path{
NSURL *url = [NSURL fileURLWithPath:path];
NSError *error;
AVAudioPlayer *ap = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
ap.delegate = self;
mainController.audioPlayer = ap;
[ap release];
if (mainController.audioPlayer == nil)
NSLog([error description]);
else{
UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
[mainController.audioPlayer prepareToPlay];
if([mainController.audioPlayer play]){
newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
}
if (newTaskId != UIBackgroundTaskInvalid && bgTaskId != UIBackgroundTaskInvalid)
[[UIApplication sharedApplication] endBackgroundTask: bgTaskId];
bgTaskId = newTaskId;
}
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
NSLog(@"finished now next...");
[self playAudio:[self getNextAudio]];
}
Я отлаживал приложение, и мне кажется, что когда оно собирается воспроизвести вторую песню, [mainController.audioPlayer play] возвращает NO, что означает, что оно не может воспроизводиться. Так что ты думаешь?
ОБНОВИТЬ
После некоторого тестирования кажется, что он продолжает играть правильно, только если устройство заблокировано, но если пользователь нажимает кнопку домой, и приложение переходит в фоновый режим, проблема все еще остается