Ala*_*rpa 5 avaudioplayer twilio ios swift
我有一个使用 Twilio 的 VoIP 视频聊天应用程序,我正在尝试为拨打电话的用户播放回铃音。但每当didActivate:audioSession被呼叫时,我的 AVAudioPlayer 就会停止,导致回铃音只播放一会儿。Callkit 已激活音频会话时如何继续播放回铃音?这是我的代码:
func configure() {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, mode: AVAudioSessionModeVideoChat, options: [.mixWithOthers, .allowBluetooth, .defaultToSpeaker])
} catch {
print(error.localizedDescription)
}
let configuration = CXProviderConfiguration(localizedName: "Thirty")
configuration.maximumCallGroups = 1
configuration.maximumCallsPerCallGroup = 1
configuration.supportsVideo = true
configuration.supportedHandleTypes = [.generic]
if let callKitIcon = UIImage(named: "callkitIcon") {
configuration.iconTemplateImageData = UIImagePNGRepresentation(callKitIcon)
}
callKitProvider = CXProvider(configuration: configuration)
callKitProvider?.setDelegate(self, queue: nil)
let path = Bundle.main.path(forResource: "ringbackMorningSong.mp3", ofType:nil)!
let url = URL(fileURLWithPath: path)
ringbackAudioPlayer = try? AVAudioPlayer(contentsOf: url)
ringbackAudioPlayer?.numberOfLoops = -1
ringbackAudioPlayer?.prepareToPlay()
}
Run Code Online (Sandbox Code Playgroud)
然后,当用户点击“拨打电话”按钮时,ringbackAudioPlayer 开始播放。
然后CXStartCallAction执行。然后didActivate:audioSession被呼叫,这是我的回铃音停止的地方。
小智 1
可能不是最好的解决方案,但我通过在participantDidConnect方法(twilio)中添加CXStartCallAction(call:uuid,handle:callHandle)解决了这个问题。这样,AVAudioPlayer 就不会被 CallKit 打断,并且在其他用户连接后您也不需要 AVAudioPlayer 声音。
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |