当应用程序转到后台时,AVAudioPlayer无法播放

时间:2014-01-27 11:48:52

标签: ios iphone objective-c ios7 avaudioplayer

我正在试用AVFoundationFramework

目前我可以在前台运行AVAudioPlayer。 当应用程序转到后台时,AVAudioPlayer无法继续播放。

具体实施步骤如下:

  1. 将后台任务添加到.plist

    enter image description here

  2. 设置AVAudioPlayer

    self.objAVAudioPlayer = [[AVAudioPlayer alloc]initWithData:mp3Data error:&error];
    self.objAVAudioPlayer.delegate = self;
    
  3. 设置AVAudioSession

    if([self.objAVAudioPlayer prepareToPlay])
    {
        AVAudioSession *objAVAudioSession = [AVAudioSession sharedInstance];
        [objAVAudioSession setCategory:AVAudioSessionCategoryPlayback error:&error];
        [objAVAudioSession setActive:YES
                                         error:nil];
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        [self.objAVAudioPlayer play];
    }
    
  4. 当应用程序恢复时,它会从它辞职的完全相同的地方开始。

    基础SDK为iOS 7.0

    知道我错过了什么吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

要在后台模式下播放音频,您应设置AVAudioSession并添加此代码

UIBackgroundTaskIdentifier backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^{
    [application endBackgroundTask:backgroundTask]; //Tell the system that we are done with the tasks
    backgroundTask = UIBackgroundTaskInvalid; //Set the task to be invalid
 }];

进入方法

中的AppDelegate.m课程
- (void)applicationDidEnterBackground:(UIApplication *)application {
    //Some code
}