Фоновая задача AVAudioPlayer не работает на устройстве iOS 5.0.1, но работает на симуляторе iOS 5 - PullRequest
2 голосов
/ 19 декабря 2011

Я делаю пример приложения, которое воспроизводит песню, и эта песня будет воспроизводиться, даже если приложение переходит в фоновый режим.

В симуляторе iOS 5 xcode он по-прежнему воспроизводит песню, когда приложение переходит в фоновый режим, но при запуске на устройстве iOS 5.0.1 iPad2 приложение перестает воспроизводить звук, когда оно переходит в фоновый режим. Ниже приведен код для воспроизведения песни и выполнения фонового задания. Вы сталкиваетесь с такой проблемой в iOS 5.0.1? или я что-то упустил в коде? Но мне интересно, как это работает в симуляторе?

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSURL *url=[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"01-Track" ofType:@"mp3"]];
    NSError *error;
    audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
    if(error)
    {
        NSLog(@"Error in audio palyer: %@", [error localizedDescription]);
    }
    else
    {
        audioPlayer.delegate =self;
        [audioPlayer prepareToPlay];
        trackControl.maximumValue=[audioPlayer duration];
        trackControl.value=0.0;

        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
        [[AVAudioSession sharedInstance] setActive: YES error: nil];
    }
}
-(IBAction)playAudio:(id)sender
{
     UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
     if([audioPlayer play]){
      newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
}

Спасибо!

1 Ответ

2 голосов
/ 31 января 2012

Чтобы аудио продолжало работать в фоновом режиме, вы должны добавить ключ с именем Необходимые фоновые режимы в ваш info.plist со значением Приложение воспроизводит аудио . Но его использование не очень поощряетсяяблоком, если это не является абсолютно необходимым.

...