Linphone返回零ZRTP SAS(身份验证令牌)
问题描述:
我正在使用Linphone SDK构建安全的VoIP iOS应用程序。Linphone返回零ZRTP SAS(身份验证令牌)
我成立了媒体加密权当应用程序启动:
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。
答
所以我想清楚发生了什么。
在呼叫状态更改为LinphoneCallOutgoingProgress
后,我立即致电linphone_call_get_authentication_token(Call.current())
。我需要做的只是开始一个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()
}
}
}