使用 AVAudioPlayer iOS 9 无法在后台播放音频

Posted

技术标签:

【中文标题】使用 AVAudioPlayer iOS 9 无法在后台播放音频【英文标题】:Audio not playing in background using AVAudioPlayer iOS 9 【发布时间】:2017-08-04 07:34:00 【问题描述】:

在前台播放时,使用 AVAudioPlayer ios 9 不会在后台播放音频。

我已经在 Info.plist 中设置了必需的背景模式应用使用 AirPlay 播放音频或流式传输音频/视频

我还在 Capabilities

中检查了 Audio, Background fetch

使用代码:

@property (nonatomic, strong) AVAudioPlayer *ringtonePlayer;


    NSString *ringtonePath = [[NSBundle mainBundle] pathForResource:@"incoming" ofType:@"wav"];
    if ([ringtonePath length] <= 0) 
        NSLog(@"Can't find incoming sound file");
        return;
    

    self.ringtonePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:ringtonePath] error:nil];
    self.ringtonePlayer.delegate = self;
    self.ringtonePlayer.numberOfLoops = -1;


    NSError *error = nil;
    if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
                                                error:&error]) 
        NSLog(@"Unable to reroute audio: %@", [error localizedDescription]);
     else 
        [[AVAudioSession sharedInstance] setActive:YES error:&error];
    

    self.ringtonePlayer.volume = 1.0f;
    [self.ringtonePlayer play];

请帮忙,提前谢谢。

【问题讨论】:

【参考方案1】:

我使用以下代码在后台播放,不需要修改info.plist文件。

func setupPlayBackground()

        do 
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
            try AVAudioSession.sharedInstance().setActive(true)

         catch let error 

            print(error.localizedDescription)

        

    

【讨论】:

以上是关于使用 AVAudioPlayer iOS 9 无法在后台播放音频的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioPlayer 在 IOS 5 中无法正常工作

iOS 5.0 AVAudioPlayer 加载音频剪辑时出错:操作无法完成。 (OSStatus 错误 -50。)

AVAudioPlayer 后台任务无法在 iOS 5.0.1 设备上运行,但在 iOS 5 模拟器上运行

离开视图后无法使用 AVAudioPlayer 播放 AVAudioRecorder

AVAudioPlayer 无法播放 MP3 文件

AVAudioPlayer 无法在某些设备上播放