Swift

Publicação de um fluxo na sessão

Quando o aplicativo se conectar à sessão do Vonage Video, queremos que ele transmita um fluxo de áudio e vídeo para a sessão, utilizando a câmera e o microfone do dispositivo:

  1. Adicione um publisher & pubView propriedades para o VonageVideoManager classe.
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

O OTPublisher A classe está definida no SDK do iOS. Ela utiliza a câmera e o microfone do dispositivo para transmitir uma sessão do Vonage Video.

  1. Modificar a implementação do sessionDidConnect(_:) método para incluir código para publicar um stream na sessão:
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
        }
    }
}

Quando o aplicativo se conecta a uma sessão, ele inicializa uma instância do OTPublisher, definido no SDK do iOS. O construtor recebe um parâmetro: o objeto que implementa o OTPublisherDelegate protocolo.

Em seguida, o código passa o OTPublisher objeto como parâmetro da função session.publish() método. Esse método transmite um fluxo de áudio e vídeo para a sessão, utilizando a câmera e o microfone do dispositivo iOS. (Observe que, no simulador do Xcode, o SDK do iOS utiliza um vídeo de teste ao transmitir um fluxo.)

O OTPublisher O objeto possui um view propriedade, que é uma UIView objeto. Essa visualização exibe o vídeo capturado pela câmera do dispositivo. Nas próximas etapas, exibiremos essa visualização no SwiftUI (no caso de UIKit É simples e pode ser feito com um addSubview(view) função)

  1. Em seguida, precisamos criar um wrapper em torno do UIView para poder usá-lo no ambiente do 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. Agora vamos nos conectar VonageVideoManager para o ContentView como uma propriedade, precisaremos dela para interagir com os dados. A solução é flexível e se adapta a qualquer arquitetura; portanto, se você estiver usando ViewModel, Interactors ou qualquer outra coisa em seu projeto, nós temos a solução ideal para você:
struct ContentView: View {
    @ObservedObject var videoManager = VonageVideoManager()
}
  1. É hora de preencher o corpo da visualização; vamos usar nosso Wrap a visualização que criamos 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. Agora vamos implementar os métodos da OTPublisherDelegate protocolo. Esse protocolo inclui métodos para lidar com eventos relacionados ao editor. Adicione o código a seguir ao final do VonageVideoManager.swift arquivo, após o colchete de fechamento do OTSessionDelegate extensão:
// MARK: - OTPublisherDelegate callbacks
extension VonageVideoManager: OTPublisherDelegate {
    func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
        print("The publisher failed: \(error)")
    }
}
  • Se o cliente não conseguir publicar na sessão, um OTError o objeto é passado para o publisher(_: didFailWithError:) método.

Faça a depuração do seu aplicativo. Se o aplicativo se conectar com sucesso à sessão, ele publicará um stream na sessão, e você verá o vídeo do emissor no aplicativo.

Bate-papo por vídeo básico

Aprenda os conceitos básicos da plataforma Vonage Video API, incluindo como os usuários podem se comunicar por vídeo, voz e mensagens. Explore um fluxo básico da Vonage Video API.

Etapas
1
Introdução
2
Introdução
3
Criando um novo projeto
4
Adicionando a Biblioteca de Vídeos da Vonage
5
Configurando a autenticação
6
Conectando-se à sessão
7
Publicação de um fluxo na sessão
8
Inscrever-se nos feeds de outros clientes
9
Executando o aplicativo
10
Conclusão