Cómo unirse a una sesión — iOS
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:
- Inicialización de un objeto OTSession
- Conectarse a una sesión
- Supervisión del estado de la conexión
- Desconectarse de una sesión
- Detectar cuándo te has desconectado de una sesión
- Reconexión automática
- Detección de la conexión y desconexión de otros clientes
- Ejecución en segundo plano
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 initWithApiKey: 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 alloc] initWithApiKey:kApiKey
sessionId:kSessionId
delegate:self];
Ten en cuenta que al llamar a la función [OTSession initWithApiKey:sessionId:delegate:] El método no crear una sesión de OpenTok; crea el objeto OTSession de Objective-C, que representa una sesión de OpenTok ya existente. Para crear una sesión de OpenTok, hay que utilizar las bibliotecas de OpenTok del 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 connectWithToken:error:] pasando el token del cliente:
OTError* error = nil;
[session connectWithToken:kToken error:&error];
if (error) {
NSLog(@"connect failed with error: (%@)", error);
}
El [OTSessionDelegate session:didConnect] 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.
OTError* error = nil;
[session disconnect:&error];
if (error) {
NSLog(@"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:
- (void)sessionDidBeginReconnecting:(OTSession*)session
{
// Display a user interface notification.
}
- (void)sessionDidReconnect:(OTSession*)session
{
// Adjust user interface.
}
- (void)sessionDidDisconnect:(OTSession*)session
{
// 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 signalWithType: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.