我正在使用Linphone SDK构建安全的VoIP iOS应用程序。
我在应用启动时立即设置媒体加密:
linphone_core_set_media_encryption(theLinphone.lc, LinphoneMediaEncryptionZRTP)
我正试图像这样检索SAS:
linphone_call_get_authentication_token(Call.current())
大部分时间它返回零。但偶尔会返回一个十六进制值,如0x35422f6e6f697461
我甚至得到这个日志:
ortp-message-ZRTP secrets on: SAS is xxxx previously verified no
是“xxxx”正确的SAS。
答案 0 :(得分:0)
所以我弄清楚发生了什么。
我在呼叫状态更改为linphone_call_get_authentication_token(Call.current())
后立即呼叫LinphoneCallOutgoingProgress
。我需要做的就是修复它是为了启动一个Timer
,当呼叫状态变为LinphoneCallOutgoingProgress
时,每1秒调用一次方法,因为看起来需要一段时间才能生成SAS。这对我有用:
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {
DispatchQueue.main.async {
let sas = linphone_call_get_authentication_token(Call.current())
if sas != nil {
self!.sasLabel.text = String(cString: sas!)
timer.invalidate()
}
}
}