Swift
Integrate with Vonage Video Manager
In your VonageVideoManager.swift, create an instance of the custom renderer and assign it to the publisher:
import OpenTok
import SwiftUI
final class VonageVideoManager: NSObject, ObservableObject {
let kAppId = "YOUR_APP_ID"
let kSessionId = "YOUR_SESSION_ID"
let kToken = "YOUR_TOKEN"
// Create the custom renderer instance
let renderer = CustomVideoRender()
private lazy var publisher: OTPublisher? = {
let settings = OTPublisherSettings()
settings.name = UIDevice.current.name
return OTPublisher(delegate: self, settings: settings)
}()
@Published var pubView: AnyView?
private func doPublish() {
var error: OTError?
defer {
processError(error)
}
// Assign the custom renderer to the publisher
guard let publisher else { return }
publisher.videoRender = renderer
session?.publish(publisher, error: &error)
// Setup view hierarchy
guard let pubView = publisher.view else { return }
pubView.frame = CGRect(x: 0, y: 0, width: 250, height: 250)
renderer.view.frame = CGRect(x: 0, y: 0, width: 250, height: 250)
pubView.addSubview(renderer.view)
// Wrap UIView for SwiftUI
DispatchQueue.main.async {
self.pubView = AnyView(Wrap(pubView))
}
}
}
Key Points:
- Create a single instance of
CustomVideoRender(reuse it, don't create multiple instances) - Assign it to
publisher.videoRenderbefore publishing - Add the renderer's view as a subview of the publisher's view
- Use a
Wraphelper to displayUIViewin SwiftUI
Basic video rendering
Learn how to use a custom video renderer in Swift to display a black-and-white version of a video stream using the Vonage Video iOS SDK.
Steps
1
Introduction2
Getting Started3
Creating a New Project4
Adding the Vonage Video SDK5
Setting Up Authentication6
Understanding the Architecture7
Create the Custom Render View8
Create the Custom Video Renderer9
Integrating with Vonage Video Manager10
Create UIView to SwiftUI Wrapper11
Display in SwiftUI12
How It Works13
Conclusion