我正在尝试使用webRTC和Callkit实现VoIP。在通话过程中,音频工作得非常好,但我想在用户启动通话(传出通话)时向用户播放声音。
当用户发起呼叫并等待收件人应答时,我想播放等待蜂鸣音(长蜂鸣音)。我可以不使用Callkit来播放声音,但当我通知Callkit一个拨出的电话时,它会以某种方式取消音频。我的假设是,它这样做是因为它IOS在呼叫开始时会使音频静音。
所以我的问题是,当Callkit处于活动状态时,如何播放mp3文件。或者这个等待的声音是不是集成在Callkit或WebRTC中了?
我在音频会议上乱翻了不同的类别,但到目前为止运气不佳。下面是我当前代码的摘要。

public var audioPlayer: AVAudioPlayer?

private init() {
    do {
        audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: Bundle.main.path(forResource: "dialring", ofType: "mp3")!))
        audioPlayer!.prepareToPlay()
        audioPlayer!.numberOfLoops = -1 //loop
    } catch {
        print(error.localizedDescription)
    }
}

func provider(_ provider: CXProvider, perform action: CXStartCallAction) {
    configureAudioSession()
    audioPlayer?.play()
}

func configureAudioSession() {
    print("Configuring audio session")
    let session = AVAudioSession.sharedInstance()
    do {
        try AVAudioSession.sharedInstance().setCategory(.playAndRecord, options: [.mixWithOthers])
        try session.setMode(AVAudioSession.Mode.voiceChat)
    } catch (let error) {
        print("Error while configuring audio session: \(error)")
    }
}

如果有人能指点我正确的方向,我将不胜感激。
编辑:我已启用音频背景模式。

最佳答案

把结构弄得乱七八糟,现在它开始工作了。我不确定是什么改变了想法。如果人们面临同样的问题。
-确保你对音频播放器有很强的参考价值。
-确保该模式处于.playback或.playAndRecord

关于swift - 使用Callkit时如何播放声音,如响起的哔哔声?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56253731/

10-10 21:09