快速入门

最近更新时间:2023-06-08 01:31:38

本文介绍如何使用 anyRTC 互动白板 SDK。

前提条件

  • Xcode 9.0 或以上版本(本文 Xcode 的界面描述以 Xcode 11.0 为例)
  • iOS 9.0 或以上版本的设备
  • 有效的 anyRTC 开发者账号

创建 iOS 项目

  1. 打开 Xcode 并点击 Create a new Xcode project

  2. 选择平台类型为 iOS、项目类型为 Single View App,并点击 Next

  3. 输入项目名称(Product Name)、开发团队信息(Team)、组织名称(Organization Name)和语言(Language)等项目信息,并点击 Next

    如果你没有添加过开发团队信息,会看到 Add account… 按钮。点击该按钮并按照屏幕提示登入 Apple ID,完成后即可选择你的 Apple 账户作为开发团队。

  4. 选择项目存储路径,并点击 Create

获取 SDK

选择如下任意一种方式获取最新版 anyRTC SDK。

方法一:使用 CocoaPods 获取 SDK

  1. 开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
  2. 在终端里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。
  3. 打开 Podfile 文件,修改文件为如下内容。注意将 Your App 替换为你的 Target 名称。
# platform :ios, '9.0' use_frameworks!
target 'Your App' do
    pod 'ARBoard_iOS'
end
  1. 在终端内运行 pod install 命令安装 SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。
  2. 打开新生成的 xcworkspace 文件。

方法二:从官网获取 SDK

  1. 前往 SDK 下载页面,获取最新版的 anyRTC SDK,然后解压。

  2. 根据你的需求,选择以下一种方法将 ARBoard.framework动态库复制到项目的 ./project_name 文件夹下(project_name 为你的项目名称)。

  3. 打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content菜单。

  4. 点击 + > Add Other… > Add Files 添加 ARtcKit.framework 动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。 添加完成后,项目会自动链接所需系统库。

根据 Apple 官方要求,app 的 Extension 中不允许包含动态库。如果项目中的 Extension 需要集成 SDK,则添加动态库时需将文件状态改为 Do Not Embed

基本流程

现在,我们已经将 anyRTC SDK 集成到项目中了。接下来我们要在 ViewController 中调用 anyRTC SDK 提供的核心 API 实现基础的白板功能。

1. 初始化白板

Swift

    func initializeBoard() {
        let authParam = ARBoardAuthParam()
        authParam.appId = "你的APPID"
        authParam.uid = "XXX"
    
        let baseParam = ARBoardBaseParam()
        baseParam.authConfig.drawEnable = false
        baseParam.config.ratio = "3:4"
        baseParam.config.toolType = .none
        
        boardKit = ARBoardKit(authParam: authParam, roomId: channelId, boardParam: baseParam, delegate: self)
    }

2. 白板事件回调

Swift

extension ARBoardViewController: ARBoardDelegate {
    func board(_ boardKit: ARBoardKit, didOccurError errorCode: ARBoardErrorCode) {
        /// 发生错误回调
        Logger.log(message: "didOccurError errorCode = \(errorCode.rawValue)", level: .error)
    }
    
    func didHistoryDataSyncCompleted(_ boardKit: ARBoardKit) {
        /// 历史数据同步完成回调
        boardKit.setDrawEnable(true)
        Logger.log(message: "didHistoryDataSyncCompleted", level: .error)
    }
    
    func board(_ boardKit: ARBoardKit, addBoard boardIds: [Any], fileId: String) {
        /// 添加白板页的回调
        Logger.log(message: "addBoard boardIds = \(boardIds) fileId = \(fileId) ", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, deleteBoard boardIds: [Any], fileId: String) {
        /// 删除白板页的回调
        Logger.log(message: "deleteBoard boardIds = \(boardIds) fileId = \(fileId)", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, gotoBoard fileId: String, boardId: String) {
        /// 白板页切换的回调
        Logger.log(message: "gotoBoard fileId = \(fileId) boardId = \(boardId)", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, scaleChange boardId: String, scale: CGFloat) {
        /// 白板缩放的回调
        Logger.log(message: "scaleChannge boardId = \(boardId) scale = \(scale)", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, connectionChangedTo state: ARBoardConnectionStateType, reason: ARBoardConnectionChangedReason) {
        /// 网络状态回调
        Logger.log(message: "connectionChangedTo state = \(state.rawValue) reason = \(reason.rawValue)", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, undoStateChange enable: Bool) {
        /// 当前白板页是否可撤销
        Logger.log(message: "undoStateChange enable = \(enable)", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, redoStateChange enable: Bool) {
        /// 当前白板页是否可重做
        Logger.log(message: "redoStateChange enable = \(enable)", level: .info)
    }
    
    func boardReset(_ boardKit: ARBoardKit) {
        /// 重置白板(删除所有白板页和涂鸦)
        Logger.log(message: "boardReset", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, clear fileId: String, boardId: String, clearBackground isClearBackground: Bool) {
        /// 清空白板回调
        Logger.log(message: "clear fileId = \(fileId) boardId = \(boardId) isClearBackground = \(isClearBackground)", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, imageStatusChange status: ARBoardImageStatus, fileId: String, boardId: String, data: ARBoardImageData) {
        /// 背景图片加载状态变化的回调
        Logger.log(message: "imageStatusChange status = \(status.rawValue) fileId = \(fileId) boardId = \(boardId)", level: .info)
    }
    
    func board(_ boardKit: ARBoardKit, backgroundColorChange color: UIColor) {
        /// 背景颜色改变的回调
        Logger.log(message: "backgroundColorChange color = \(color)", level: .info)
    }
}

运行项目

在运行项目前,你需要设置签名和开发团队,并添加相应权限。