Swift

Publicación de un flujo en la sesión

Cuando la aplicación se conecta a la sesión de Vonage Video, queremos que publique una transmisión de audio y video en la sesión, utilizando la cámara y el micrófono del dispositivo:

  1. Añadir un publisher & pubView propiedades al VonageVideoManager clase.
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)
    }()
    @Published var pubView: UIView? // this will be needed to display the UI later on

En OTPublisher está definida en el SDK de iOS. Utiliza la cámara y el micrófono del dispositivo para publicar una sesión de transmisión de Vonage Video.

  1. Modificar la aplicación del sessionDidConnect(_:) para incluir código para publicar un flujo en la sesión:
func sessionDidConnect(_ session: OTSession) {
    print("The client connected to the session.")

    var error: OTError?
    defer {
        if let error {
            print(error)
        }
    }
    
    guard let publisher else {
        return
    }
        
    session.publish(publisher, error: &error)
    
    if let view = publisher.view {
        DispatchQueue.main.async {
            self.pubView = view
        }
    }
}

Cuando la aplicación se conecta a una sesión, inicializa una instancia del archivo OTPublisherdefinido en el SDK de iOS. El constructor recibe un parámetro: el objeto que implementa la función OTPublisherDelegate protocolo.

A continuación, el código pasa el OTPublisher como parámetro del session.publish() método. Este método publica un flujo de audio-vídeo en la sesión, utilizando la cámara y el micrófono del dispositivo iOS. (Tenga en cuenta que en el simulador de Xcode, el SDK de iOS utiliza un vídeo de prueba al publicar una secuencia).

En OTPublisher tiene un objeto view que es una propiedad UIView objeto. Esta vista muestra el vídeo capturado desde la cámara del dispositivo. En los próximos pasos vamos a mostrar esta vista en SwiftUI (en caso de UIKit es sencillo y se puede hacer con un addSubview(view) función)

  1. A continuación tenemos que crear una envoltura alrededor de UIView para poder utilizarlo en el mundo SwiftUI:
struct Wrap: UIViewRepresentable {
    @State var view: UIView
    
    func makeUIView(context: Context) -> UIView {
        return view
    }
    
    func updateUIView(_ uiView: UIView, context: Context) {
        DispatchQueue.main.async {
            self.view = uiView
        }
    }
}
  1. Ahora vamos a conectar VonageVideoManager a la ContentView como propiedad, la necesitaremos para interactuar con los datos. La solución es flexible y se adapta a cualquier arquitectura, así que si estás usando ViewModel, Interactors o cualquier otra cosa en tu proyecto - te tenemos cubierto:
struct ContentView: View {
    @ObservedObject var videoManager = VonageVideoManager()
}
  1. Es hora de rellenar el cuerpo de la vista, utilizaremos nuestro método Wrap que hemos creado anteriormente:
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)
        }
        .task {
            videoManager.setup()
        }
    }
}
  1. Ahora implementaremos los métodos del OTPublisherDelegate protocolo. Este protocolo incluye métodos para manejar eventos relacionados con el editor. Añada el siguiente código al final del archivo VonageVideoManager.swift después del corchete de cierre del archivo OTSessionDelegate extensión:
// MARK: - OTPublisherDelegate callbacks
extension VonageVideoManager: OTPublisherDelegate {
    func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
        print("The publisher failed: \(error)")
    }
}
  • Si el cliente no consigue publicar en la sesión, se emitirá un OTError se pasa al objeto publisher(_: didFailWithError:) método.

Depura tu aplicación. Si la aplicación se conecta correctamente a la sesión, publicará un flujo en la sesión y verá el vídeo del editor en la aplicación.

Videochat básico

Conoce los conceptos básicos de la plataforma de la Video API de Vonage, incluyendo cómo los usuarios pueden comunicarse a través de video, voz y mensajería. Explora un flujo básico de la Video API de Vonage.

Pasos
1
Introducción
2
Primeros pasos
3
Crear un nuevo proyecto
4
Cómo agregar la videoteca de Vonage
5
Configuración de la autenticación
6
Conexión a la sesión
7
Publicación de un flujo en la sesión
8
Suscripción a flujos de otros clientes
9
Ejecutar la aplicación
10
Conclusión