Moderation – Android
Wenn Sie mit einer Sitzung verbinden mit einem Token, das Moderatorenrechte beinhaltet, können Sie andere Clients zwingen, die Verbindung zu einer Sitzung zu trennen oder ihren Ton stumm zu schalten:
- Überprüfung der Moderationsrechte
- Einen Client zwingen, die Verbindung zu trennen
- Stummschalten des Tons von Streams in einer Sitzung
Überprüfung der Moderationsrechte
Sobald Sie sich mit einer Sitzung verbunden haben, können Sie überprüfen, ob der Client Moderationsrechte hat. Überprüfen Sie den Wert des canForceDisconnect oder die canForceMute Eigenschaft des Objekts, das von Session.getCapabilities(). Wenn sie auf truekann der Kunde moderieren:
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.
}
Einen Client zwingen, die Verbindung zu trennen
Moderatoren können jeden Kunden dazu zwingen, die Verbindung zur Sitzung zu trennen. Um einen Client zum Trennen der Verbindung zu zwingen, rufen Sie die Funktion forceDisconnect() Methode des Session-Objekts und übergibt das Connection-Objekt für den Client, dessen Verbindung getrennt werden soll:
session.forceDisconnect(connection);
Sie können Referenzen auf Verbindungsobjekte erhalten, wenn die onConnectionCreated(Session session, Connection connection) Methode der Session.ConnectionListener Objekt aufgerufen wird. Siehe Erkennen, wann andere Clients eine Verbindung hergestellt und getrennt haben. Sie können auch ein Verbindungsobjekt aus dem getConnection() Methode eines Stream-Objekts.
Wenn der Aufruf der Session.forceDisconnect() Methode scheitert, wird die Session.SessionListener.onError() Methode aufgerufen wird. Wenn der Kunde beispielsweise keine Moderationsrechte hat, wird die code Der Parameter des an diese Methode übergebenen OpentokError-Objekts ist auf SessionUnableToForceDisconnect. In diesem Zusammenhang bedeutet Erfolg, dass die der Methode übergebenen Optionen gültig sind und die Anforderung zum Trennen der Verbindung gesendet wurde. Er garantiert nicht, dass die Anfrage erfolgreich bearbeitet wurde.
Stummschalten des Tons von Streams in einer Sitzung
Moderatoren können alle Clients oder einen Publisher eines bestimmten Streams dazu zwingen, ihre veröffentlichten Audiodaten stumm zu schalten.
Um einen Publisher eines bestimmten Streams zu zwingen, seinen Ton stumm zu schalten, rufen Sie die forceMuteStream() Methode des Session-Objekts und übergibt das Stream-Objekt, das dem stummzuschaltenden Stream entspricht:
mSession.forceMuteStream(mStream);
Wenn der Aufruf der Session.forceMuteStream() Methode scheitert, wird die Session.SessionListener.onError() Methode aufgerufen wird. Wenn der Kunde beispielsweise keine Moderationsrechte hat, wird die code Der Parameter des an diese Methode übergebenen OpentokError-Objekts ist auf SessionUnableToForceMute. In diesem Zusammenhang bedeutet Erfolg, dass die der Methode übergebenen Optionen gültig sind und die Anforderung, den Stream stummzuschalten, gesendet wurde. Er garantiert nicht, dass die Anfrage erfolgreich bearbeitet wurde.
Moderatoren können auch erzwingen, dass alle Streams (außer einer optionalen Liste von Streams) in einer Sitzung stummgeschaltet werden. Erstellen Sie ein Array mit ausgeschlossenen Streams:
List<com.opentok.android.Stream> mExcludedStreams = new ArrayList<com.opentok.android.Stream>();
mExcludedStreams.add(stream1);
mExcludedStreams.add(stream2);
Rufen Sie dann die forceMuteAll() des Session-Objekts und übergibt dabei das Array des ausgeschlossenen Streams:
mSession.forceMuteAll(mExcludedStreams);
Ein vom Moderator veröffentlichter Stream, der die forceMuteAll() Methode wird zusammen mit anderen Streams in der Sitzung stummgeschaltet, es sei denn, Sie fügen den Stream (oder die Streams) des Moderators zur Liste der ausgeschlossenen Streams hinzu.
Wenn Sie die excludedStreams werden alle Streams in der Sitzung (einschließlich der Streams des Moderators) kein Audio mehr veröffentlichen:
mSession.forceMuteAll();
Außerdem werden alle Streams, die nach dem Aufruf der forceMuteAll() Methode werden mit stummgeschaltetem Ton veröffentlicht. Sie können den Stummschaltzustand einer Sitzung aufheben, indem Sie die Methode disableForceMute() Methode des Session-Objekts:
mSession.disableForceMute();
Nachdem Sie die Session.disableForceMute() werden neue Streams, die in der Sitzung veröffentlicht werden, nicht mehr stummgeschaltet.
Sie können Referenzen auf Stream-Objekte erhalten, wenn die onStreamReceived(Session session, Stream stream) der Session.SessionListener Objekt aufgerufen wird. Siehe Erkennung von Streams in einer Sitzung. Sie können auch ein Stream-Objekt von der getStream() Methode eines Publisher- oder Subscriber-Objekts.
Wenn der Stream als Ergebnis einer dieser Methoden (oder durch eine der folgenden Methoden) stummgeschaltet wird Stummschaltung des Stream-Aufrufs in einem anderen Client SDK erzwingen), in jedem Client, der einen stummgeschalteten Stream veröffentlicht, die onMuteForced(PublisherKit publisher, MuteForcedInfo info) Methode der PublisherKit.MuteListener Objekt aufgerufen wird.
Ähnlich verhält es sich mit der Aufforderung an die Session.forceMuteAll() Methode (oder zu einer Stummschaltung aller Anrufe in einem anderen Client SDK erzwingen), onMuteForced(Session session, MuteForcedInfo info) Methode der Session.MuteListener Objekt wird in jedem mit der Sitzung verbundenen Client aufgerufen, und das active Eigenschaft des übergebenen MuteForcedInfo-Objekts wird auf true.
Und als Antwort auf einen Aufruf an die Session.disableForceMute() Methode (oder zu einer Stummschaltung in einem anderen Client SDK deaktivieren), die onMuteForced(Session session, MuteForcedInfo info) Methode der Session.MuteListener Objekt in jedem mit der Sitzung verbundenen Client, und das active Eigenschaft des übergebenen MuteForcedInfo-Objekts wird auf false.