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.
Wird Ihr 'BWRTCViewController' funktionieren, wenn ich eine P2P-Verbindung zwischen zwei Geräten im lokalen Netzwerk ohne Signalisierungsserver erstellen möchte? –
@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
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 :-) –