我正在尝试使用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)")
}
}
如果有人能指出正确的方向,我将不胜感激。
编辑:我启用了音频的背景模式。
答案 0 :(得分:1)
稍微修改一下结构,现在可以使用了。我不确定是什么改变了想法。如果人们面临同样的问题。 -确保您对音频播放器保持强烈的参考。 -确保模式为.playback或.playAndRecord