RoomKit
  • iOS : Objective-C
  • Android
  • macOS
  • Windows
  • Web
  • 小程序
  • 产品简介
    • 概述
    • 发布日志
  • 开通 RoomKit 服务
  • 下载体验 App
  • 下载 SDK
  • 含 UI 集成(RoomKitUI)
    • 快速开始
    • 进阶功能
  • 无 UI 集成(RoomKitCore)
  • RoomKit 服务端 API
  • 教育云服务端 API
  • 服务端 API 调测指南
  • 常见错误码
  • 客户端 API
  • 常见问题

集成

更新时间:2021-12-17 14:50

1 准备环境

在开始集成 RoomKit SDK 前,请确保开发环境满足以下要求:

  1. Xcode 6.0 或以上版本。
  2. iOS 9.0 或以上版本且支持音视频的 iOS 设备。
  3. iOS 设备已经连接到 Internet。

2 集成 SDK

2.1 新建项目(可选)

此步骤以如何创建新项目为例,如果是集成到已有项目,可忽略此步。
  1. 启动 Xcode,在 “Welcome to Xcode” 窗口中单击 “Create a new Xcode project” 或选择 “File > New > Project” 菜单。在出现的表单中,选择 iOS 平台,并在 “Application” 下选择 “App”。
  1. 填写表单并选取各个选项来配置项目,单击 “Next”。

必须提供 “Product Name” 和 “Organization Identify”,用于创建在整个系统中标识 App 的 “Bundle Identify”。

  1. 选择项目存储路径,单击 “Create” 创建项目。

2.2 导入 SDK

  1. 请参考 下载 SDK 包,下载最新版本的 SDK,下载完成后进行解压。
  2. 手动将 SDK 动态库文件 “ZegoRoomKitCore.xcframework” 等 9 个库,拷贝到开发者项目目录下。
  3. 手动将 “ZegoRoomKitResources.bundle” 文件,拷贝到开发者项目目录下。
  4. 打开 Xcode,选择 “TARGETS > General > Frameworks,Libraries,and Embedded Content”,点击 “+” 添加上述 9 个动态库。

/Pics/RoomKit/iOS/framework_add.png

  1. 打开 Xcode,选择 “TARGETS > Build Phases > Copy Bundle Resources”,点击 “+” 添加 “ZegoRoomKitResources.bundle” 文件。
    /Pics/RoomKit/iOS/copy_bundle.png

2.3 配置 SDK

RoomKit SDK 支持手动或 CocoaPods 的方式集成,以下是两种集成方式的具体说明:

2.3.1 手动集成

  1. 打开 Xcode,选择 “TARGETS > General > Frameworks,Libraries,and Embedded Content” 菜单,将添加的动态库文件的 “Embed” 设置为 “Embed & Sign”。

    /Pics/RoomKit/iOS/frameworks_add_21.png

  2. 打开 Xcode,选择 “TARGETS > General > Framework and Libraries” 进行屏幕共享扩展设置。

    /Pics/RoomKit/iOS/frameworks02_21.png

2.3.2 以 CocoaPods 的方式集成

  1. 打开 Xcode,选择 “TARGETS > General > Frameworks,Libraries,and Embedded Content” 菜单,去掉手动集成时引入的 “ZegoRoomKitResources.bundle” 文件,只留下图中的五个文件。

    /Pics/RoomKit/iOS/pods_add_handle_resource.png

  2. 打开 Xcode,选择 “TARGETS > General > Frameworks,Libraries,and Embedded Content” 菜单,去掉手动集成时引入的库,只留下图中的两个文件。

    /Pics/RoomKit/iOS/pods_add_handle_frameworks.png

  3. 打开 Xcode,选择 “TARGETS > General > Framework and Libraries” 进行屏幕共享扩展设置,去掉手动集成时引入的库,只留下图中的一个文件。

    /Pics/RoomKit/iOS/pod_add_handle_framework_extention.png

  4. 打开 Xcode,并选中 Podfile 文件,添加 ZegoRoomKit 并填写需要的版本号。

    /Pics/RoomKit/iOS/pods_add_podfile_2.png

3 设置权限

根据实际应用需要,设置应用所需权限。

  1. 在 Xcode 中,选择 “TARGETS > Info > Custom iOS Target Properties” 菜单。
  2. 点击 “+” 按钮,添加摄像头、麦克风和相册访问权限:
  • Privacy - Camera Usage Description
  • Privacy - Microphone Usage Description
  • Privacy - Photo Library Usage Description
    添加权限

4 添加 Cocoapods 库

开发者需要额外引入以下 Cocoapods 库,已引入的不必重复引入。

  1. 需要将引入的第三方库都设置为动态库:use_frameworks!
  2. 若工程中单独引入了 YYKit 的其它库 (如 YYModel、YYCache 等),请删除这些库,并统一使用 YYKit 库。
  3. 手动集成和 CocoaPods 集成的 Podfile 文件有区别,下面给出了两种方式不同的 Podfile 的具体内容。

手动集成的方式:

platform :ios, '9.0'
use_frameworks!

target 'ZegoRoomkitDemo' do

pod 'Masonry', '1.1.0'
pod 'YYKit', '1.0.9'
pod 'LEEAlert', '1.4.2'
pod 'MBProgressHUD', '1.2.0'
pod 'ReactiveObjC', '3.1.1'
pod 'SSZipArchive', '2.2.2'
pod 'TXIMSDK_Smart_iOS', '5.1.138'

end

以 CocoaPods 的方式集成:

install! 'cocoapods', :disable_input_output_paths => true
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
source 'https://github.com/CocoaPods/Specs.git'

target 'ZegoRoomkitDemo' do
  pod 'Masonry', '1.1.0'
  pod 'YYKit', '1.0.9'
  pod 'LEEAlert', '1.4.2'
  pod 'MBProgressHUD', '1.2.0'
  pod 'SSZipArchive', '2.2.2'
  pod 'ReactiveObjC', '3.1.1'
  pod 'TXIMSDK_Smart_iOS'
  pod 'MLeaksFinder', '1.0.0'
  pod 'lottie-ios', '2.5.3'
  pod 'AFNetworking', '4.0.1'
  pod 'MJRefresh', '3.5.0'
  pod 'Bugly'
  pod 'ZegoRoomKit', '2.1.0'
end 

target 'ZegoRoomkitDemoScreenShare' do
  pod 'ZegoRoomKit/Core', '2.1.0'
end

5 其他设置

5.1 Capability

  • App Groups

如果要在房间内使用屏幕共享,为了在主进程和屏幕共享扩展之间共享数据,需要添加 App Group。 未配置 App Group 时,程序可以运行但无法使用屏幕共享功能。

在 Xcode 中,选择 "Signing & Capabilities -> + Capability", 添加 App Groups 功能,然后点击 “+”,为应用程序添加一个 App Group ID。

roomkit_app_group

  • Background Modes

为了保证 App 在应用程序进入后台时也能进行通信,需要给 App 添加此功能。

在 Xcode 中,选择 "Signing & Capabilities -> + Capability",添加 Background Modes 功能,并点击选中第一项 “Audio, AirPlay, and Picture in Picture”。

roomkit_background_modes

  • iCloud

在 Roomkit 文件共享的时候可能需要选中存储在 iCloud 云盘上的文件,所有需要给应用程序添加 iCloud 能力。未配置 iCloud 时,程序可以运行但无法在云盘中上传 iCloud 的文件。

在 Xcode 中,选择 "Signing & Capabilities -> + Capability",添加 iCloud 功能,然后点击选中 “Key-value storage” 和 “iCloud Documents” 两个 Services,并点击下方 '+' 按钮,给应用程序添加一个 iCloud Container。

roomkit_icloud

  • Device Orientation

需要设置应用所支持的屏幕方向,否则可能会导致 crash。
在 Xcode 中,选择 "TARGETS -> General -> Deployment Info -> Device Orientation",勾选上 “Portrait”,“Landscape Right”,“Landscape Left”。

/Pics/RoomKit/iOS/orientation_21.png

5.2 创建屏幕共享扩展

  1. 新建一个屏幕共享 target。

/Pics/RoomKit/iOS/roomkit_screen_share_creat_21_01.png

单击 “Next”,取消勾选 “Include UI Extension”。

/Pics/RoomKit/iOS/roomkit_screen_share_creat_21_02.png

  1. 添加 App Groups,屏幕共享扩展也需要添加 App Groups,并且 group ID 需要和主 App 的 group ID 保持一致。
  2. 引入 Roomkit SDK,请参考 2 集成 SDK
  3. 实现屏幕共享扩展,请参考 示例源码

6 常见问题

  1. 打包时报错:“Failed to verify bitcode in xxx.framework/xxx”?

    请检查 Xcode 版本是否过低,建议更新为最新的 Xcode 版本。 若一定要使用旧版 Xcode 打包,请先在工程的 “Build Setting” 中找到 “Enable Bitcode” 选项并设为 “NO”,然后打开终端,cd DIRECTORY 到 xxx.framework 所在目录 DIRECTORY,执行以下命令以去除 SDK 内的 Bitcode。

    xcrun bitcode_strip .framework/xxx -r -o xxx.framework/xxx
  2. 运行 App 时提示:“Building for iOS Simulator, but the linked and embedded framework 'xxx.framework' was built for iOS + iOS Simulator.”?

    在 Xcode 12.3 版本以后,默认禁止使用带 iOS + iOS(Simulator) 双平台架构的 Framework,可以通过 Xcode 选择 “TARGETS > Build Settings > Validate Workspace”,设置该参数的值为 “YES” 来继续使用传统 Framework。