AVAudioSession setCategory总是返回错误

时间:2018-09-29 07:05:12

标签: ios swift avaudiosession

我正在开发音乐应用程序,该应用程序仅播放应用程序中的歌曲。现在我正在连接蓝牙扬声器播放。因此,我正在设置AVAudioSession类别,但它将始终返回错误。

代码:

 func setupSessionForPlaying() {
    let audioSession = AVAudioSession.sharedInstance()
    do {
        try audioSession.setCategory(AVAudioSessionCategoryPlayback, with: [.allowBluetooth])
        try audioSession.setActive(true)
    } catch {
        fatalError("Error Setting Up Audio Session")
    }
}

我在didFinishLaunchingWithOptions的{​​{1}}中调用此函数。

但是如果我将AppDelegate更改为setCategory,则可以正常工作。

有人知道这段代码有什么问题吗?

谢谢

2 个答案:

答案 0 :(得分:4)

根据文档 https://developer.apple.com/documentation/avfoundation/avaudiosession/categoryoptions/1616518-allowbluetooth

  

仅当音频会话类别为playAndRecord或record时,您才可以设置此选项。

使用 allowBluetooth 不能使用AVAudioSessionCategoryPlayback

希望这会有所帮助

答案 1 :(得分:2)

您不能将所有类别与所有选项混合使用。如上所述,here只能将.allowBluetooth用于类别playAndRecordrecord。所以我建议您尝试

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord,
                                                        with: [.allowBluetooth,
                                                               .allowBluetoothA2DP])

相反。