我正在创建一个仅执行呼出电话的CallKit应用。
我们正在做自己的界面,而不使用内置的UI。
我需要在屏幕上放置一个扬声器按钮,该按钮将从扬声器/无扬声器模式切换。

我遵循了Apple的准则和示例CallKit代码,并且
它似乎运作良好。

我找不到有关如何在扬声器模式之间切换的更多信息。我正在使用以下功能更改音频路由。
有人有这样做的经验吗?这项工作可靠吗?

func speaker(on: Bool) {
    let audioSession = AVAudioSession.sharedInstance()
    do {
        // not sure I need this ...
        try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
        if on {
            // does this trigger a change to the audio route?
            try audioSession.overrideOutputAudioPort(.speaker)
        } else {
            // is this how to switch back to the phone speaker?
            try audioSession.overrideOutputAudioPort(.none)
        }
    } catch {
        // Audio session change failure
        print("failed to change speaker phone")
    }
}

最佳答案

您需要在do块的末尾添加以下内容:audioSession.setActive(true)

10-07 21:31