Rejoindre une session — iOS

En utilisant un ID de la session et jeton, vous pouvez vous connecter à la session OpenTok à l'aide du SDK OpenTok pour iOS.

Cette rubrique comprend les sections suivantes :

Pour plus d'informations sur la création d'un identifiant de session et d'un jeton d'authentification, consultez Création de la session et Création de jetons.

Initialisation d'un objet OTSession

Avant de pouvoir vous connecter à une session, instanciez un objet OTSession en appelant la fonction [OTSession initWithApiKey: sessionId: delegate:] méthode en indiquant votre clé API OpenTok et l'ID de session correspondant :

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

Notez que l'appel à la fonction [OTSession initWithApiKey:sessionId:delegate:] n'est pas créer une session OpenTok ; cela crée l'objet OTSession en Objective-C, qui représente une session OpenTok existante. Vous créez une session OpenTok à l'aide des bibliothèques côté serveur d'OpenTok. Voir Création d'une session OpenTok.

Implémentez les méthodes du protocole OTSessionDelegate dans l'objet que vous spécifiez en tant qu'objet délégué. Ces méthodes sont appelées lorsque des événements liés à la session se produisent.

Connexion à une session

Appeler le [OTSession connectWithToken:error:] en transmettant le jeton au client :

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

Les [OTSessionDelegate session:didConnect] Ce message est envoyé lorsque le client se connecte à la session OpenTok.

Les OTSessionDelegate session:didFailWithError:] est envoyé en cas d'erreur de connexion. Voir la documentation de l'outil OTSessionErrorCode enum pour la description des valeurs du code de l'objet d'erreur.

Surveillance de l'état de la connexion

Vous pouvez obtenir l'état de la connexion en vérifiant le fichier sessionConnectionStatus de l'objet OTSession :

session.sessionConnectionStatus

Les valeurs valides sont définies dans le OTSessionConnectionStatus enum.

Vous pouvez utiliser un observateur clé-valeur pour contrôler cette propriété. Cependant, l'observateur [OTSessionDelegate sessionDidConnect:] et [OTSessionDelegate sessionDidDisconnect:] sont envoyés au délégué de la session lorsque la session se connecte et se déconnecte.

Déconnexion d'une session

Pour se déconnecter d'une session, appelez le [OTSession disconnect:] méthode.

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

Détection de la déconnexion

Les [OTSessionDelegate sessionDidDisconnect:] est envoyé au délégué de la session lorsque celle-ci se déconnecte.

Notez que les sessions se déconnectent automatiquement lorsque l'application est suspendue.

Si la connexion à la session est interrompue en raison d'une erreur survenant après une connexion réussie, le message [OTSessionDelegate session:DidFailWithError:] est envoyé avant le message [OTSessionDelegate sessionDidDisconnect:] message. L'enum OTSessionErrorCode définit le type de message d'erreur. code de l'objet OTError transmis à la fonction [OTSessionDelegate session:DidFailWithError:] message, qui explique la raison de la déconnexion.

Reconnexion automatique

Les clients tenteront de se reconnecter automatiquement à une session dont ils se sont déconnectés de manière inattendue (par exemple, en raison d'une interruption de la connexion réseau). Vous n'avez pas besoin d'ajouter de code pour que les clients se reconnectent automatiquement, sauf si vous souhaitez répondre aux messages envoyés lorsque votre client se déconnecte puis se reconnecte. Pour obtenir un exemple de code illustrant l'utilisation de ces événements, consultez la section opentok-reconnexion sur GitHub.

Lorsque la connexion est interrompue et que le client tente de se reconnecter, la fonction [OTSessionDelegate sessionDidBeginReconnecting:] est envoyé au délégué de l'objet OTSession. Lorsque la connexion est rétablie, le message [OTSessionDelegate sessionDidReconnect:] est envoyé. Si le client ne peut pas rétablir la connexion, le message [OTSessionDelegate sessionDidDisconnect:] est envoyé.

En réponse à ces événements, votre application peut (éventuellement) afficher des notifications d'interface utilisateur indiquant les états de déconnexion temporaire, de reconnexion et de déconnexion.

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

Lorsque votre client se déconnecte temporairement d'une session, les objets `OKSubscriberKitDelegate` des clients abonnés à un flux que vous publiez envoient des messages lorsque votre flux publié est interrompu et lorsqu'il reprend automatiquement (le cas échéant). Pour plus d'informations, consultez Reconnexion automatique dans le guide du développeur "S'abonner à des flux".

Par défaut, tous les signaux que vous envoyez lorsque votre client est temporairement déconnecté d'une session sont mis en file d'attente et envoyés lorsque (et si) vous vous reconnectez avec succès. Vous pouvez utiliser la fonction [OTSession signalWithType:string:connection:retryAfterReconnect:error:] pour éviter que des signaux ne soient mis en file d'attente pendant que vous êtes déconnecté. Pour plus d'informations, voir Empêcher l'envoi de signaux lors d'une reconnexion automatique.

Détection de la connexion et de la déconnexion d'autres clients

Les [OTSessionDelegate session:connectionCreated:] est envoyé au délégué de la session lorsqu'un autre client se connecte à la session (et pour chaque client connecté à la session lorsque vous vous connectez).

Les [OTSessionDelegate session:connectionDestroyed:] est envoyé au délégué de la session lorsqu'un autre client se déconnecte de la session.

Fonctionnement en arrière-plan

Voir Gestion de l'état d'arrière-plan.