2017-05-09 92 views
0

我正在使用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。

回答

0

所以我想清楚发生了什么。

在呼叫状态更改为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() 
     } 
    } 
}