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:
- Inicializando um objeto OTSession
- Conectando-se a uma sessão
- Monitoramento do status da conexão
- Desconectando-se de uma sessão
- Como detectar quando você se desconectou de uma sessão
- Reconexão automática
- Detectar quando outros clientes se conectaram e se desconectaram
- Em execução em segundo plano
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.