Cómo unirse a una sesión — iOS (Swift)

Utilizando un ID de sesión y ficha, puedes conectarte a la sesión de OpenTok utilizando el SDK de OpenTok para iOS.

Este tema incluye las siguientes secciones:

Para obtener información sobre cómo crear un identificador de sesión y un token de autenticación, consulta Creación de sesiones y Creación de fichas.

Inicialización de un objeto OTSession

Antes de conectarse a una sesión, instancie un objeto OTSession llamando a la función OTSession init(apiKey:sessionId:delegate:) método con tu clave API de OpenTok y el ID de sesión correspondiente:

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

Ten en cuenta que al llamar a la función OTSession init(apiKey: sessionId: delegate:) El método no crear una sesión de OpenTok; crea el objeto OTSession de Swift, que representa una sesión de OpenTok ya existente. Para crear una sesión de OpenTok, hay que utilizar las bibliotecas de OpenTok para el lado del servidor. Véase Creación de una sesión de OpenTok.

Implementa los métodos del protocolo OTSessionDelegate en el objeto que especifiques como objeto delegado. Estos métodos se llaman cuando se producen eventos relacionados con la sesión.

Conectarse a una sesión

Llame al OTSession connect(withToken:error:) pasando el token del cliente:

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

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

El OTSessionDelegate sessionDidConnect(_:) El mensaje se envía cuando el cliente se conecta a la sesión de OpenTok.

El OTSessionDelegate session(_:didFailWithError:) se envía cuando se produce un error al conectarse. Consulta la documentación de la OTSessionErrorCode enum para las descripciones de los valores del code propiedad del objeto de error.

Supervisión del estado de la conexión

Puedes consultar el estado de la conexión comprobando el sessionConnectionStatus del objeto OTSession:

session.sessionConnectionStatus

Los valores válidos se definen en Enumeración OTSessionConnectionStatus.

Puede utilizar un observador clave-valor para controlar esta propiedad. Sin embargo, la propiedad OTSessionDelegate sessionDidConnect(_:) y OTSessionDelegate sessionDidDisconnect(_:) se envían al delegado de la sesión cuando ésta se conecta y desconecta.

Desconectarse de una sesión

Para desconectarte de una sesión, llama al OTSession disconnect(_:) método.

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

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

Detectar cuándo te has desconectado

El OTSessionDelegate sessionDidDisconnect(_:) al delegado de la sesión cuando ésta se desconecta.

Ten en cuenta que las sesiones se desconectan automáticamente cuando se suspende la aplicación.

Si la conexión a la sesión se interrumpe debido a un error que se produce tras una conexión correcta, el OTSessionDelegate session(_:didFailWithError:) se envía antes del OTSessionDelegate sessionDidDisconnect(_:) mensaje. El enum OTSessionErrorCode define el código code propiedad del objeto OTError pasado al OTSessionDelegate session(_:didFailWithError:) mensaje, en el que se explica el motivo de la desconexión.

Reconexión automática

Los clientes intentarán volver a conectarse automáticamente a una sesión de la que se hayan desconectado de forma inesperada (por ejemplo, debido a una interrupción de la conexión de red). No es necesario añadir ningún código para que los clientes se vuelvan a conectar automáticamente, a menos que quieras responder a los mensajes enviados cuando tu cliente se desconecta y vuelve a conectarse. Para ver un código de ejemplo que ilustra el uso de estos eventos, consulta el opentok-reconnection repositorio en GitHub.

Cuando se interrumpe la conexión y el cliente intenta volver a conectarse, la función OTSessionDelegate sessionDidBeginReconnecting(_:) al delegado del objeto OTSession. Cuando se restablece la conexión, el OTSessionDelegate sessionDidReconnect(_:) Se envía el mensaje. Si el cliente no puede restablecer la conexión, el OTSessionDelegate sessionDidDisconnect(_:) se envía el mensaje.

En respuesta a estos eventos, tu aplicación puede (opcionalmente) mostrar notificaciones en la interfaz de usuario indicando los estados de desconexión temporal, reconexión y desconexión.

// 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.
}

Cuando tu cliente se desconecta temporalmente de una sesión, los objetos `OKSubscriberKitDelegate` de los clientes suscritos a un flujo que tú publicas envían mensajes cuando el flujo publicado se interrumpe y cuando (y si) se reanuda automáticamente. Para obtener más información, consulta Reconexión automática en la guía para desarrolladores «Suscribirse a flujos».

Por defecto, cualquier señal que envíe mientras su cliente está temporalmente desconectado de una sesión se pone en cola y se envía cuando (y si) se reconecta con éxito. Puede utilizar la función OTSession signal(withType: string:connection:retryAfterReconnect:error:) para evitar que las señales se pongan en cola mientras usted está desconectado. Para obtener más información, consulte Evitar que se envíen señales durante la reconexión automática.

Detección de la conexión y desconexión de otros clientes

El OTSessionDelegate session(_: connectionCreated:) se envía al delegado de la sesión cuando otro cliente se conecta a la sesión (y para cada cliente conectado a la sesión cuando usted se conecta).

El OTSessionDelegate session(_: connectionDestroyed:) al delegado de sesión cuando otro cliente se desconecta de la sesión.

Ejecución en segundo plano

Véase Gestión del estado de fondo.