Publicação: Verificação prévia e permissões

Use este guia para Verify as permissões e os recursos antes de iniciar a publicação, para que os usuários tenham uma experiência tranquila. Você poderá visualizar o vídeo local, verificar o status das permissões da câmera e do microfone e confirmar se o cliente pode publicar.

Visualização antes da reprodução

Por padrão, a visualização do Publisher exibe uma pré-visualização local quando você inicia a transmissão. Você também pode gerar explicitamente uma pré-visualização antes da publicação:

Para ver uma prévia do vídeo antes que o Publisher inicie a transmissão, chame a função startPreview() método do objeto Publisher:

mPublisher.startPreview();

Se você chamar o startPreview() método, é preciso chamar o destroy() método utilizado pelo editor para remover a visualização do editor (e o vídeo), quando o editor interrompe a transmissão (quando o onStreamDestroyed(PublisherKit publisher, Stream stream) (o método do PublisherListener é chamado).

Verificar o acesso à câmera

Recomendamos verificar as permissões da câmera antes da publicação e orientar os usuários a habilitar o acesso, se necessário.

Você pode controlar quando essa mensagem será exibida chamando AVCaptureDevice requestAccess(for:completionHandler:) com AVMediaType.Video, o que exibirá o prompt na primeira execução. Nas chamadas subsequentes, o manipulador de autocompletar será executado com a preferência armazenada do usuário.

AVCaptureDevice.requestAccess(for: .video) { granted in
	if granted {
		// Access to the camera is granted. You can publish.
	} else {
		// Access to the camera is not granted.
	}
}

Você pode controlar quando essa mensagem será exibida chamando [AVCaptureDevice requestAccessForMediaType:completionHandler:] com AVMediaTypeVideo, o que exibirá o prompt na primeira execução. Nas chamadas subsequentes, o manipulador de autocompletar será executado com a preferência armazenada do usuário.

[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
        if(granted){
            // Access to the camera is granted. You can publish.
        } else {
            // Access to the camera is not granted.
        }
    }];

Verificar se é possível publicar

Depois de se conectar a uma sessão, você pode verificar se o cliente consegue publicar.

Depois de se conectar a uma sessão, você pode verificar se o cliente pode publicar. Defina uma referência ao OTSession objeto e chamar seu getCapabilites() método no sessionConnected manipulador de eventos. Esse método retorna uma promessa com um objeto que inclui um canPublish propriedade. Você pode, então, publicar condicionalmente com base nesse valor:

import React, {Component} from 'react';
import {View} from 'react-native';
import {OTSession, OTPublisher, OTSubscriber} from 'opentok-react-native';

class App extends Component {
  constructor(props) {
    super(props);
    this.apiKey = 'your API key';
    this.sessionId = 'a session ID';
    this.token = 'a valid token';
    this.state = {canPublish: false};

    this.sessionEventHandlers = {
      sessionConnected: event => {
        this.connectionCount++;
        this.session.getCapabilities().then(capabilities => {
          this.setState({canPublish: capabilities.canPublish});
        });
      },
    };
  }

  render() {
    return (
      <View
        <OTSession
          applicationId={this.apiKey}
          sessionId={this.sessionId}
          token={this.token}
          ref={instance => {
            this.session = instance;
          }}
          eventHandlers={this.sessionEventHandlers}>
          {this.state.canPublish ? (
            <OTPublisher/>
          ) : null}
          <OTSubscriber/>
        </OTSession>
      </View>
    );
  }
}

export default App;

Para publicar, o cliente deve se conectar à sessão com um token ao qual foi atribuído um função que oferece suporte à publicação.

Verifique o valor do capabilities.publish propriedade do Session objeto. Se estiver definido como 1, o cliente pode publicar:

if (session.capabilities.publish == 1) {
    // The client can publish. See the next section.
} else {
    // The client cannot publish.
    // You may want to notify the user.
}

Para publicar, o cliente deve se conectar à sessão com um token ao qual tenha sido atribuída uma função que permita a publicação. É necessário que haja uma câmera e um microfone conectados. Além disso, o ambiente do cliente deve permitir a publicação (consulte Compatibilidade com navegadores).

Além disso, a publicação só é compatível com páginas HTTPS.

Verifique o valor do OTSession capablilites.canPublish propriedade. Se estiver definida como true, o cliente pode publicar:

if let capabilities = session.capabilities, capabilities.canPublish {
    // The client can publish.
} else {
    // The client cannot publish.
    // You may want to notify the user.
}

Para publicar, o cliente deve se conectar à sessão com um token ao qual tenha sido atribuída uma função que permita a publicação. Consulte o Visão geral da criação de tokens.

Verifique o valor do [OTSession.capablilites.canPublish:] propriedade. Se estiver definida como YES, o cliente pode publicar:

if (session.capabilities.canPublish) {
    // The client can publish.
} else {
    // The client cannot publish.
    // You may want to notify the user.
}

Para publicar, o cliente deve se conectar à sessão com um token ao qual tenha sido atribuída uma função que permita a publicação. Consulte o Visão geral da criação de tokens.

Para configurar os dispositivos e a qualidade assim que a verificação prévia for concluída, continue com Publicar: Configurações e dispositivos.