Publicar: Comprobación previa y permisos

Utilice esta guía para verificar los permisos y capacidades antes de empezar a publicar, para que los usuarios tengan una experiencia sin problemas. Previsualizará el vídeo local, comprobará el estado de los permisos de cámara/micrófono y confirmará que el cliente puede publicar.

Vista previa antes del streaming

Por defecto, la vista Editor muestra una vista previa local cuando se inicia la transmisión. También puede mostrar explícitamente una vista previa antes de publicar:

Para ver una vista previa del vídeo antes de que el editor empiece a emitirlo, llame al botón startPreview() del objeto Editor:

Si llama al startPreview() debe llamar al método destroy() del editor para eliminar la vista del editor (y el vídeo), cuando el editor deja de emitir (cuando el método onStreamDestroyed(PublisherKit publisher, Stream stream) del PublisherListener).

Comprobar el acceso a la cámara

Recomendamos comprobar los permisos de la cámara antes de publicarla y guiar a los usuarios para que habiliten el acceso si es necesario.

Puede controlar cuándo se muestra este mensaje llamando a AVCaptureDevice requestAccess(for:completionHandler:) con AVMediaType.Videoque dará el aviso en la primera ejecución. Las llamadas posteriores ejecutarán el manejador de finalización con la preferencia almacenada del usuario.

Comprobar la capacidad de publicación

Después de conectarse a una sesión, puede comprobar si el cliente puede publicar.

Una vez conectado a una sesión, puede comprobar si el cliente puede publicar. Establezca una referencia al OTSession y llamar a su objeto getCapabilites() en el método sessionConnected manejador de eventos. Este método devuelve una promesa con un objeto que incluye un canPublish propiedad. A continuación, puede publicar condicionalmente en función de ese 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, el cliente debe conectarse a la sesión con un token al que se le asigna un papel que apoya la publicación.

Para configurar los dispositivos y la calidad una vez superada la verificación previa, continúe con Publicar: Ajustes y dispositivos.