快速入门

最近更新时间:2023-02-21 10:39:53

概览

本节介绍如何创建项目,并将对讲 SDK 集成至你的项目中。

开发环境要求

  • Xcode 9.0或以上版本
  • 支持 iOS 9.0或以上版本的iOS设备
  • 有效的anyRTC 账户App ID

快速集成

导入SDK

方法一:使用CocaPods 自动集成

  1. 开始前确保本地已安装CocaPods。如未安装请参看考 Getting Started with CocoaPods
  2. 在 Terminal 里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。
  3. 打开 Podfile 文件,修改文件为如下内容。注意将 Your App 替换为你的 Target 名称。
platform :ios,'9.0'
target ‘Your App’ do

pod 'ARTalkKit_iOS'

use_frameworks!

end
  1. 在 Terminal 内运行 pod update 命令更新本地库版本。
  2. 运行 pod install 命令安装 ARTalkKit SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。
  3. 打开新生成的 xcworkspace 文件。

方法二:手动复制 ARTalkKit SDK文件

  1. 前往 SDK 下载页面,获取最新版的 ARTalkKit SDK
  2. 在项目中找到ARTalkKit.framework,复制到项目文件夹下。
  3. 打开 Xcode(以 Xcode 11.0 为例),进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content 菜单,点击 +,再点击 Add Other… 添加 ARTalkKit.framework。添加完成后,项目会自动链接其他系统库。为保证动态库的签名和 app 的签名一致,你需要将动态库的 Embed 属性设置为 Embed & Sign。

注意事项:
根据 Apple 官方要求,App 的 Extension 不允许包含动态库。如果工程中的 Extension 需要集成 SDK,则集成动态库时需将文件状态改为 Do Not Embed。

配置权限

添加网络权限

根据场景需要,在 info.plist 文件中,点击 + 图标开始添加如下内容,获取相应的设备权限:

KeyTypeValue
App Transport Security SettingsDictionaryAllow Arbitrary Loads 设置为YES

操作流程

初始化SDK

在使用对讲相关功能之前必须要先初始化ARTalkKit

  • 在初始化ARTalkKit之前,首先要去官网申请App Id,把申请到的App Id替换下面示例代码中的"Your AppId"
func initializeKit() {
    /// 实例化 talkKit 对象
    talkEngine = ARTalkKit(appId: T##String, delegate: self)
}

登录

APP在成功登录对讲服务后才能使用对讲等相关服务

  • 传入能标识用户角色和权限的 Token。如果安全要求不高,也可以将值设为 nil。
  • 传入能标识每个用户的用户 id,用户 id 必须为字符串类型不能设置为空,也不能包含有空格等特殊字符。
  • ARTalkLoginErrorCode用来标识用户登录的状态比如:登录成功、登录失败、被服务器拒绝登录等。

注意:
1、用户 id 的长度不能超过64个字符
2、用户 id 必须是字符串
3、用户 id 不能传 "" 或者 nil

talkEngine?.login(byToken: nil, user: localUid, completion: { code in
    /// ARTalkLoginErrorOk 登录成功
})

对讲群组

创建频道

一个客户端可以加入多个频道,但是需要业务系统自己维护。

talkChannel = talkEngine?.createChannel(withId: channelIdTextField.text!, delegate: self)

监听频道事件

// MARK: - ARTalkChannelDelegate

extension ChannelViewController: ARTalkChannelDelegate {
    func channel(_ channel: ARTalkChannel, pushToTalkResult code: ARTalkPushToTalkErrorCode) {
        /// 开始对讲回调
    }
    
    func channel(_ channel: ARTalkChannel, pushToTalkEnded code: ARTalkPushToTalkEndErrorCode) {
        /// 结束对讲回调
    }
    
    func channel(_ channel: ARTalkChannel, userIsTalkOn uid: String, userData: String?, userLevel level: Int) {
        /// 其他用户开始对讲回调
    }
    
    func channel(_ channel: ARTalkChannel, userIsTalkOff uid: String, userData: String?) {
        /// 其他用户结束对讲回调
    }
    
    func channel(_ channel: ARTalkChannel, userStreamOn uid: String, userData: String?) {
        /// 广播通道打开回调
    }
    
    func channel(_ channel: ARTalkChannel, userStreamOff uid: String, userData: String?) {
        /// 广播通道关闭回调
    }
}

加入频道

talkChannel?.join(completion: { code in
    /// ARTalkJoinChannelErrorCode
})

开始对讲

talkChannel?.join(completion: { code in
    /// ARTalkJoinChannelErrorCode
})

结束对讲

talkChannel?.stopPushToTalk()

打断对讲

talkChannel?.breakTalk()

释放对讲频道资源

talkEngine?.releaseChannel(withId: channelIdTextField.text!)

登出

//登出 anyRTC 云平台对讲系统
talkEngine?.logout(completion: { code in
    // ARTalkLogoutErrorOk
})