2016-06-07 12 views
1

ist es möglich, das WebRTC-Konzept in iOS-Anwendung mit Out-Use-API von Drittanbietern in unserer eigenen Server-URL zu integrieren.
Wenn es möglich ist, dann sagen Sie mir, wie wir die Verbindung konfigurieren, indem Sie Backend API verwenden oder können Sie es von unserer Anwendung selbst konfigurieren.WebRTC-Integration in iOS Mit OWN-Server

Unser Web-Team hat es bereits für den Browser integriert (mit Java Script) und jetzt versuchen wir, das Konzept in iOS zu integrieren.

Antwort

1

Sie können Ihre eigenen signaling server erstellen, damit Clients einen Anruf miteinander aushandeln können. Wie Sie dies tun möchten, liegt bei Ihnen, aber wir verwenden dafür node.js. Unsere Apps verbinden sich mit unserer node.js server über eine TCP socket.

Wenn unsere App einen Anruf tätigt, sendet sie ein Create-Signal an unsere signaling server. Der Server sendet dann eine voip push an den Angerufenen (wenn sich ein Benutzer anmeldet, registriert sich die App für voip push notifications und sendet es device id an die signaling server). Der Angerufene stellt eine Verbindung mit dem Server her und die Clients können mit dem Senden des Angebots beginnen und antworten SDP und ICE candidates.

Dies ist die Klasse, die wir für den WebRTC Teil des Aufrufs <Link removed> verwenden. Sie können diese Dateien in Ihrem Projekt löschen und eine viewcontroller darauf erweitern und die delegation implementieren. Für signaling müssen Sie Ihr eigenes System entwerfen, aber jeder ordentliche Programmierer sollte in der Lage sein, eine einfache signaling server zu erstellen.

Um die library zu Ihrem Projekt hinzuzufügen, empfehle ich cocoapods. Dann ist diese verwenden, um die library hinzuzufügen:

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 

Oder Sie können folgen the guide die library selbst zu kompilieren zur Verfügung gestellt.

Sie können mehr über die Verwendung von WebRTC nativ here lesen. Die Diagramme zeigen die Reihenfolge, in der Sie Ihre Signale implementieren müssen.Es ist nicht so schwer, wenn Client A Client B nennt, im Grunde Sie tun:

  • A schaffen die Peerconnection Fabrik
  • A eine Peerconnection
  • A erstellt einem lokalen Medienstrom
  • A erstellt ein Angebot erstellt SDP
  • A setzt das Angebot als lokale SDP
  • A beginnt ICE-Kandidaten zu erzeugen
  • A sendet ICE Kandidaten B, wie sie kommen *
  • A sendet das Angebot an B *
  • B die Peerconnection Fabrik
  • schafft B schafft eine Peerconnection
  • B setzt das Angebot als Fern SDP
  • B erzeugt einen lokalen Medienstrom
  • B schafft eine Antwort SDP
  • B stellt die Antwort als eine lokale SDP
  • B beginnt ICE Kandidaten
  • B ICE Erzeugen sendet Kandidaten A, wie sie kommen *
  • B die Antwort auf A *
  • A setzt die Antwort als Remote-SDP

* sendet Wenn Sie die Klasse I verknüpft verwenden, können Sie nur über diese kümmern Punkte

Beachten Sie, dass diese Klasse nur ein Ausgangspunkt ist, es ermöglicht keine Multi-User-Anrufe (nur 2 Peers) und hat nicht viele Funktionen.

+0

Wird Ihr 'BWRTCViewController' funktionieren, wenn ich eine P2P-Verbindung zwischen zwei Geräten im lokalen Netzwerk ohne Signalisierungsserver erstellen möchte? –

+1

@SashaKid Sie benötigen immer eine Art von Signalisierung, aber nicht unbedingt einen Signalisierungsserver. Wenn Sie sich in einem lokalen Netzwerk befinden, können Sie die SDPs und ICE-Kandidaten über einen Socket an eine fest codierte IP-Adresse ohne Server senden. Wenn Sie in der Lage sein möchten, denselben Code zu verwenden, wenn sich Ihre IP-Adressen ändern, benötigen Sie einen Server. – Kevin

+0

Danke! Könnten Sie einige Links dazu geben? Weil ich es noch nicht gefunden habe, wo die "vollen" Schritte beschrieben werden. Ich habe nur gefunden, 'libjingle_peerconnection' zu verwenden und habe nicht verstanden, dass Signalschritt fehlt :-) –

1

In JS ist es einfacher, weil der gesamte Beispielcode bereits von Google bereitgestellt wird. Wenn es um iOS geht, muss Ihr Server die Signalisierung bereitstellen, die für WebRTC benötigt wird, da es diese nicht enthält. Sie können die Verwendung von WebSockets/XMPP/SIPserver in Betracht ziehen. Als erstes kann ich die libjingle Bibliothek googlen, da WebRTC bereits für alle Architekturen kompiliert ist.