Swift

Configurar la sesión de Vonage para pantalla compartida

En tu gestor de sesiones/vídeos:

  1. Crear una vista para poder ver la pantalla compartida funcionando en tiempo real utilizaremos un simple temporizador
final class VonageVideoManager: NSObject, ObservableObject {
    @Published var timeStamp: String = "00:00:00.00"
        
    fileprivate let formatter: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.dateStyle = .short
        dateFormatter.timeStyle = .long
        return dateFormatter
    }()

    public func setup() {
        Timer.scheduledTimer(withTimeInterval: TimeInterval(1), repeats: true) { [weak self] _ in
            guard let self else { return }
            self.timeStamp = self.formatter.string(from: Date())
        }
        doConnect()
    }
    
    // ...

y luego asignarlo en Vista:

struct ContentView: View {
    @ObservedObject var videoManager = VonageVideoManager()
    
    var body: some View {
        VStack {
            Text(videoManager.timeStamp)
                .background(.red)
                .frame(width: 200, height: 200, alignment: .center)
                .cornerRadius(5.0)
        }
        .task {
            videoManager.setup()
        }
    }
}
  1. Crear un OTPublisher con videoType = .screen y audioFallbackEnabled = false.
  2. Asignar el capturador personalizado antes de publicar:
publisher.videoType = .screen
publisher.audioFallbackEnabled = false

let rootView = UIApplication.shared.rootViewController?.view ?? UIView()
capturer = ScreenCapturer(withView: rootView)
publisher.videoCapture = capturer
publisher.videoCapture?.videoContentHint = .text

session.publish(publisher, error: &error)
  1. Publicar el editor - el flujo de pantalla compartida se enviará a la sesión.