iOS-SDK
Übersicht
Mit dem iOS SDK können Sie vonage Video API-gestützte Videositzungen in Apps für iPad, iPhone und iPod touch-Geräte nutzen.
Die Vonage Video API iOS SDK-Referenz finden Sie hier hier.
Wichtige Hinweise:
- Version 2.29.0+ des SDK unterstützt iOS 15 oder höher
- Änderungen am iOS 14-Netzwerk, die sich auf weitergeleitete Sitzungen auswirken - siehe die Liste der bekannte Probleme in den Versionshinweisen
- Probleme bei der Verwendung des Simulators zur Vorschau Ihrer Anwendung auf einem Mac mit M1-Chip - siehe die Liste der bekannte Probleme in den Versionshinweisen
Alle Applikationen, die die Vonage Video API nutzen, bestehen aus zwei Teilen:
- Die Client-Seite, die die Vonage Video-Client-SDKs und läuft im Browser oder in der mobilen Anwendung des Nutzers
- Die Serverseite, die die Vonage Video-Server-SDKs und läuft auf Ihrem Server, um Authentifizierungsinformationen an den Client weiterzugeben
Das iOS Client SDK stellt die meisten Kernfunktionen für Ihre App bereit, darunter:
- Verbinden mit der Sitzung
- Veröffentlichen von Streams in einer Sitzung
- Abonnieren von Streams in einer Sitzung
Client-SDKs sind auch für Web, Android, iOS, Windows, macOS, Linux und React Native verfügbar. Alle Client-SDKs können miteinander interagieren.
Mehr über die Grundlagen von Clients, Servern, Sitzungen und mehr erfahren Sie in der Video API-Grundlagen Seite.
Lernen, wie man mit dem iOS SDK baut
Der beste Weg, um die Verwendung des iOS SDK zu erlernen, ist, die Grundlegendes Video-Chat-Tutorial.
Sobald Sie die Grundlagen der Erstellung mit dem Vonage iOS SDK verstanden haben, können Sie detailliertere Informationen erhalten und lernen, wie Sie Ihre Anwendung mit dem Vonage Entwicklerhandbücher. Um bestimmte API-Klassen und -Methoden zu untersuchen, siehe die Vonage iOS SDK API-Referenzhandbuch.
Interoperabilität
Apps, die mit dem Vonage iOS SDK 2.32.1 geschrieben wurden, können mit Vonage Apps interagieren die mit der Version 2.30+ des Vonage Client SDKs geschrieben wurden:
- Web-SDK (OpenTok.js)
- Android-SDK
- Windows-SDK
- macOS-SDK
- Linux-SDK
- React Native SDK
Client-SDKs gibt es auch für Web, Android, Windows, macOS, Linux und React Native. Alle Client-SDKs können miteinander interagieren. Mehr über die Grundlagen von Vonage Video-Clients, Servern, Sitzungen und mehr erfahren Sie auf der Video API-Grundlagen Seite.
Verwendung des SDK
Das iOS-SDK ist verfügbar als CocoaPods Pod OTXCFramework, das als XCFramework verteilt wird. Wenn Sie kein XCFramework verwenden können, muss das OpenTok pod wurde als Universal-FAT-Framework vertrieben, wird aber nicht mehr aktualisiert. Das iOS-SDK ist auch verfügbar als Swift-Paketmanager Paket, VonageClientSDKVideo. Sie können das Paket installieren, indem Sie die https://github.com/vonage/vonage-video-client-sdk-swift.git Repository als eine Swift-Paketabhängigkeit.
Die aktuelle Version des iOS SDK erfordert Xcode 10 oder höher. Für das iOS SDK sind die folgenden Frameworks und Bibliotheken erforderlich:
- AudioToolbox.framework
- AVFoundation.framework
- CoreGraphics.framework
- CoreMedia.framework
- KernTelefonie.framework
- CoreVideo.framework
- Stiftung.framework
- GLKit.framework
- libc++.tbd (libc++.dylib vor Xcode 7)
- libsqlite3++.tbd (libsqlite3.dylib vor Xcode 7)
- Metall.Rahmen
- MetalKit.framework
- MetalPerformanceShaders.framework
- OpenGLES.framework
- QuartzCore.framework
- SystemConfiguration.framework
- UIKit.framework
- VideoToolbox.framework
Verwenden Sie die -force_load Linker-Flag, um bestimmte Bibliotheken zu laden, die es benötigen, wird dies für Sie erledigt, wenn Sie das SDK über CocoaPods oder Swift Package Manager hinzufügen.
Das iOS SDK verweist auf die libc++-Standardbibliothek. Wenn eine andere Bibliothek, die mit der libc++-Standardbibliothek verknüpft ist, in einer Version von Xcode kompiliert wurde, die älter als 6.0.0 ist, kann dies bei der Verwendung mit dem iOS SDK zu Seg-Fehlern zur Laufzeit führen. Bekannte inkompatible Bibliotheken sind unter anderem Firebase (Versionen vor 2.1.2 - siehe https://code.google.com/p/webrtc/issues/detail?id=3992 und Google Maps (Versionen früher als 1.9.0). Um dieses Problem zu beheben, laden Sie eine Version der anderen Bibliothek herunter, die mit Xcode 6.0.0 oder höher kompiliert wurde. Siehe die Versionshinweise für Informationen über die neueste Version des SDK und für eine Liste bekannter Probleme.
Um auf die Kamera und das Mikrofon zugreifen zu können, müssen Sie in iOS 10 die Werte für die NSCameraUsageDescription und NSMicrophoneUsageDescription Schlüssel in der Datei Info.plist. Diese definieren Zeichenketten, die im App-Installationsprogramm erscheinen, um den Benutzer zu informieren, warum Ihre App die Kamera und das Mikrofon verwendet.
Für weitere Informationen siehe die Apple-Dokumentation über Cocoa-Tasten.
Siehe dieses Dokument für Informationen zur Verwendung des SDK in Anwendungen, die im Hintergrundmodus laufen.
Einstellungen des Datenschutzmanifests
Version 2.25.5 und neuer des SDK unterstützt die Datenschutzmanifest die vom App Store von Apple verlangt werden. Wenn Sie diese Versionen des SDK verwenden, werden die erforderlichen Einstellungen zum Schutz der Privatsphäre automatisch hinzugefügt, wenn Sie den Datenschutzbericht für Ihre Anwendung erstellen. Wenn Sie eine ältere Version des SDK verwenden müssen, können Sie die erforderlichen Datenschutzeinstellungen manuell auf der Grundlage der Einstellungen in diesem Datei in die Datenschutz-Manifestdatei Ihrer Anwendung einfügen.
CallKit
CallKit ist ein Framework, mit dem iOS-Apps ihre Integration mit dem Betriebssystem verbessern können, sodass die App in der Lage ist:
- Benachrichtigung über eingehende oder ausgehende Anrufe an das OS
- Starten Sie die App mit einer VoIP-Push-Benachrichtigung (nur wenn Sie die Benutzeroberfläche für eingehende Anrufe anzeigen möchten)
- Audio-Routing handhaben
- Koordinieren Sie die Audiositzungen zwischen allen laufenden Anwendungen
- Audio-Ausgangspegel erhöhen
- Anzeige von Steuerelementen für Anrufe in einer Benachrichtigung und einer eigenen Benutzeroberfläche für Anrufe
Vonage Video bietet zwei Möglichkeiten der Integration mit CallKit:
- Einrichten einer
CustomAudioDevicedie dieAudioSessionAktivierungen. Siehe diese Probe. - Aktivieren Sie den Anrufdienstmodus mit
OTAudioDeviceManager.currentAudioSessionManager(). Die vom Audiositzungsmanager zurückgegebene Instanz sollte zur Konfiguration der Audiositzung und zur Benachrichtigung des SDK über Aktivierungen und Deaktivierungen von Audiositzungen verwendet werden. Siehe diese Probe.
Wenn Ihre Anwendung über Anwendungsereignisse, wie z. B. eingehende Anrufe, benachrichtigt werden muss, ist der Entwickler für die Implementierung verantwortlich. Wir empfehlen die Verwendung des PushKit Rahmen und VoIP-Push-Benachrichtigungen. Als Referenz, siehe diese Probe.
Die native Vonage Video-Integration setzt voraus, dass der Entwickler den Anrufdienstmodus bereits beim Start der App aktiviert.
VoIP-Push-Benachrichtigungen erfordern einen Anruf bei CXProvider.reportNewIncomingCall innerhalb von 3 Sekunden, sonst kann die App abstürzen. In diesem Zeitrahmen sollte die App die SDK CallKit-Unterstützung konfigurieren, bevor die CXAnswerCallAction Rückruf ausgeführt wird.
Um den Modus der aufrufenden Dienste zu aktivieren, rufen Sie den folgenden Code in Ihrer Anwendung auf application:didFinishLaunchingWithOptions: Methode.
let sessionManager = OTAudioDeviceManager.currentSessionManager()
sessionManager?.enableCallingServicesMode()
Konfigurieren Sie die AVAudioSession im CXStartCallAction oder CXAnswerCallAction CXProvider Rückrufe.
Verwenden Sie den Video-Chat-Modus für Videoanrufe oder den Voice-Chat für reine Audioanrufe.
sessionManager?.preconfigureAudioSessionForCall(withMode: .videoChat)
sessionManager?.preconfigureAudioSessionForCall(withMode: .voiceChat)
Benachrichtigung des Sitzungsmanagers über Aktivierungen und Deaktivierungen von Audiositzungen.
func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) {
sessionManager?.audioSessionDidActivate(audioSession)
}
func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) {
sessionManager?.audioSessionDidDeactivate(audioSession)
}
Prüfen Sie die CallKit-Dokumentation für Entwickler für weitere Informationen.
iOS 14 Netzwerkänderungen mit Auswirkungen auf weitergeleitete Sitzungen
Mit iOS 14 führt Apple den Datenschutz im lokalen Netzwerk ein (siehe dieses Video).
Ab iOS 14 wird das Betriebssystem den Benutzer um Erlaubnis bitten wenn eine Anwendung versucht, sich bei Clients im selben lokalen Netzwerk in einem weitergeleitete Sitzung. Der Standardtext in der Benachrichtigung besagt, dass die App "Geräte in Ihrem lokalen Netzwerk finden und verbinden zu Geräten in Ihrem lokalen Netzwerk herstellen möchte".
Bei einer weitergeleiteten Sitzung verwendet die Vonage Video API das lokale Netzwerk, um die und verbindet sich, wenn möglich, mit Videoteilnehmern in Ihrem lokalen Netzwerk. Wenn Clients keine Verbindung über das lokale Netzwerk herstellen können, verwendet eine Anwendung den OpenTok TURN-Server für die Weiterleitung von Audio- und Videoströmen.
Lehnt der Benutzer die Erlaubnis ab, kann der Versuch, sich zu abonnieren, fehlschlagen wenn der Client keine Verbindung zum OpenTok TURN-Server herstellen kann. In diesem Fall, nachdem die Erlaubnis abgelehnt wurde, werden alle zukünftigen Versuche, sich bei Clients Clients im selben Netzwerk ebenfalls fehlschlagen, es sei denn, der Benutzer ändert die Erlaubnis in den Einstellungen. Leider stellt iOS keine API zur Verfügung, mit der eine Anwendung feststellen kann, ob der Benutzer diese Erlaubnis akzeptiert oder abgelehnt hat.
Es ist wichtig zu beachten, dass dies nicht für Videositzungen gilt, bei denen die Medien-Router, da die Medien über das Internet und nicht über das lokale Netz übertragen werden.
Wenn Ihre Anwendung eine weitergeleitete Sitzung verwendet, empfehlen wir Ihnen, einen beschreibenden benutzerdefinierte Zeichenfolge hinzuzufügen, um den Benutzer darüber zu informieren, warum die Anwendung diese Berechtigung benötigt:
Öffnen Sie in Xcode die Datei "info.plist" Ihrer Anwendung.
Klicken Sie im info.plist-Editor mit der rechten Maustaste auf die linke Spalte und wählen Sie Zeile hinzufügen (oder klicken Sie +), um eine Einstellung hinzuzufügen für Datenschutz - Nutzung des lokalen Netzwerks Beschreibung.
Bearbeiten Sie den Wert für diese Zeichenfolge, um zu beschreiben, wie Ihre Anwendung diese Berechtigung verwendet. Fügen Sie beispielsweise Folgendes hinzu: "Diese App verwendet das lokale Netzwerk, um Videoteilnehmer im selben Netzwerk zu finden und mit ihnen zu verbinden, wenn möglich. Videoteilnehmern im selben Netzwerk zu suchen und zu verbinden, wenn möglich.
Die Aufforderung an den Benutzer wird diese Beschreibung enthalten.
Für Applikationen, die keine gerouteten Sitzungen verwenden können und nicht möchten, dass der Benutzer nicht nach einem lokalen Netzzugang gefragt werden sollen, können Sie eine der Optionen in den folgenden Abschnitten.
Überspringen von Prüfungen des lokalen Netzwerks zur Herstellung der Medienkonnektivität
Sie können die OTSessionICEConfig.filterOutLanCandidates Eigenschaft, um die Anwendung zu zwingen, nicht das
lokales Netzwerk zu verwenden, um die Verbindung herzustellen, wie im folgenden Code.
let settings = OTSessionSettings()
let myICEServerConfiguration = OTSessionICEConfig()
myICEServerConfiguration.filterOutLanCandidates = true
settings.iceConfig = myICEServerConfiguration
let session = OTSession(applicationId: applicationId, sessionId: sessionId, delegate: self,
settings: settings)
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.filterOutLanCandidates = YES;
settings.iceConfig = myICEServerConfiguration;
session = [[OTSession alloc] initWithApiKey:kApplicationId
sessionId:kSessionId
delegate:self settings:settings];
Anmerkung: Die OTSessionICEConfig.filterOutLanCandidates Eigenschaft ist im Vonage Video iOS SDK Version 2.30.0 und höher verfügbar.
TURN-Server verwenden
Sie können die OTSessionICEConfig.transportPolicy
um die Anwendung zu zwingen, TURN-Server für den Verbindungsaufbau zu verwenden,
wie im folgenden Code.
let settings = OTSessionSettings()
let myICEServerConfiguration = OTSessionICEConfig()
myICEServerConfiguration.transportPolicy = .relay
settings.iceConfig = myICEServerConfiguration
let session = OTSession(applicationId: applicationId, sessionId: sessionId, delegate: self,
settings: settings)
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.transportPolicy = OTSessionICETransportRelay;
settings.iceConfig = myICEServerConfiguration;
session = [[OTSession alloc] initWithApiKey:kApplicationId
sessionId:kSessionId
delegate:self settings:settings];
Systemanforderungen
Das Vonage iOS SDK wird von iOS 15 oder höher unterstützt. Prüfen Sie die Liste der unterstützten Geräte für iOS 15 hier
Das Vonage iOS SDK wird für Wi-Fi-, 4G/LTE- und 5G-Verbindungen unterstützt.
Beispiel-Apps
Für Muster besuchen Sie unser Swift Beispielanwendung Repo oder Objective-C-Beispielanwendung Repo auf GitHub.
Dokumentation
Eine ausführliche Dokumentation der einzelnen iOS-Methoden finden Sie in der Referenzhandbuch.
Weitere Informationen
Eine Liste der neuen Funktionen und bekannten Probleme finden Sie in der Versionshinweise.