EasyExample - 1v1 视频通话示例源码

628
平台:iOS、Android
产品:实时音视频
更新时间:2023-12-08 17:06
版本号:1.0.1
Zego Developer
  • 视频
  • 音频
EasyExample 是一个用于演示如何使用 ZEGO Express SDK 快速实现 1v1 视频通话示例 Demo 源码,代码简洁易懂,帮助您快速体验 ZEGO 的音视频服务。

预览

选择你想要的平台

参考文档

ZEGO Easy Example

EasyExample 为开发者提供了 1v1 视频通话的最简示例代码,您可以参考以下文档快速运行源码。

您也可以前往 开发者中心,搜索文档和错误码。

快速开始

前提条件

  • Xcode 12 或以上版本。
  • CocoaPods
  • iOS 13.0 或以上版本且支持音视频的 iOS 设备或模拟器(推荐使用真机)。
  • 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目管理 中的“项目信息”。

安装 Pods

  1. 拷贝示例源码到本地。
  2. 打开终端,切换到 ZegoEasyExample 源码文件夹中 Podfile 文件所在路径,执行 pod repo update 命令。
  3. 执行 pod install 命令,安装所需依赖项。

修改项目配置

示例源码中缺少 SDK 初始化所需的 “AppID” 和 “AppSign”,请使用 ZEGO 控制台 获取到的 AppID 和 AppSign 正确填写,否则示例源码无法正常运行。

image.png

开始运行

  1. 将 iOS 设备连接到您的开发电脑。
  2. 打开 Xcode,单击上方的 “Any iOS Device”,在弹出的选项框选择该 iOS 设备(或者模拟器)。
  3. 单击左上角的 “Build” 按钮,编译和运行示例源码,体验相关服务。

集成 SDK

引入 SDK

  1. ZegoExpressEngineZegoToken SDK 添加到项目目录下。
  2. 打开终端,执行 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.swiftZegoExpressManager.swift 文件拷贝到项目目录下。

image.png

实现流程

API 接口调用顺序为:createEngine > joinRoom > setLocalVideoView/setRemoteVideoView > leaveRoom。

1 初始化引擎

使用相关功能前,首先需要先初始化 SDK。我们建议您在应用启动时,执行此操作,示例如下:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // create engine
        ZegoExpressManager.shared.createEngine(appID: AppCenter.appID)
        return true
    }

2 进入房间

当您想要通过音视频与其他人互动时,需要先调用 joinRoom 接口。请您根据自己的业务场景,设置相关选项:

  • 音频通话:[.autoPlayVideo, .autoPlayAudio, .publishLocalAudio, .publishLocalVideo]
  • 直播间:
    • 主播:[.autoPlayVideo, .autoPlayAudio, .publishLocalAudio, .publishLocalVideo]
    • 观众端:[.autoPlayVideo, .autoPlayAudio]
  • 语聊房:
    • 主播:[.autoPlayAudio, .publishLocalAudio]
    • 观众端:[.autoPlayAudio]

以下是 “音频通话” 的示例代码:

    @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()
    }

3 设置视频 View

如果您想要使用视频通话功能,需要设置一个 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)
        }
    }

4 离开房间

用户需要离开房间时,需要调用 leaveroom 接口。

@IBAction func pressLeaveRoomButton(_ sender: Any) {
    ZegoExpressManager.shared.leaveRoom()
    self.dismiss(animated: true, completion: nil)
}