Publier : Contrôle en amont et autorisations

Utilisez ce guide pour vérifier les autorisations et les capacités avant de commencer à publier, afin que les utilisateurs aient une expérience fluide. Vous prévisualiserez la vidéo locale, vérifierez l'état des autorisations de la caméra/du micro et confirmerez que le client peut publier.

Prévisualisation avant diffusion

Par défaut, la vue de l'éditeur affiche un aperçu local lorsque vous commencez la diffusion. Vous pouvez également rendre explicitement un aperçu avant la publication :

Pour voir un aperçu de la vidéo avant que l'éditeur ne commence à la diffuser, appelez la fonction startPreview() de l'objet Publisher :

mPublisher.startPreview();

Si vous appelez le startPreview() vous devez appeler la méthode destroy() de l'éditeur pour supprimer la vue de l'éditeur (et la vidéo), lorsque l'éditeur arrête la diffusion (lorsque la méthode onStreamDestroyed(PublisherKit publisher, Stream stream) du PublisherListener est appelée).

Vérifier l'accès à la caméra

Il est recommandé de vérifier les autorisations des caméras avant la publication et de guider les utilisateurs pour qu'ils autorisent l'accès si nécessaire.

Vous pouvez contrôler le moment où cette invite est affichée en appelant AVCaptureDevice requestAccess(for:completionHandler:) avec AVMediaType.Videoqui affichera l'invite lors de la première exécution. Les appels suivants exécuteront le gestionnaire d'achèvement avec la préférence enregistrée par l'utilisateur.

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

Vérifier la capacité de publication

Après vous être connecté à une session, vous pouvez vérifier si le client peut publier.

Une fois que vous vous êtes connecté à une session, vous pouvez vérifier si le client peut publier. Définissez une référence à l'élément OTSession et appeler son objet getCapabilites() dans la méthode sessionConnected (gestionnaire d'événement). Cette méthode renvoie une promesse avec un objet qui comprend un canPublish de la propriété. Vous pouvez ensuite procéder à une publication conditionnelle en fonction de cette valeur :

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;

Pour publier, le client doit se connecter à la session à l'aide d'un jeton auquel est attribué un code rôle qui soutient la publication.

Pour configurer les appareils et la qualité une fois que le contrôle en amont a été effectué, continuez avec Publier : Paramètres et dispositifs.