概览
本节介绍如何创建项目,并将对讲 SDK 集成至你的项目中。
开发环境要求
快速集成
导入SDK
方法一:使用CocaPods 自动集成
- 开始前确保本地已安装CocaPods。如未安装请参看考 Getting Started with CocoaPods
- 在 Terminal 里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。
- 打开 Podfile 文件,修改文件为如下内容。注意将 Your App 替换为你的 Target 名称。
platform :ios,'9.0'
target ‘Your App’ do
pod 'ARTalkKit_iOS'
use_frameworks!
end
- 在 Terminal 内运行 pod update 命令更新本地库版本。
- 运行 pod install 命令安装 ARTalkKit SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。
- 打开新生成的 xcworkspace 文件。
方法二:手动复制 ARTalkKit SDK文件
- 前往 SDK 下载页面,获取最新版的 ARTalkKit SDK。
- 在项目中找到ARTalkKit.framework,复制到项目文件夹下。
- 打开 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 文件中,点击 + 图标开始添加如下内容,获取相应的设备权限:
Key | Type | Value |
---|---|---|
App Transport Security Settings | Dictionary | Allow 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
})