An einer Sitzung teilnehmen — iOS (Swift)

Mit einem Sitzungs-ID und Token, können Sie sich mithilfe des OpenTok-iOS-SDK mit der OpenTok-Sitzung verbinden.

Dieses Thema umfasst die folgenden Abschnitte:

Informationen zum Erstellen einer Sitzungs-ID und eines Authentifizierungstokens finden Sie unter Erstellung von Sitzungen und Token-Erstellung.

Initialisierung eines OTSession-Objekts

Bevor Sie eine Verbindung zu einer Sitzung herstellen können, instanziieren Sie ein OTSession-Objekt, indem Sie die OTSession init(apiKey:sessionId:delegate:) Methode mit Ihrem OpenTok-API-Schlüssel und der entsprechenden Sitzungs-ID:

// Replace kApiKey with your OpenTok API key:
// Replace kSessionId with an OpenTok session ID:
session = OTSession(apiKey: kApiKey, sessionId: kSessionId, delegate: self)

Beachten Sie, dass der Aufruf der OTSession init(apiKey: sessionId: delegate:) Methode nicht erstellen. eine OpenTok-Sitzung; dabei wird das Swift-Objekt „OTSession“ erstellt, das eine bestehende OpenTok-Sitzung repräsentiert. Sie erstellen eine OpenTok-Sitzung mithilfe der serverseitigen OpenTok-Bibliotheken. Siehe Eine OpenTok-Sitzung erstellen.

Implementieren Sie die Methoden des OTSessionDelegate-Protokolls in dem Objekt, das Sie als Delegatenobjekt angeben. Diese Methoden werden aufgerufen, wenn sitzungsbezogene Ereignisse auftreten.

Verbinden mit einer Sitzung

Rufen Sie die OTSession connect(withToken:error:) Methode und übergibt das Token für den Client:

var error: OTError?
session.connect(withToken: token, error: &error)

if let error = error {
	print("connect failed with error: \(error)")
}

Die OTSessionDelegate sessionDidConnect(_:) Die Nachricht wird gesendet, wenn der Client eine Verbindung zur OpenTok-Sitzung herstellt.

Die OTSessionDelegate session(_:didFailWithError:) wird gesendet, wenn ein Fehler beim Verbindungsaufbau auftritt. Siehe die Dokumentation für das OTSessionErrorCode enum für Beschreibungen der Werte der code Eigenschaft des Fehlerobjekts.

Überwachung des Verbindungsstatus

Sie können den Verbindungsstatus abfragen, indem Sie die sessionConnectionStatus Eigenschaft des OTSession-Objekts:

session.sessionConnectionStatus

Gültige Werte sind in der OTSessionConnectionStatus enum.

Sie können einen Key-Value Observer verwenden, um diese Eigenschaft zu überwachen. Allerdings muss der OTSessionDelegate sessionDidConnect(_:) und OTSessionDelegate sessionDidDisconnect(_:) Nachrichten werden an den Delegierten der Sitzung gesendet, wenn die Sitzung verbunden und getrennt wird.

Trennen der Verbindung zu einer Sitzung

Um eine Sitzung zu beenden, rufen Sie die Funktion OTSession disconnect(_:) Methode.

var error: OTError?
session.disconnect(&error)

if let error = error {
	print("disconnect failed with error: \(error)")
}

Erkennen, wenn Sie die Verbindung unterbrochen haben

Die OTSessionDelegate sessionDidDisconnect(_:) wird an den Delegierten der Sitzung gesendet, wenn die Sitzung getrennt wird.

Beachten Sie, dass Sitzungen automatisch unterbrochen werden, wenn die Anwendung angehalten wird.

Wenn die Verbindung zur Sitzung aufgrund eines Fehlers unterbrochen wird, der nach einer erfolgreichen Verbindung auftritt, wird die OTSessionDelegate session(_:didFailWithError:) Nachricht wird vor der OTSessionDelegate sessionDidDisconnect(_:) Nachricht. Die Aufzählung OTSessionErrorCode definiert die code Eigenschaft des OTError-Objekts, das an die Funktion OTSessionDelegate session(_:didFailWithError:) Meldung, in der der Grund für die Unterbrechung der Verbindung angegeben ist.

Automatische Wiedereinschaltung

Clients versuchen, automatisch wieder eine Verbindung zu einer Sitzung herzustellen, von der sie unerwartet getrennt wurden (beispielsweise aufgrund einer Unterbrechung der Netzwerkverbindung). Sie müssen keinen zusätzlichen Code hinzufügen, damit die Clients automatisch wieder eine Verbindung herstellen, es sei denn, Sie möchten auf Nachrichten reagieren, die gesendet werden, wenn Ihr Client die Verbindung trennt und wieder herstellt. Beispielcode zur Veranschaulichung der Verwendung dieser Ereignisse finden Sie unter openok-reconnection Repo auf GitHub.

Wenn die Verbindung unterbrochen wird und der Client versucht, die Verbindung wiederherzustellen, wird die OTSessionDelegate sessionDidBeginReconnecting(_:) Nachricht an den Delegierten des OTSession-Objekts gesendet. Wenn die Verbindung wiederhergestellt ist, wird die OTSessionDelegate sessionDidReconnect(_:) Nachricht gesendet wird. Wenn der Client die Verbindung nicht wiederherstellen kann, wird die OTSessionDelegate sessionDidDisconnect(_:) Nachricht gesendet wird.

Als Reaktion auf diese Ereignisse kann Ihre Anwendung (optional) Benachrichtigungen auf der Benutzeroberfläche anzeigen, die den Zustand der vorübergehenden Unterbrechung, der Wiederverbindung und der Trennung der Verbindung angeben.

// OTSession delegate callbacks:
func sessionDidBeginReconnecting(_ session:OTSession) {
	// Display a user interface notification.
}

func sessionDidReconnect(_ session: OTSession) {
	// Adjust user interface.
}

func sessionDidDisconnect(_ session: OTSession) {
	// Adjust user interface.
}

Wenn sich Ihr Client vorübergehend von einer Sitzung trennt, senden die OKSubscriberKitDelegate-Objekte in Clients, die einen von Ihnen veröffentlichten Stream abonnieren, Meldungen, sobald Ihr veröffentlichter Stream unterbrochen wird und sobald (und falls) er automatisch wieder aufgenommen wird. Weitere Informationen finden Sie unter Automatische Wiedereinschaltung in der Entwickleranleitung "Streams abonnieren".

Standardmäßig werden alle Signale, die Sie senden, während Ihr Client vorübergehend von einer Sitzung getrennt ist, in eine Warteschlange gestellt und gesendet, sobald (und falls) Sie die Verbindung erfolgreich wiederherstellen. Sie können die OTSession signal(withType: string:connection:retryAfterReconnect:error:) Methode, um zu verhindern, dass Signale in die Warteschlange gestellt werden, während Sie nicht verbunden sind. Für weitere Informationen siehe Verhindern des Sendens von Signalen während der automatischen Wiederherstellung der Verbindung.

Erkennen, wann andere Clients eine Verbindung hergestellt und getrennt haben

Die OTSessionDelegate session(_: connectionCreated:) Nachricht wird an den Delegierten der Sitzung gesendet, wenn ein anderer Client eine Verbindung zur Sitzung herstellt (und für jeden Client, der mit der Sitzung verbunden ist, wenn Sie eine Verbindung herstellen).

Die OTSessionDelegate session(_: connectionDestroyed:) Nachricht wird an den Delegierten der Sitzung gesendet, wenn ein anderer Client die Verbindung zur Sitzung trennt.

Im Hintergrundmodus ausgeführt

Siehe Verwaltung des Hintergrundstatus.