S'abonner aux flux d'autres clients
Enfin, nous voulons que les clients puissent souscrire à (ou voir) les flux d'autres clients dans la session :
- Ajouter un
subscriber&subViewaux propriétés de laVonageVideoManagerclasse :
final class VonageVideoManager: NSObject, ObservableObject {
private var session: OTSession?
private lazy var publisher: OTPublisher? = {
let settings = OTPublisherSettings()
settings.name = UIDevice.current.name
return OTPublisher(delegate: self, settings: settings)
}()
private var subscriber: OTSubscriber?
@Published var pubView: UIView?
@Published var subView: UIView?
Les Abonné OTS est définie dans le SDK iOS. Elle utilise la caméra et le microphone de l'appareil pour souscrire à une session vidéo Vonage.
- Modifier la mise en œuvre de la
session(_: streamCreated)(l'une des méthodesOTSessionDelegate) pour inclure du code permettant de s'abonner aux flux des autres clients de la session :
func session(_ session: OTSession, streamCreated stream: OTStream) {
print("Session streamCreated: \(stream.streamId)")
var error: OTError?
defer {
if let error {
print(error)
}
}
let subscriber = OTSubscriber(stream: stream, delegate: self)
self.subscriber = subscriber
session.subscribe(subscriber, error: &error)
}
Lorsqu'un autre client publie un flux dans une session, cette méthode est appelée et un message OTStream est transmis. L'objet OTStream est définie dans le SDK iOS et représente un flux audio-vidéo dans la session. Le code initialise une instance de la classe OTSubscriber définie dans le SDK iOS. La classe OTSubscriber() prend deux paramètres : le OTStream (pour le flux que vous souhaitez visualiser) et l'objet qui implémente la méthode OTSubscriberDelegate protocole.
- Ensuite, nous mettrons en œuvre les méthodes de la classe
OTSubscriberDelegateprotocole. Ce protocole comprend des méthodes pour gérer les événements liés à l'abonné. Ajoutez le code suivant à la fin du fichierVonageVideoManager.swiftaprès le crochet de fermeture du fichierOTPublisherDelegateextension :
// MARK: - OTSubscriberDelegate callbacks
extension VonageVideoManager: OTSubscriberDelegate {
func subscriberDidConnect(toStream subscriberKit: OTSubscriberKit) {
print("The subscriber did connect to the stream.")
if let view = subscriber?.view {
DispatchQueue.main.async {
self.subView = view
}
}
}
func subscriber(_ subscriber: OTSubscriberKit, didFailWithError error: OTError) {
print("Subscriber failed: \(error.localizedDescription)")
}
}
- Lorsque le client se connecte à la session, la fonction
subscriberDidConnect(_:)est appelée. - Si le client ne parvient pas à se connecter à la session, un objet OTError est transmis à la fonction
subscriber(_: didFailWithError:)méthode.
- Enfin, mettez à jour le code de l'interface utilisateur pour inclure également la vue de l'abonné :
struct ContentView: View {
@ObservedObject var videoManager = VonageVideoManager()
var body: some View {
VStack {
videoManager.pubView.flatMap { view in
Wrap(view)
.frame(width: 200, height: 200, alignment: .center)
}.cornerRadius(5.0)
videoManager.subView.flatMap { view in
Wrap(view)
.frame(width: 200, height: 200, alignment: .center)
}.cornerRadius(5.0)
}
.task {
videoManager.setup()
}
}
}
Chat vidéo de base
Apprenez les concepts de base de la plateforme Video API de Vonage, y compris la façon dont les utilisateurs peuvent communiquer par le biais de la vidéo, de la voix et de la messagerie. Explorer un flux de base de l'API Video de Vonage.