快速入门

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

概览

本节介绍如何创建项目,并将 RTM 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 'ARtmKit_iOS'

use_frameworks!

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

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

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

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

动态库添加前:

image

动态库添加后:

image

配置权限

添加网络权限

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

KeyTypeValue
App Transport Security SettingsDictionaryAllow Arbitrary Loads 设置为YES

添加前:

image

添加后:

image

操作流程

初始化SDK

在使用RTM相关功能之前必须要先初始化ARtmKit

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

登录

APP在成功登录RTM服务器后才能使用点对点消息,群聊等相关服务

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

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

    rtmKit.login(byToken: "", user: <#T##String#>) { (errorCode) in
        // errorCode 0 登录成功
    }

点对点发送消息

在APP成功登录RTM服务后可使用sendMessageToUser方法进行发送点对点消息

  • 传入需要接收消息的用户ID
  • 初始化消息内容对象ARtmMessage,完成后使用ARtmMessagesetText()方法设置消息内容。
  • ARtmSendPeerMessageErrorCode枚举类型状态码用来表示消息发送的状态,如:对端已接收到点对点消息,点对点消息发送失败,发送超时等。
  • ARtmDelegatemessageReceived:fromPeer代理回调用来监听接收到点对点消息内容回调

注意:
使用点对点消息回调时必须遵循 ARtmDelegate

//给指定用户发送消息
func sendMessageToUser(message: String, uid: String) {
    // 创建一个消息类
    let message = ARtmMessage(text: message)
    let mOptions = ARtmSendMessageOptions()
    rtmKit.send(message, toPeer: uid, sendMessageOptions: mOptions) { (errorCode) in
        //errorCode 0 发送成功
    }
}

//MARK: - ARtmDelegate

func rtmKit(_ kit: ARtmKit, messageReceived message: ARtmMessage, fromPeer peerId: String) {
    //接收到点对点消息回调        
}

频道消息

App 成功登录 RTM 服务器之后,可以开始使用 RTM 的频道消息功能

创建和加入频道

  • 使用 RTM 服务的频道消息功能必须要创建createChannel()和加入join()频道然后才可以使用ARtmChannel管理里的send()方法进行发送频道消息
  • 设置ARtmChannelDelegate用来监听群聊中用户进入,用户退出,收到消息等服务

注意:
创建频道时的channelId必须为字符串类型,不能为空。

// 创建频道
func createChannel(channelId: String) {
    // 创建频道
    channel = rtmKit.createChannel(withId: channelId, delegate: self)
    // 加入频道
    channel.join { (errorCode) in
        // errorCode 0 加入成功
    }
}

// 发送频道消息
func sendMessageToChannel(message:String) {
    // 创建一个消息类
    let message = ARtmMessage(text: message)
    let mOptions = ARtmSendMessageOptions()
    channel.send(message, sendMessageOptions: mOptions) { (errorCode) in
        // errorCode 0 发送成功
    }
}

//MARK: - ARtmChannelDelegate

func channel(_ channel: ARtmChannel, memberLeft member: ARtmMember) {
    //用户进入频道回调
}
    
func channel(_ channel: ARtmChannel, memberJoined member: ARtmMember) {
    //用户离开频道回调
}

func channel(_ channel: ARtmChannel, messageReceived message: ARtmMessage, from member: ARtmMember) {
    //接收到频道消息回调    
}

登出

退出 RTM 服务器

  • 如果是在频道中要先调用leave()成功后调用destroyChannel()释放该频道所有资源,调用logout()退出 RTM 服务器。
  • 没有在频道中可以直接调用logout()退出RM服务器

如果想要再次进入RTM服务需要重新登录login()

rtmKit.logout { (errorCode) in
    // errorCode 0 登出成功
}