如何在 Swift 中以编程方式使用主扬声器

How to use main speaker programmatically in Swift

我正在使用 webrtc 实现视频聊天。因为我想在其他参与者加入 session 时使用主扬声器。为此,我写了这段代码,但我的音量很低(意味着声音来自耳机)

func audioSetting() {
    RTCAudioSession.sharedInstance().isAudioEnabled = true
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(AVAudioSession.Category.playAndRecord, mode: .videoChat, options: [])

        if self.speakerOn {
            try session.overrideOutputAudioPort(.none)
        }
        else {
            try session.overrideOutputAudioPort(.speaker)
        }

        try session.setActive(true)
        self.speakerOn = !self.speakerOn
    }
    catch let error {
        print("Couldn't set audio to speaker: \(error)")
    }
}

我正在使用 socket.IO、

开发 webRTC
  func setSpeakerStates(enabled: Bool)
    {
        let session = AVAudioSession.sharedInstance()
        var _: Error?
        try? session.setCategory(AVAudioSession.Category.playAndRecord)
        try? session.setMode(AVAudioSession.Mode.voiceChat)
        if enabled {
            try? session.overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
        } else {
            try? session.overrideOutputAudioPort(AVAudioSession.PortOverride.none)
        }
        try? session.setActive(true)
    }

请在添加音频流和视频流后viewdidload结束时尝试此方法。