2016-06-07 39 views
1

是否有可能將iOS應用程序中的WebRTC概念與我們自己的服務器URL中的未使用第三方API集成。
如果有可能,那麼通過使用Backend API告訴我們如何配置連接,或者我們可以從我們的應用程序本身配置它。iOS中的WebRTC集成使用OWN服務器

我們的Web團隊已經將它集成到了瀏覽器中(通過使用Java Script),現在我們正試圖將這個概念集成到iOS中。

回答

1

您可以自己製作signaling server以允許客戶彼此協商通話。你想如何做到這一點取決於你,但我們使用node.js。我們的應用程序通過TCP socket連接到我們的node.js server

當我們的應用程序撥打電話時,它向我們的signaling server發送創建信號。服務器然後發送voip push給被調用者(當用戶登錄時,應用程序註冊爲voip push notifications並將其device id發送到signaling server)。被叫方連接到服務器,客戶端可以開始發送優惠,並回答SDPICE candidates

這是我們用於呼叫<Link removed>WebRTC部分的類。您可以將這些文件放在您的項目中並在其上擴展viewcontroller並實施delegation。對於signaling,您將不得不設計自己的系統,但任何正規的程序員都應該能夠創建一個簡單的signaling server

要將library添加到您的項目中,我建議您使用cocoapods。然後用它來添加library

target 'your_project_here' do 
    pod 'libjingle_peerconnection' 
    post_install do |installer_representation| 
    installer_representation.pods_project.targets.each do |target| 
     target.build_configurations.each do |config| 
     config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' 
     config.build_settings['VALID_ARCHS'] = ['armv7', 'arm64'] 
     end 
    end 
    end 
end 

也可以按照the guide提供自己編譯的library

你可以閱讀更多關於WebRTC本機here。這些圖表顯示了您必須執行信號的順序。這並不難,當客戶A調用客戶端B,基本上你做:

  • A創建PeerConnection等工廠
  • A創建了一個PeerConnection等
  • A創建了一個本地媒體流
  • A創建報價SDP
  • A使報價爲本地SDP
  • A開始產生ICE候選人
  • A發送ICE考生爲B,因爲他們來*
  • A發送提議B *
  • B創建的PeerConnection這幾個工廠
  • B創建一個PeerConnection等
  • B將提議作爲遠程SDP
  • B創建的本地媒體流
  • B創建一個答案SDP
  • B將回答作爲本地SDP
  • B發送ICE開始生成ICE候選應聘到一家,因爲他們來*
  • B發送答案A *
  • A使答案爲遠程SDP

*如果您使用我鏈接的類,你只需要擔心這些要點

請注意,這個類只是一個起點,它不允許多用戶呼叫(只有2個對等點),並沒有太多功能。

+0

如果我想在本地網絡中的兩臺設備之間創建p2p連接而不使用信號服務器,您的'BWRTCViewController'工作嗎? –

+1

@SashaKid您將始終需要某種信號,但不一定是信令服務器。如果你在本地網絡上,你可以通過套接字將SDP和ICE候選者發送到硬編碼的IP地址而無需服務器。如果你想在你的IP地址改變的時候繼續使用相同的代碼,你需要一臺服務器。 – Kevin

+0

謝謝!你能給一些關於它的鏈接嗎?因爲我還沒有發現它在描述「完整」步驟的地方。我只發現瞭如何使用'libjingle_peerconnection'並且不知道信號的步驟丟失:-) –

1

在JS中更容易,因爲所有示例代碼都已由Google提供。雖然涉及到iOS,但您的服務器必須提供WebRTC所需的信號,因爲它不包含它。你可以考慮使用WebSockets/XMPP/SIPserver。我可以推薦的第一件事是使用Google搜索libjingle庫,因爲它已經爲所有體系結構編譯了WebRTC。