ios - AVAudioSession setCategory .allowBluetooth导致崩溃

标签 ios swift avaudiosession

我正在编写一个使用AVAudioSession记录用户音频的应用程序。当我不向选项中添加蓝牙时,所有功能都运行良好,但我也希望能够使用AirPods进行录制。当我添加.allowBluetooth选项时,它会导致崩溃,并且不再起作用。

        do {
            let session = AVAudioSession.sharedInstance()
            try session.setCategory(.record, mode: .default, options: [.defaultToSpeaker, .allowBluetooth])
            try session.setActive(true)
        } catch let error as NSError {
            print(error.localizedDescription)
            return
        }

有什么建议吗?我浏览了许多与该主题相关的SO帖子,却发现没有什么可以解决我的问题。

最佳答案

您得到的错误代码-50,表明参数无效。

这是因为 .defaultToSpeaker 选项只能与playAndRecord类别一起使用:

您可以仅在使用playAndRecord类别时设置此选项。它用于修改类别的路由行为,以便在不使用其他附件(例如耳机)的情况下,始终将音频路由到扬声器而不是接收器。

因此,请删除此选项或使用playAndRecord类别。

关于ios - AVAudioSession setCategory .allowBluetooth导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60592792/

相关文章:

ios - 如何在文本字段上弹出datePicker单击并在编辑完成后消失

ios - 哪一个是初始化 NSMutableDictionary 的正确方法。请任何人在这里纠正我

ios - 我的 UIlabel 没有更新,我想让它更新移动车辆或自行车等的速度?

ios - Segue 屏幕返回主屏幕后,在哪里放置代码来填充 UITextfield(标题字段)?

ios - 后台播放音乐 : AVAudioSessionInterruptionNotification not fired

ios - 应用程序在静音模式下播放声音-Xcode

ios - 如何在 LiveCode 中使用 mergMK 创建可点击的 POI?

ios - UILabel 新文本值未在 XCUITest 内更新

ios swift 2 如何用 json 数据填充 uipickerview

ios - 如何从 AVAudioSessionCategory 中删除 AVAudioSessionCategoryOptions?