Veröffentlichen: Preflight & Berechtigungen
Verwenden Sie diesen Leitfaden, um Berechtigungen und Fähigkeiten zu verifizieren, bevor Sie mit der Veröffentlichung beginnen, damit die Benutzer ein reibungsloses Erlebnis haben. Sie sehen sich das lokale Video in der Vorschau an, prüfen den Status der Kamera- und Mikrofonberechtigung und bestätigen, dass der Client veröffentlichen kann.
Vorschau vor dem Streaming
Standardmäßig wird in der Publisher-Ansicht eine lokale Vorschau angezeigt, wenn Sie das Streaming starten. Sie können auch explizit eine Vorschau vor der Veröffentlichung rendern:
Um eine Vorschau des Videos zu sehen, bevor der Publisher mit dem Streaming beginnt, rufen Sie die startPreview() Methode des Publisher-Objekts:
mPublisher.startPreview();
Wenn Sie die startPreview() Methode, müssen Sie die destroy() Methode des Herausgebers, um die Ansicht des Herausgebers (und das Video) zu entfernen, wenn der Herausgeber das Streaming beendet (wenn die onStreamDestroyed(PublisherKit publisher, Stream stream) Methode des PublisherListeners aufgerufen wird).
Zugang zur Kamera prüfen
Wir empfehlen, die Kamerarechte vor der Veröffentlichung zu überprüfen und die Benutzer anzuleiten, den Zugriff zu aktivieren, falls erforderlich.
Sie können steuern, wann diese Aufforderung angezeigt wird, indem Sie AVCaptureDevice requestAccess(for:completionHandler:) mit AVMediaType.Video, die beim ersten Aufruf die Eingabeaufforderung ausgibt. Nachfolgende Aufrufe führen den Completion-Handler mit der vom Benutzer gespeicherten Präferenz aus.
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.
}
}
Sie können steuern, wann diese Aufforderung angezeigt wird, indem Sie [AVCaptureDevice requestAccessForMediaType:completionHandler:] mit AVMediaTypeVideo, die beim ersten Aufruf die Eingabeaufforderung ausgibt. Nachfolgende Aufrufe führen den Completion-Handler mit der vom Benutzer gespeicherten Präferenz aus.
[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.
}
}];
Veröffentlichungsfähigkeit prüfen
Nachdem Sie eine Verbindung zu einer Sitzung hergestellt haben, können Sie prüfen, ob der Client veröffentlichen kann.
Sobald Sie eine Verbindung zu einer Sitzung hergestellt haben, können Sie überprüfen, ob der Client veröffentlichen kann. Setzen Sie einen Verweis auf die OTSession Objekt, und rufen Sie dessen getCapabilites() Methode in der sessionConnected Ereignisbehandler. Diese Methode gibt ein Versprechen mit einem Objekt zurück, das eine canPublish Eigenschaft. Sie können dann auf der Grundlage dieses Wertes eine bedingte Veröffentlichung vornehmen:
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;
Um zu veröffentlichen, muss der Client eine Verbindung zur Sitzung mit einem Token herstellen, dem ein Rolle die die Veröffentlichung unterstützt.
Prüfen Sie den Wert des capabilities.publish Eigenschaft der Session Objekt. Ist er auf 1 gesetzt, kann der Client veröffentlichen:
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.
}
Um zu veröffentlichen, muss der Client eine Verbindung zur Sitzung mit einem Token herstellen, dem eine Rolle zugewiesen ist, die die Veröffentlichung unterstützt. Es muss eine angeschlossene Kamera und ein Mikrofon vorhanden sein. Außerdem muss die Client-Umgebung die Veröffentlichung unterstützen (siehe Browser-Unterstützung).
Außerdem wird die Veröffentlichung nur auf HTTPS-Seiten unterstützt.
Prüfen Sie den Wert des OTSession capablilites.canPublish Eigenschaft. Wenn sie auf truekann der Client veröffentlichen:
if let capabilities = session.capabilities, capabilities.canPublish {
// The client can publish.
} else {
// The client cannot publish.
// You may want to notify the user.
}
Um zu veröffentlichen, muss der Client eine Verbindung zur Sitzung mit einem Token herstellen, dem eine Rolle zugewiesen ist, die die Veröffentlichung unterstützt. Siehe die Token-Erstellung Übersicht.
Prüfen Sie den Wert des [OTSession.capablilites.canPublish:] Eigenschaft. Wenn sie auf YESkann der Client veröffentlichen:
if (session.capabilities.canPublish) {
// The client can publish.
} else {
// The client cannot publish.
// You may want to notify the user.
}
Um zu veröffentlichen, muss der Client eine Verbindung zur Sitzung mit einem Token herstellen, dem eine Rolle zugewiesen ist, die die Veröffentlichung unterstützt. Siehe die Token-Erstellung Übersicht.
Um Geräte und Qualität zu konfigurieren, nachdem der Preflight bestanden ist, fahren Sie fort mit Veröffentlichen: Einstellungen & Geräte.