Moderação — iOS

Quando você conectar-se a uma sessão Com um token que inclua privilégios de moderador, você pode forçar outros clientes a se desconectarem de uma sessão ou silenciar o áudio deles:

Verificando se há privilégios de moderação

Depois de se conectar a uma sessão, você pode verificar se o cliente tem permissão para moderar. Verifique o valor do capabilities.canForceDisconnect ou o capabilities.canForceMute propriedade do OTSession objeto. Se estiver definido como YES, o cliente pode 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.
}

Forçar a desconexão de um cliente

Os moderadores podem forçar qualquer cliente a se desconectar da sessão. Para forçar um cliente a se desconectar, chame a função [OTSession forceDisconnect:connection error:error] método do objeto Session, passando o objeto Connection correspondente ao cliente que você deseja desconectar:

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

É possível obter referências a objetos OTStream quando o -session:connectionCreated: A mensagem é enviada. Veja Detectar quando outros clientes se conectaram e se desconectaram. Você também pode obter um objeto OTConnection a partir do connection propriedade de um objeto OTStream.

Quando a chamada falha, o error O parâmetro é definido como um objeto OTError. Por exemplo, se o cliente não tiver privilégios de moderação, o parâmetro de erro é definido como um objeto OTError com o code propriedade definida como OTSessionUnableToForceDisconnect. Nesse contexto, o sucesso indica que os parâmetros passados ao método são válidos e que a solicitação para desconectar a conexão foi enviada. Isso não garante que a solicitação tenha sido processada com sucesso.

Silenciar o áudio das transmissões em uma sessão

Os moderadores podem forçar todos os usuários ou um editor de uma transmissão específica a silenciar o áudio publicado.

Para forçar um emissor de uma transmissão específica a silenciar seu áudio, chame a função [OTSession forceMuteStream:options:error:] método, passando o objeto OTStream correspondente ao fluxo a ser silenciado:

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

Quando a chamada falha, o error O parâmetro é definido como um objeto OTError. Por exemplo, se o cliente não tiver privilégios de moderação, o parâmetro de erro é definido como um objeto OTError com o code propriedade definida como OTSessionUnableToForceMute. Nesse contexto, o sucesso indica que os parâmetros passados ao método são válidos e que a solicitação para silenciar o fluxo foi enviada. Isso não garante que a solicitação tenha sido atendida com sucesso.

Os moderadores também podem forçar todas as transmissões (exceto um conjunto opcional de transmissões) em uma sessão a silenciar o áudio publicado. Chame a função [OTSession forceMuteAll:excludedStreams:error:] método, passando um array de objetos OTStream correspondentes aos fluxos que você deseja excluir do silenciamento:

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

Uma transmissão publicada pelo moderador chamando o [OTSession forceMuteAll:excludedStreams:error:] O método é silenciado junto com outras transmissões da sessão, a menos que você adicione a transmissão (ou transmissões) do moderador à matriz de transmissões excluídas.

Se você definir o excludedStreams parâmetro para nil, todas as transmissões da sessão (incluindo as do moderador) deixarão de transmitir áudio:

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

Quaisquer fluxos publicados após a chamada à função [OTSession forceMuteAll:excludedStreams:error:] As sessões são publicadas com o áudio silenciado. É possível desativar o silenciamento de uma sessão chamando a função [OTSession disableForceMute:error:] método:

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

Depois de chamar a [OTSession disableForceMute:error:] Com esse método, as novas transmissões publicadas na sessão não terão mais o áudio silenciado.

É possível obter referências a objetos OTStream quando o [OTSessionDelegate:session:streamCreated:] A mensagem é enviada. Veja Detecção de fluxos em uma sessão. Você também pode obter um objeto OTStream a partir do stream propriedade de um objeto OTPublisher ou OTSubscriber.

Quando a transmissão é silenciada como resultado de um desses métodos (ou a partir de um forçar o silenciamento da chamada de streaming em outro Client SDK), o [OTPublisherKitDelegate publisher:muteForced:] A mensagem é enviada em cada cliente que publica um fluxo silenciado.

Da mesma forma, em resposta a uma ligação para o [OTSession forceMuteAll:excludedStreams:error:] método (ou a um silenciar à força todas as chamadas em outro Client SDK), [OTSessionDelegate session:muteForced:info] A mensagem é enviada a cada cliente conectado à sessão, e o active propriedade do objeto OTMuteForcedInfo passado como o info o parâmetro está definido como YES.

E em resposta a uma ligação para o [OTSession disableForceMute:error:] método (ou a um desativar o silenciamento forçado de chamadas em outro Client SDK), o [OTSessionDelegate session:muteForced:info] A mensagem é enviada a cada cliente conectado à sessão, e o active propriedade do objeto OTMuteForcedInfo passado como o info o parâmetro está definido como NO.