Moderation – iOS
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 capabilities.canForceDisconnect oder die capabilities.canForceMute Eigenschaft der OTSession Objekt. Wenn es auf YESkann der Kunde moderieren:
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.
}
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 [OTSession forceDisconnect:connection error:error] Methode des Session-Objekts und übergibt das Connection-Objekt für den Client, dessen Verbindung getrennt werden soll:
OTError* error = nil;
[session forceDisconnect:connection error:&error];
if (error) {
NSLog(@"connect failed with error: (%@)", error);
}
Sie können Referenzen auf OTStream-Objekte erhalten, wenn die -session:connectionCreated: Nachricht gesendet wird. Siehe Erkennen, wann andere Clients eine Verbindung hergestellt und getrennt haben. Sie können auch ein OTConnection-Objekt von der connection Eigenschaft eines OTStream-Objekts.
Wenn der Anruf fehlschlägt, wird die error wird auf ein OTError-Objekt gesetzt. Wenn der Client beispielsweise nicht über Moderationsrechte verfügt, wird der Fehlerparameter auf ein OTError-Objekt mit dem Wert code Eigenschaft eingestellt auf OTSessionUnableToForceDisconnect. 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 [OTSession forceMuteStream:options:error:] Methode und übergibt das OTStream-Objekt, das dem stummzuschaltenden Stream entspricht:
OTError* error = nil;
[session forceMuteStream:stream error:&error];
if (error) {
NSLog(@"forceMuteStream failed with error: (%@)", error);
}
Wenn der Anruf fehlschlägt, wird die error wird auf ein OTError-Objekt gesetzt. Wenn der Client beispielsweise nicht über Moderationsrechte verfügt, wird der Fehlerparameter auf ein OTError-Objekt mit dem Wert code Eigenschaft eingestellt auf OTSessionUnableToForceMute. 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 (mit Ausnahme eines optionalen Arrays von Streams) in einer Sitzung stummgeschaltet werden. Rufen Sie die [OTSession forceMuteAll:excludedStreams:error:] Methode, indem Sie ein Array von OTStream-Objekten übergeben, die den Streams entsprechen, die Sie von der Stummschaltung ausschließen möchten:
OTError* error = nil;
[session forceMuteAll:excludedStreams error:&error];
if (error) {
NSLog(@"forceMuteAll failed with error: (%@)", error);
}
Ein vom Moderator veröffentlichter Stream, der die [OTSession forceMuteAll:excludedStreams:error:] Methode wird zusammen mit anderen Streams in der Sitzung stummgeschaltet, es sei denn, Sie fügen den Stream (oder die Streams) des Moderators zum Array der ausgeschlossenen Streams hinzu.
Wenn Sie die Einstellung excludedStreams Parameter zu nilwerden alle Streams in der Sitzung (einschließlich der Streams des Moderators) keine Audios mehr veröffentlichen:
OTError* error = nil;
[session forceMuteAll:nil error:&error];
if (error) {
NSLog(@"forceMuteAll failed with error: (%@)", error);
}
Alle Streams, die nach dem Aufruf der [OTSession forceMuteAll:excludedStreams:error:] Methode werden mit stummgeschaltetem Ton veröffentlicht. Sie können den Stummschaltzustand einer Sitzung aufheben, indem Sie die Methode [OTSession disableForceMute:error:] Methode:
OTError* error = nil;
[session disableForceMute: error:&error];
if (error) {
NSLog(@"forceMuteAll failed with error: (%@)", error);
}
Nachdem Sie die [OTSession disableForceMute:error:] werden neue Streams, die in der Sitzung veröffentlicht werden, nicht mehr stummgeschaltet.
Sie können Referenzen auf OTStream-Objekte erhalten, wenn die [OTSessionDelegate:session:streamCreated:] Nachricht gesendet wird. Siehe Erkennung von Streams in einer Sitzung. Sie können ein OTStream-Objekt auch über die Funktion stream Eigenschaft eines OTPublisher- oder OTSubscriber-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), die [OTPublisherKitDelegate publisher:muteForced:] Nachricht wird in jedem Client gesendet, der einen stummgeschalteten Stream veröffentlicht.
Ähnlich verhält es sich mit der Aufforderung an die [OTSession forceMuteAll:excludedStreams:error:] Methode (oder zu einer Stummschaltung aller Anrufe in einem anderen Client SDK erzwingen), [OTSessionDelegate session:muteForced:info] Nachricht wird an jeden Client gesendet, der mit der Sitzung verbunden ist, und die active Eigenschaft des OTMuteForcedInfo-Objekts, das als info auf den Parameter YES.
Und als Antwort auf einen Aufruf an die [OTSession disableForceMute:error:] Methode (oder zu einer Stummschaltung in einem anderen Client SDK deaktivieren), die [OTSessionDelegate session:muteForced:info] Nachricht wird an jeden Client gesendet, der mit der Sitzung verbunden ist, und die active Eigenschaft des OTMuteForcedInfo-Objekts, das als info auf den Parameter NO.