【发布时间】:2017-04-29 04:24:37
【问题描述】:
我正在将 CallKit 与 VOIP 应用程序集成。我能够拨打和拨打电话。我按照以下步骤操作:
- 配置音频会话
- 在 (didActivate) 中启动音频
- stopAudio in (didDeActivate)
我已经实现了 DTMF 提供者委托的回调,如下所示:
func provider(_ provider: CXProvider, perform action: CXPlayDTMFCallAction) {
print("Provider - CXPlayDTMFCallAction")
let dtmfDigts:String = action.digits
for (index, _) in dtmfDigts.characters.enumerated() {
let dtmfDigit = dtmfDigts.utf8CString[index]
print("Processing dtmfDigit:\(dtmfDigit)" )
self.softphone.dtmf(on:dtmfDigit)
}
self.softphone.dtmfOff()
// Signal to the system that the action has been successfully performed.
action.fulfill()
}
当我在通话过程中按本机通话界面上的数字时,我没有听到按键声音,即本地 dtmf 声音。
来自https://developer.apple.com/reference/callkit/cxplaydtmfcallaction:
"CallKit 自动播放对应的 DTMF 频率 通过呼叫传输的任何数字。该应用程序负责 管理数字的计时和处理,作为完成任务的一部分 行动。”
这是一个已知问题还是 callkit 不播放本地 dtmf 按键声音?
【问题讨论】:
-
“本地拨号器”是指电话应用程序中的“键盘”选项卡,还是本地通话界面中显示的“键盘”按钮?
-
@StuartM 是的,原生通话界面。
-
@ssk 什么是 self.softphone,它是如何在 callkit 的 ProviderDelegate.swift 中实现的,以及如何在自定义拨号器 UI 上发送按下的数字以进行 IVR 处理。
-
@ParthBarot elf.softphone 是 PJSIP 的 pjsua 库的包装器。