Modération — Android
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
- Forcer un client à se déconnecter
- Désactiver l'audio des flux dans une session
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 canForceDisconnect ou le canForceMute de l'objet retourné par Session.getCapabilities(). S'il est réglé sur truele client peut modérer :
if (session.getCapabilities().canForceDisconnect) {
// The client can force disconnect. See the next section.
} else {
// The client cannot force disconnect.
}
if (session.getCapabilities().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 forceDisconnect() de l'objet Session, en y ajoutant l'objet Connexion du client à déconnecter :
session.forceDisconnect(connection);
Vous pouvez obtenir des références à des objets de connexion lorsque la fonction onConnectionCreated(Session session, Connection connection) de la méthode Session.ConnectionListener est appelé. Voir aussi Détection de la connexion et de la déconnexion d'autres clients. Vous pouvez également obtenir un objet Connexion à partir de la fonction getConnection() d'un objet Stream.
Lorsque l'appel au Session.forceDisconnect() échoue, la méthode Session.SessionListener.onError() est appelée. Par exemple, si le client n'a pas de privilèges de modération, la méthode code Le paramètre de l'objet OpentokError transmis à cette méthode est défini sur SessionUnableToForceDisconnect. 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 forceMuteStream() de l'objet Session, en lui transmettant l'objet Stream correspondant au flux à mettre en sourdine :
mSession.forceMuteStream(mStream);
Lorsque l'appel au Session.forceMuteStream() échoue, la méthode Session.SessionListener.onError() est appelée. Par exemple, si le client n'a pas de privilèges de modération, la méthode code Le paramètre de l'objet OpentokError transmis à cette méthode est défini sur SessionUnableToForceMute. 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 obliger tous les flux (à l'exception d'une liste facultative de flux) d'une session à couper le son publié. Créez un tableau de flux exclus :
List<com.opentok.android.Stream> mExcludedStreams = new ArrayList<com.opentok.android.Stream>();
mExcludedStreams.add(stream1);
mExcludedStreams.add(stream2);
Appelez ensuite le forceMuteAll() de l'objet Session, en transmettant le tableau des flux exclus :
mSession.forceMuteAll(mExcludedStreams);
Un flux publié par le modérateur appelant le forceMuteAll() est mise en sourdine avec les autres flux de la session, à moins que vous n'ajoutiez le (ou les) flux du modérateur à la liste des flux exclus.
Si vous ne tenez pas compte de la excludedStreams tous les flux de la session (y compris ceux du modérateur) cesseront de publier de l'audio :
mSession.forceMuteAll();
De même, tous les flux publiés après l'appel à la fonction forceMuteAll() sont publiées avec le son coupé. Vous pouvez supprimer l'état de sourdine d'une session en appelant la méthode disableForceMute() de l'objet Session :
mSession.disableForceMute();
Après avoir appelé le Session.disableForceMute() les nouveaux flux publiés dans la session n'auront plus le son coupé.
Vous pouvez obtenir des références à des objets Stream lorsque la fonction onStreamReceived(Session session, Stream stream) de la Session.SessionListener est appelé. Voir aussi Détection des flux dans une session. Vous pouvez également obtenir un objet Stream à partir de la fonction getStream() d'un objet Publisher ou Subscriber.
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), dans chaque client publiant un flux en sourdine, la fonction onMuteForced(PublisherKit publisher, MuteForcedInfo info) de la méthode PublisherKit.MuteListener est appelé.
De même, en réponse à un appel au Session.forceMuteAll() (ou à une méthode forcer la mise en sourdine de tous les appels dans un autre client SDK), onMuteForced(Session session, MuteForcedInfo info) de la méthode Session.MuteListener est appelé dans chaque client connecté à la session, et l'objet active de l'objet MuteForcedInfo transmis est fixée à true.
Et en réponse à un appel à la Session.disableForceMute() (ou à une méthode désactiver l'appel en sourdine dans un autre client SDK), le onMuteForced(Session session, MuteForcedInfo info) de la méthode Session.MuteListener dans chaque client connecté à la session, et l'objet active de l'objet MuteForcedInfo transmis est fixée à false.