Moderación — iOS

Cuando conectarse a una sesión Con un token que incluya privilegios de moderador, puedes obligar a otros clientes a desconectarse de una sesión o silenciar su audio:

Comprobación de los privilegios de moderación

Una vez que te hayas conectado a una sesión, puedes comprobar si el cliente tiene permisos de moderador. Comprueba el valor de la capabilities.canForceDisconnect o el capabilities.canForceMute propiedad del OTSession objeto. Si se establece en YESel cliente puede moderar:

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

Forzar la desconexión de un cliente

Los moderadores pueden obligar a cualquier cliente a desconectarse de la sesión. Para obligar a un cliente a desconectarse, llama a la función [OTSession forceDisconnect:connection error:error] método del objeto `Session`, pasando como parámetro el objeto `Connection` correspondiente al cliente que deseas desconectar:

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

Puedes obtener referencias a objetos OTStream cuando el -session:connectionCreated: se envía el mensaje. Véase Detección de la conexión y desconexión de otros clientes. También puede obtener un objeto OTConnection de la función connection de un objeto OTStream.

Cuando la llamada falla, el error El parámetro se establece en un objeto OTError. Por ejemplo, si el cliente no tiene privilegios de moderación, el parámetro de error se establece en un objeto OTError con el code con el valor OTSessionUnableToForceDisconnect. En este contexto, el éxito indica que las opciones introducidas en el método son válidas y que se ha enviado la solicitud para desconectar la conexión. No garantiza que la solicitud se haya ejecutado correctamente.

Silenciar el audio de los flujos de una sesión

Los moderadores pueden obligar a todos los clientes o a un editor de un flujo específico a silenciar su audio publicado.

Para obligar a un editor de un flujo específico a silenciar su audio, llame a la función [OTSession forceMuteStream:options:error:] pasando el objeto OTStream correspondiente al flujo a silenciar:

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

Cuando la llamada falla, el error El parámetro se establece en un objeto OTError. Por ejemplo, si el cliente no tiene privilegios de moderación, el parámetro de error se establece en un objeto OTError con el code con el valor OTSessionUnableToForceMute. En este contexto, el éxito indica que los parámetros pasados al método son válidos y que se ha enviado la solicitud para silenciar la transmisión. No garantiza que la solicitud se haya ejecutado correctamente.

Los moderadores también pueden forzar que todas las transmisiones (excepto un conjunto opcional de ellas) de una sesión silencien el audio publicado. Llama a la función [OTSession forceMuteAll:excludedStreams:error:] pasando una matriz de objetos OTStream correspondientes a los flujos que desea excluir del silenciamiento:

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

Una retransmisión publicada por el moderador en la que se hace referencia al [OTSession forceMuteAll:excludedStreams:error:] se silencia junto con otras secuencias de la sesión, a menos que añadas la secuencia (o secuencias) del moderador a la matriz de secuencias excluidas.

Si configuras el excludedStreams parámetro a nil, todas las retransmisiones de la sesión (incluidas las del moderador) dejarán de emitir audio:

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

Cualquier flujo que se publique después de la llamada a la función [OTSession forceMuteAll:excludedStreams:error:] se publican con el audio silenciado. Puede eliminar el estado de silencio de una sesión llamando al método [OTSession disableForceMute:error:] método:

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

Después de llamar a la [OTSession disableForceMute:error:] De esta forma, las nuevas retransmisiones publicadas en la sesión ya no tendrán el audio silenciado.

Puedes obtener referencias a objetos OTStream cuando el [OTSessionDelegate:session:streamCreated:] se envía el mensaje. Véase Detección de flujos en una sesión. También puede obtener un objeto OTStream de la función stream propiedad de un objeto OTPublisher u OTSubscriber.

Cuando el flujo se silencia como resultado de uno de estos métodos (o de un forzar llamada a flujo mudo en otro cliente SDK), el [OTPublisherKitDelegate publisher:muteForced:] en cada cliente que publique un flujo silenciado.

Del mismo modo, en respuesta a una llamada al [OTSession forceMuteAll:excludedStreams:error:] método (o a un Forzar el silencio de todas las llamadas en otro Client SDK), [OTSessionDelegate session:muteForced:info] se envía en cada cliente conectado a la sesión, y el mensaje active del objeto OTMuteForcedInfo pasado como la propiedad info se establece en YES.

Y en respuesta a una llamada a la [OTSession disableForceMute:error:] método (o a un desactivar la llamada forzada al silencio en otro cliente SDK), el [OTSessionDelegate session:muteForced:info] se envía en cada cliente conectado a la sesión, y el mensaje active del objeto OTMuteForcedInfo pasado como la propiedad info se establece en NO.