iphone: воспроизведение аудио-плейлиста в фоновом режиме?

Я пытаюсь воспроизвести последовательность аудиофайлов в фоновом режиме с помощью 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, что означает, что оно не может воспроизводиться. Так что ты думаешь?


ОБНОВИТЬ

После некоторого тестирования кажется, что он продолжает играть правильно, только если устройство заблокировано, но если пользователь нажимает кнопку домой, и приложение переходит в фоновый режим, проблема все еще остается


person Alex1987    schedule 21.07.2010    source источник
comment
Небольшая помощь для вас: stackoverflow.com/questions/3161635/   -  person iwasrobbed    schedule 21.07.2010
comment
Да, я смотрел эту ветку раньше, и часть моего кода взята оттуда. по какой-то причине AVAudioPlayer отказывается воспроизводить новую дорожку, когда он находится в фоновом режиме.   -  person Alex1987    schedule 21.07.2010
comment
@IWasRobbed - похоже, у вас была аналогичная проблема. вы можете опубликовать часть своего кода? Спасибо   -  person Alex1987    schedule 22.07.2010
comment
Я был связан с другими вещами, поэтому я не мог работать над этим проектом. Исходный источник этой информации также разместил это обсуждение devforums.apple.com/message/239381 .. Может быть, это поможет вам больше.   -  person iwasrobbed    schedule 22.07.2010
comment
Да, я смотрел на это, но все еще не могу решить проблему   -  person Alex1987    schedule 23.07.2010


Ответы (1)


РЕШЕНИЕ

Просто добавьте [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; и другие хитрости. Это все здесь

https://devforums.apple.com/message/264397

person Alex1987    schedule 25.07.2010
comment
абсолютная палочка-выручалочка! я уже полтора дня гуглил :) - person kritzikratzi; 19.07.2012
comment
ссылка на объяснение не работает - person Shaybc; 14.04.2016