Skip to content

Commit

Permalink
[uikit] add
Browse files Browse the repository at this point in the history
  • Loading branch information
kelzr committed Oct 19, 2023
1 parent ac12f87 commit c53799a
Show file tree
Hide file tree
Showing 2 changed files with 412 additions and 61 deletions.
107 changes: 51 additions & 56 deletions markdown/chatroom/AUIVoiceRoom/input-ios.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,53 @@
VoiceChatUIKit 基于声网 RTC、RTM 引擎、AUIKit 等模块封装,帮助你轻松管理语聊房。你可以使用 VoiceChatUIKit 类中的 API 实现语聊房间的创建、用户进房、退出和销毁等功能。
`VoiceChatUIKit` 基于声网 RTC、RTM 引擎、AUIKit 等模块封装,帮助你轻松管理语聊房。你可以使用 `VoiceChatUIKit` 类中的 API 实现语聊房间的创建、用户进房、退出和销毁等功能。

### 1. 初始化 VoiceChatUIKit

本节展示初始化 VoiceChatUIKit 的代码逻辑:
本节展示初始化 `VoiceChatUIKit` 的代码逻辑:

#### 导入依赖库
1.`AppDelegate.swift` 文件里导入依赖库:

`AppDelegate.swift` 文件里导入依赖库:

```swift
import AUIKitCore
import AScenesKit
```

#### 初始化
```swift
import AUIKitCore
import AScenesKit
```

AppDelegate 类中调用 VoiceChatUIKit 类的 setup 方法并传入如下参数,初始化 VoiceChatUIKit:
2. 在 `AppDelegate` 类中调用 `VoiceChatUIKit` 类的 `setup` 方法并传入如下参数,初始化 `VoiceChatUIKit`

- roomConfig:通用配置,包含后端域名地址、用户 ID、用户名、用户头像。
- rtcEngine:声网 RTC 引擎。
- rtcClient:声网 RTM 引擎。
- `roomConfig`:通用配置,包含后端域名地址用户 ID用户名用户头像
- `rtcEngine`:声网 RTC 引擎
- `rtcClient`:声网 RTM 引擎

```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 生成一个随机的用户 ID
let uid = Int(arc4random_uniform(99999999))
```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 生成一个随机的用户 ID
let uid = Int(arc4random_uniform(99999999))

// 创建一个 AUICommonConfig 实例
let commonConfig = AUICommonConfig()
// 创建一个 AUICommonConfig 实例
let commonConfig = AUICommonConfig()

// 设置 AUICommonConfig 的属性值
commonConfig.host = "https://service.agora.io/uikit-voiceroom" // 设置主机地址
commonConfig.userId = "\(uid)" // 设置用户 ID
commonConfig.userName = "user_\(uid)" // 设置用户名
commonConfig.userAvatar = "https://accktvpic.oss-cn-beijing.aliyuncs.com/pic/sample_avatar/sample_avatar_1.png" // 设置用户头像
// 设置 AUICommonConfig 的属性值
commonConfig.host = "https://service.agora.io/uikit-voiceroom" // 设置主机地址
commonConfig.userId = "\(uid)" // 设置用户 ID
commonConfig.userName = "user_\(uid)" // 设置用户名
commonConfig.userAvatar = "https://accktvpic.oss-cn-beijing.aliyuncs.com/pic/sample_avatar/sample_avatar_1.png" // 设置用户头像

// 调用 VoiceChatUIKit 的 setup 方法进行初始化设置
VoiceChatUIKit.shared.setup(roomConfig: commonConfig,
rtcEngine: nil, // 如果有外部初始化的 rtc engine,可以传入该实例
rtmClient: nil) // 如果有外部初始化的 rtm client,可以传入该实例
// 调用 VoiceChatUIKit 的 setup 方法进行初始化设置
VoiceChatUIKit.shared.setup(roomConfig: commonConfig,
rtcEngine: nil, // 如果有外部初始化的 rtc engine,可以传入该实例
rtmClient: nil) // 如果有外部初始化的 rtm client,可以传入该实例

// 在应用程序启动完成后的自定义逻辑(可根据需要进行覆盖)
...
// 在应用程序启动完成后的自定义逻辑(可根据需要进行覆盖)
...

return true
}
```
return true
}
```

### 2. 房主创建房间

本节展示如何让房主创建语聊房

#### 添加「创建房间」按钮
#### 添加按钮:创建房间

在 `ViewController.swift` 文件里导入依赖库:

Expand All @@ -60,7 +56,7 @@ import AUIKitCore
import AScenesKit
```

在 ViewController 类中,通过 iOS 原生方法增加一个「创建房间」按钮,用于让房主点击创建。
`ViewController` 类中,通过 iOS 原生方法增加一个「创建房间」按钮,用于让房主点击创建。

```swift
override func viewDidLoad() {
Expand All @@ -77,9 +73,9 @@ override func viewDidLoad() {

#### 创建语聊房

在 ViewController 类中,调用 VoiceChatUIKit 类的 createRoom 并传入 roomInfo 参数以创建语聊房。roomInfo 里需传入房间信息。
`ViewController` 类中,调用 `VoiceChatUIKit` 类的 `createRoom` 并传入 `roomInfo` 参数以创建语聊房。`roomInfo` 里需传入房间信息。

如果创建房间成功,那么执行 enterRoom 函数。
如果创建房间成功,那么执行 `enterRoom` 函数。


```swift
Expand Down Expand Up @@ -112,7 +108,7 @@ override func viewDidLoad() {

#### 声明属性

在 ViewController 类中声明了一个可选属性,用于存储 AUIVoiceChatRoomView 实例以显示语聊房的详情界面。
`ViewController` 类中声明了一个可选属性,用于存储 `AUIVoiceChatRoomView` 实例以显示语聊房的详情界面。

```swift
class ViewController: UIViewController {
Expand All @@ -123,12 +119,12 @@ class ViewController: UIViewController {

#### 创建房间详情页并启动房间

在 ViewController 中,创建一个 AUIVoiceChatRoomView 实例,并将它设置为 voiceChatView 属性,用于显示语聊房的详情界面。
`ViewController` 中,创建一个 `AUIVoiceChatRoomView` 实例,并将它设置为 `voiceChatView` 属性,用于显示语聊房的详情界面。

调用 VoiceChatUIKit 类的 launchRoom 方法并传入如下参数,以启动语聊房:
调用 `VoiceChatUIKit` 类的 `launchRoom` 方法,并传入以下参数,以启动语聊房:

- roomInfo:房间信息。
- voiceChatView:房间的 UI View。
- `roomInfo`:房间信息。
- `voiceChatView`:房间的 UI View。


```swift
Expand All @@ -155,9 +151,9 @@ func enterRoom(roomInfo: AUIRoomInfo) {

本节展示如何让听众加入已存在的房间。

#### 添加「加入房间」按钮
#### 添加按钮:加入房间

在 ViewController 类中,通过 iOS 原生方法增加一个「加入房间」按钮,用于让听众点击加入。
`ViewController` 类中,通过 iOS 原生方法增加一个「加入房间」按钮,用于让听众点击加入。

```swift
override func viewDidLoad() {
Expand All @@ -184,12 +180,12 @@ override func viewDidLoad() {

#### 获取房间列表

在 ViewController 类中,调用 VoiceChatUIKit 类的 getRoomInfoList 方法并传入如下参数,以获取语聊房间列表:
`ViewController` 类中,调用 `VoiceChatUIKit` 类的 `getRoomInfoList` 方法并传入如下参数,以获取语聊房间列表:

- lastCreateTime:房间列表的起始时间。
- pageSize:房间列表的数量。
- `lastCreateTime`:房间列表的起始时间。
- `pageSize`:房间列表的数量。

如果在房间列表中找到匹配的房间名,那么执行 enterRoom 函数。通过[此前步骤](//TODO)中已添加的 enterRoom 函数即可实现加入房间。
如果在房间列表中找到匹配的房间名,那么执行 `enterRoom` 函数。通过[此前步骤](//TODO)中已添加的 `enterRoom` 函数即可实现加入房间。

```swift
@objc func onJoinAction() {
Expand Down Expand Up @@ -241,7 +237,7 @@ override func viewDidLoad() {

#### 主动退出或销毁房间

在 enterRoom 函数中添加如下高亮的几行代码,即可实现通过点击按钮主动退出房间(听众)或销毁房间(房主)。
`enterRoom` 函数中添加如下高亮的几行代码,即可实现通过点击按钮主动退出房间(听众)或销毁房间(房主)。

```swift
func enterRoom(roomInfo: AUIRoomInfo) {
Expand Down Expand Up @@ -275,7 +271,7 @@ func enterRoom(roomInfo: AUIRoomInfo) {

听众被动退出房间的代码逻辑如下:

1. 在 enterRoom 函数中添加如下高亮的代码行。调用 VoiceChatUIKit 类的 bindRespDelegate 方法,订阅房间被销毁的回调。
1.`enterRoom` 函数中添加如下高亮的代码行。调用 `VoiceChatUIKit` 类的 `bindRespDelegate` 方法,订阅房间被销毁的回调。

```swift
func enterRoom(roomInfo: AUIRoomInfo) {
Expand Down Expand Up @@ -306,7 +302,7 @@ func enterRoom(roomInfo: AUIRoomInfo) {
}
```

2. 在 ViewController 文件中,通过 AUIRoomManagerRespDelegate 中的 onRoomDestroy 回调来监听房间销毁事件当监听到房间被销毁时,执行 destroyRoom 函数
2. 在 `ViewController` 文件中,通过 `AUIRoomManagerRespDelegate` 中的 `onRoomDestroy` 回调来监听房间销毁事件当监听到房间被销毁时,执行 `destroyRoom` 函数

```swift
extension ViewController: AUIRoomManagerRespDelegate {
Expand All @@ -327,7 +323,7 @@ func enterRoom(roomInfo: AUIRoomInfo) {
}
```

3. 在 ViewController 类中,增加 destroyRoom 函数在该函数中,调用 VoiceChatUIKit 类的 unbindRespDelegate 方法,取消订阅房间被销毁的回调
3. 在 `ViewController` 类中,增加 `destroyRoom` 函数在该函数中,调用 `VoiceChatUIKit` 类的 `unbindRespDelegate` 方法,取消订阅房间被销毁的回调

```swift
func destroyRoom(roomId: String) {
Expand All @@ -338,8 +334,7 @@ func enterRoom(roomInfo: AUIRoomInfo) {

#### 添加销毁逻辑

在 destroyRoom 函数中,添加如下高亮的几行代码调用 VoiceChatUIKit 类的 destoryRoom 方法并传入房间 ID,以销毁房间至此,destroyRoom 函数的代码补充完成

在 `destroyRoom` 函数中,添加如下高亮的几行代码调用 `VoiceChatUIKit` 类的 `destoryRoom` 方法并传入房间 ID,以销毁房间至此,`destroyRoom` 函数的代码补充完成

```swift
func destroyRoom(roomId: String) {
Expand Down
Loading

0 comments on commit c53799a

Please sign in to comment.