Modération — iOS

Lorsque vous se connecter à une session avec un jeton qui inclut des privilèges de modérateur, vous pouvez forcer les autres clients à se déconnecter d'une session ou à couper leur son :

Vérification des droits de modération

Une fois que vous êtes connecté à une session, vous pouvez vérifier si le client dispose des droits de modérateur. Vérifiez la valeur de la capabilities.canForceDisconnect ou le capabilities.canForceMute de la propriété OTSession objet. S'il est fixé à YESle client peut modérer :

if (session.capabilities.canForceDisconnect) {
    // The client can force disconnect. See the next section.
} else {
    // The client cannot force disconnect.
}
if (session.capabilities.canForceMute) {
  // The client can force mute. See the next section.
} else {
  // The client cannot force mute.
}

Forcer un client à se déconnecter

Les modérateurs peuvent obliger n'importe quel client à se déconnecter de la session. Pour forcer un client à se déconnecter, appelez la fonction [OTSession forceDisconnect:connection error:error] de l'objet Session, en y ajoutant l'objet Connexion du client à déconnecter :

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

Vous pouvez obtenir des références à des objets OTStream lorsque la fonction -session:connectionCreated: est envoyé. Voir aussi Détection de la connexion et de la déconnexion d'autres clients. Vous pouvez également obtenir un objet OTConnection à partir de la fonction connection d'un objet OTStream.

Lorsque l'appel échoue, le error est défini comme un objet OTError. Par exemple, si le client n'a pas de privilèges de modération, le paramètre error est défini comme un objet OTError avec l'attribut code est définie comme étant la propriété OTSessionUnableToForceDisconnect. Dans ce contexte, le succès indique que les options transmises à la méthode sont valides et que la demande de déconnexion de la connexion a été envoyée. Il ne garantit pas que la demande a été traitée avec succès.

Désactiver l'audio des flux dans une session

Les modérateurs peuvent obliger tous les clients ou un éditeur d'un flux spécifique à couper le son qu'ils publient.

Pour forcer un éditeur d'un flux spécifique à couper le son, appelez la commande [OTSession forceMuteStream:options:error:] en lui transmettant l'objet OTStream correspondant au flux à mettre en sourdine :

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

Lorsque l'appel échoue, le error est défini comme un objet OTError. Par exemple, si le client n'a pas de privilèges de modération, le paramètre error est défini comme un objet OTError avec l'attribut code est définie comme étant la propriété OTSessionUnableToForceMute. Dans ce contexte, le succès indique que les options transmises à la méthode sont valides et que la demande de mise en sourdine du flux a été envoyée. Il ne garantit pas que la demande a été traitée avec succès.

Les modérateurs peuvent également forcer tous les flux (à l'exception d'un tableau de flux facultatif) d'une session à couper le son publié. Pour ce faire, il suffit d'appeler la fonction [OTSession forceMuteAll:excludedStreams:error:] en passant un tableau d'objets OTStream correspondant aux flux que vous souhaitez exclure de l'inhibition :

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

Un flux publié par le modérateur appelant le [OTSession forceMuteAll:excludedStreams:error:] est mise en sourdine avec les autres flux de la session, à moins que vous n'ajoutiez le (ou les) flux du modérateur au tableau des flux exclus.

Si vous réglez le excludedStreams au paramètre niltous les flux de la session (y compris ceux du modérateur) cesseront de publier de l'audio :

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

Tous les flux publiés après l'appel à la fonction [OTSession forceMuteAll:excludedStreams:error:] sont publiées avec le son coupé. Vous pouvez supprimer l'état de sourdine d'une session en appelant la méthode [OTSession disableForceMute:error:] méthode :

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

Après avoir appelé le [OTSession disableForceMute:error:] les nouveaux flux publiés dans la session n'auront plus le son coupé.

Vous pouvez obtenir des références à des objets OTStream lorsque la fonction [OTSessionDelegate:session:streamCreated:] est envoyé. Voir aussi Détection des flux dans une session. Vous pouvez également obtenir un objet OTStream à partir de la fonction stream d'un objet OTPublisher ou OTSubscriber.

Lorsque le flux est mis en sourdine à la suite de l'une de ces méthodes (ou à la suite d'une commande forcer l'appel de flux muet dans un autre client SDK), le [OTPublisherKitDelegate publisher:muteForced:] est envoyé à chaque client publiant un flux en sourdine.

De même, en réponse à un appel au [OTSession forceMuteAll:excludedStreams:error:] (ou à une méthode forcer la mise en sourdine de tous les appels dans un autre client SDK), [OTSessionDelegate session:muteForced:info] est envoyé à chaque client connecté à la session, et le message active de l'objet OTMuteForcedInfo transmis en tant qu'objet info est fixé à YES.

Et en réponse à un appel à la [OTSession disableForceMute:error:] (ou à une méthode désactiver l'appel en sourdine dans un autre client SDK), le [OTSessionDelegate session:muteForced:info] est envoyé à chaque client connecté à la session, et le message active de l'objet OTMuteForcedInfo transmis en tant qu'objet info est fixé à NO.