EasyExample 为开发者提供了 1v1 视频通话的最简示例代码,您可以参考以下文档快速运行源码。
您也可以前往 开发者中心,搜索文档和错误码。
ZegoEasyExample
源码文件夹中 Podfile
文件所在路径,执行 pod repo update
命令。pod install
命令,安装所需依赖项。示例源码中缺少 SDK 初始化所需的 “AppID” 和 “AppSign”,请使用 ZEGO 控制台 获取到的 AppID 和 AppSign 正确填写,否则示例源码无法正常运行。
ZegoExpressEngine
和 ZegoToken
SDK 添加到项目目录下。pod install
命令,安装所需依赖。target 'Your_Project_Name' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for ZegoEasyExample
pod 'ZegoExpressEngine'
pod ‘ZegoToken’
end
将 AppCenter.swift
和 ZegoExpressManager.swift
文件拷贝到项目目录下。
API 接口调用顺序为:createEngine > joinRoom > setLocalVideoView/setRemoteVideoView > leaveRoom。
使用相关功能前,首先需要先初始化 SDK。我们建议您在应用启动时,执行此操作,示例如下:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// create engine
ZegoExpressManager.shared.createEngine(appID: AppCenter.appID)
return true
}
当您想要通过音视频与其他人互动时,需要先调用 joinRoom
接口。请您根据自己的业务场景,设置相关选项:
以下是 “音频通话” 的示例代码:
@IBAction func pressJoinRoom(_ sender: UIButton) {
// join room
let roomID = "111"
let user = ZegoUser(userID: "id\(Int(arc4random()))", userName: "Tim")
let token = generateToken(userID: user.userID)
let option: ZegoMediaOptions = [.autoPlayVideo, .autoPlayAudio, .publishLocalAudio, .publishLocalVideo]
ZegoExpressManager.shared.joinRoom(roomID: roomID, user: user, token: token, options: option)
presentVideoVC()
}
如果您想要使用视频通话功能,需要设置一个 View,用于播放视频。
setLocalVideoView
接口,设置本地视频窗口。setRemoteVideoView
接口,设置远端视频窗口。setLocalVideoView:
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
// set video view
ZegoExpressManager.shared.setLocalVideoView(renderView: localVideoView)
}
setRemoteVideoView:
func onRoomUserUpdate(udpateType: ZegoUpdateType, userList: [String], roomID: String) {
for userID in userList {
// set video view
ZegoExpressManager.shared.setRemoteVideoView(userID:userID, renderView: remoteVideoView)
}
}
用户需要离开房间时,需要调用 leaveroom
接口。
@IBAction func pressLeaveRoomButton(_ sender: Any) {
ZegoExpressManager.shared.leaveRoom()
self.dismiss(animated: true, completion: nil)
}