Participar de uma sessão — iOS

Usando um ID da sessão e token, você pode se conectar à sessão do OpenTok usando o SDK do OpenTok para iOS.

Este tópico inclui as seguintes seções:

Para obter informações sobre como criar um ID de sessão e um token de autenticação, consulte Criação de sessão e Criação de tokens.

Inicializando um objeto OTSession

Antes de se conectar a uma sessão, instancie um objeto OTSession chamando o método [OTSession initWithApiKey: sessionId: delegate:] método com sua chave da API do OpenTok e o ID da sessão apropriado:

// Replace kApiKey with your OpenTok API key:
// Replace kSessionId with an OpenTok session ID:
session = [[OTSession alloc] initWithApiKey:kApiKey
                                       sessionId:kSessionId
                                       delegate:self];

Observe que chamar o [OTSession initWithApiKey:sessionId:delegate:] o método não criar uma sessão do OpenTok; ela cria o objeto OTSession em Objective-C, que representa uma sessão existente do OpenTok. Você cria uma sessão do OpenTok usando as bibliotecas do OpenTok do lado do servidor. Consulte Criação de uma sessão do OpenTok.

Implemente os métodos do protocolo OTSessionDelegate no objeto que você especificar como objeto delegado. Esses métodos são chamados quando ocorrem eventos relacionados à sessão.

Conectando-se a uma sessão

Ligue para o [OTSession connectWithToken:error:] método, passando o token do cliente:

OTError* error = nil;
[session connectWithToken:kToken error:&error];
if (error) {
  NSLog(@"connect failed with error: (%@)", error);
}

O [OTSessionDelegate session:didConnect] A mensagem é enviada quando o cliente se conecta à sessão do OpenTok.

O OTSessionDelegate session:didFailWithError:] é enviado quando ocorre um erro na conexão. Consulte a documentação do Enumeração OTSessionErrorCode para obter descrições dos valores do code propriedade do objeto de erro.

Monitoramento do status da conexão

Você pode verificar o status da conexão consultando o sessionConnectionStatus propriedade do objeto OTSession:

session.sessionConnectionStatus

Os valores válidos estão definidos no Enumeração OTSessionConnectionStatus.

Você pode usar um observador de chave-valor para monitorar essa propriedade. No entanto, o [OTSessionDelegate sessionDidConnect:] e [OTSessionDelegate sessionDidDisconnect:] As mensagens são enviadas ao delegado da sessão quando a sessão se conecta e se desconecta.

Desconectando-se de uma sessão

Para se desconectar de uma sessão, ligue para o [OTSession disconnect:] método.

OTError* error = nil;
[session disconnect:&error];
if (error) {
  NSLog(@"disconnect failed with error: (%@)", error);
}

Detectar quando a conexão foi interrompida

O [OTSessionDelegate sessionDidDisconnect:] A mensagem é enviada ao delegado da sessão quando a sessão é desconectada.

Observe que as sessões são desconectadas automaticamente quando o aplicativo é suspenso.

Se a conexão com a sessão for interrompida devido a um erro que ocorra após uma conexão bem-sucedida, o [OTSessionDelegate session:DidFailWithError:] a mensagem é enviada antes do [OTSessionDelegate sessionDidDisconnect:] mensagem. A enumeração OTSessionErrorCode define o code propriedade do objeto OTError passado para o [OTSessionDelegate session:DidFailWithError:] mensagem, que descreve o motivo do desligamento.

Reconexão automática

Os clientes tentarão se reconectar automaticamente a uma sessão da qual tenham se desconectado inesperadamente (por exemplo, devido a uma queda na conectividade de rede). Não é necessário adicionar nenhum código para que os clientes se reconectem automaticamente, a menos que você queira responder às mensagens enviadas quando o cliente se desconecta e se reconecta. Para obter um código de exemplo que demonstre o uso desses eventos, consulte o opentok-reconexão repositório no GitHub.

Quando a conexão é interrompida e o cliente tenta se reconectar, o [OTSessionDelegate sessionDidBeginReconnecting:] A mensagem é enviada ao delegado do objeto OTSession. Quando a conexão é restabelecida, o [OTSessionDelegate sessionDidReconnect:] a mensagem é enviada. Se o cliente não conseguir restabelecer a conexão, o [OTSessionDelegate sessionDidDisconnect:] A mensagem é enviada.

Em resposta a esses eventos, seu aplicativo pode (opcionalmente) exibir notificações na interface do usuário indicando os estados de desconexão temporária, reconexão e desconexão.

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

Quando seu cliente se desconecta temporariamente de uma sessão, os objetos `OKSubscriberKitDelegate` nos clientes inscritos em um fluxo publicado por você enviam mensagens quando o fluxo publicado é interrompido e quando (e se) ele for retomado automaticamente. Para obter mais informações, consulte Reconexão automática no guia do desenvolvedor “Inscrição em streams”.

Por padrão, quaisquer sinais que você enviar enquanto seu cliente estiver temporariamente desconectado de uma sessão são colocados em fila e enviados quando (e se) você se reconectar com sucesso. Você pode usar o [OTSession signalWithType:string:connection:retryAfterReconnect:error:] método para evitar que os sinais fiquem na fila enquanto você estiver desconectado. Para obter mais informações, consulte Impedir que sinais sejam enviados durante a reconexão automática.

Detectar quando outros clientes se conectaram e se desconectaram

O [OTSessionDelegate session:connectionCreated:] uma mensagem é enviada ao delegado da sessão quando outro cliente se conecta à sessão (e para cada cliente conectado à sessão quando você se conecta).

O [OTSessionDelegate session:connectionDestroyed:] uma mensagem é enviada ao delegado da sessão quando outro cliente se desconecta da sessão.

Em execução em segundo plano

Veja Gerenciamento de estado em segundo plano.