iphone: воспроизведение аудио плейлиста в фоновом режиме? - PullRequest
6 голосов
/ 21 июля 2010

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


UPDATE

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

1 Ответ

9 голосов
/ 26 июля 2010

РЕШЕНИЕ

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

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

...