2017-05-09 12 views
0

Linphone SDK를 사용하여 안전한 VoIP iOS 앱을 구축하고 있습니다. 응용 프로그램이 시작될 때 Linphone에서 nil을 반환합니다. ZRTP SAS (인증 토큰)

나는 미디어 암호화를 오른쪽으로 설정 :

linphone_core_set_media_encryption(theLinphone.lc, LinphoneMediaEncryptionZRTP)

을 그리고 나는이 같은 SAS를 검색하려고 :

linphone_call_get_authentication_token(Call.current())

대부분의 시간은 전무를 반환합니다. ortp-message-ZRTP secrets on: SAS is xxxx previously verified no되는 "XXXX"올바른 SAS :하지만 가끔 내가 심지어이 로그를 얻을 0x35422f6e6f697461

같은 16 진수 값을 반환합니다.

답변

0

그래서 나는 무슨 일이 일어나고 있는지 알아 냈습니다.

통화 상태가 LinphoneCallOutgoingProgress으로 변경된 직후에 linphone_call_get_authentication_token(Call.current())으로 전화를 걸었습니다. 이 문제를 해결하기 위해해야 ​​할 일은 호출 상태가 LinphoneCallOutgoingProgress으로 변경 될 때마다 1 초마다 메소드를 호출하는 Timer을 시작하는 것입니다. 이는 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() 
     } 
    } 
}