@tencentcloud/sdk-mcp 1.7.3 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +13 -13
  3. package/knowledge/path-meta.js +23 -1
  4. package/package.json +1 -1
  5. package/resource/index/manifest.json +1 -1
  6. package/resource/integration/callkit/preset/android/integration.md +4 -0
  7. package/resource/integration/callkit/preset/flutter/integration.md +4 -0
  8. package/resource/integration/callkit/preset/ios/integration.md +14 -13
  9. package/resource/integration/callkit/preset/vue/integration.md +0 -3
  10. package/resource/integration/chat/preset/android/integration.md +3 -145
  11. package/resource/integration/chat/preset/flutter/integration.md +20 -128
  12. package/resource/integration/chat/preset/ios/integration.md +2 -269
  13. package/resource/integration/chat/preset/react/integration.md +27 -1
  14. package/resource/integration/chat/preset/uni-app/integration.md +5 -1
  15. package/resource/integration/chat/preset/vue/integration.md +21 -31
  16. package/resource/integration/livekit/preset/live/android/live-host-integration.md +4 -0
  17. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +4 -0
  18. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +3 -4
  19. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -1
  20. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -1
  21. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +4 -9
  22. package/resource/integration/roomkit/preset/vue/integration.md +0 -213
  23. package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +490 -0
  24. package/resource/knowledge/callkit/best-practice/flutter/android-keep-call-alive-background.md +79 -0
  25. package/resource/knowledge/callkit/best-practice/flutter/background-incoming-call-no-notification.md +99 -0
  26. package/resource/knowledge/callkit/best-practice/flutter/ios-keep-call-alive-background.md +93 -0
  27. package/resource/knowledge/callkit/best-practice/flutter/ios-startup-crash-version-voip.md +68 -0
  28. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -1
  29. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +9 -7
  30. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +10 -7
  31. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +19 -19
  32. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +16 -16
  33. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -84
  34. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -102
  35. package/resource/knowledge/callkit/core-sdk/web/call-event.md +2 -2
  36. package/resource/knowledge/callkit/faq/error-code.md +62 -36
  37. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +1 -1
  38. package/resource/knowledge/callkit/preset/android/api.md +10 -10
  39. package/resource/knowledge/callkit/preset/harmonyos/api.md +362 -0
  40. package/resource/knowledge/callkit/preset/harmonyos/integration.md +322 -0
  41. package/resource/knowledge/callkit/preset/ios/api.md +9 -9
  42. package/resource/knowledge/callkit/preset/miniprogram/api-uniapp.md +293 -0
  43. package/resource/knowledge/callkit/preset/miniprogram/api.md +19 -19
  44. package/resource/knowledge/callkit/preset/miniprogram/integration.md +292 -0
  45. package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +521 -0
  46. package/resource/knowledge/callkit/preset/uni-app/api.md +49 -0
  47. package/resource/knowledge/callkit/preset/uni-app/integration.md +353 -0
  48. package/resource/knowledge/chat/preset/android-view/integration.md +52 -100
  49. package/resource/knowledge/chat/preset/ios/features/language.md +5 -5
  50. package/resource/knowledge/chat/preset/ios-uikit/integration.md +184 -923
  51. package/resource/knowledge/chat/preset/react/features/search.md +9 -214
  52. package/resource/knowledge/chat/preset/react/h5/integration.md +965 -0
  53. package/resource/knowledge/chat/preset/vue/features/chat-header.md +0 -36
  54. package/resource/knowledge/chat/preset/vue/features/contact-list.md +0 -34
  55. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +0 -39
  56. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +0 -74
  57. package/resource/knowledge/chat/preset/vue/features/search.md +9 -790
  58. package/resource/knowledge/chat/preset/vue/h5/integration.md +724 -0
  59. package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +0 -167
  60. package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +1 -1
  61. package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +1 -1
  62. package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -1
  63. package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +1 -1
  64. package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -1
  65. package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +1 -1
  66. package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +1 -1
  67. package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +2 -2
  68. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +1 -66
  69. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +1 -66
  70. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +1 -1
  71. package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -1
  72. package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +2 -2
  73. package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -1
  74. package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +1 -1
  75. package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +2 -2
  76. package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +2 -2
  77. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +1 -24
  78. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +0 -3
  79. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -5
  80. package/resource/knowledge/push/api-reference/harmonyos.md +9 -9
  81. package/resource/knowledge/push/api-reference/unity.md +10 -10
  82. package/resource/knowledge/push/api-reference/unreal-engine.md +11 -11
  83. package/resource/knowledge/push/integration/android.md +57 -13
  84. package/resource/knowledge/push/integration/donut.md +3 -3
  85. package/resource/knowledge/push/integration/flutter.md +38 -24
  86. package/resource/knowledge/push/integration/harmonyos.md +1 -11
  87. package/resource/knowledge/push/integration/ios.md +21 -6
  88. package/resource/knowledge/push/integration/react-native.md +1 -1
  89. package/resource/knowledge/push/integration/uni-app.md +1 -1
  90. package/resource/knowledge/push/integration/unity.md +1 -1
  91. package/resource/knowledge/push/integration/unreal-engine.md +2 -2
  92. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +3 -3
  93. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +4 -4
  94. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +2 -2
  95. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -4
  96. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +3 -3
  97. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -4
  98. package/resource/knowledge/roomkit/core-sdk/vue/device-detection.md +0 -9
  99. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
  100. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
  101. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -16
  102. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +0 -3
  103. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -3
  104. package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +0 -15
  105. package/resource/knowledge/roomkit/preset/android/integration.md +1 -202
  106. package/resource/knowledge/roomkit/preset/flutter/integration.md +13 -13
  107. package/resource/knowledge/roomkit/preset/harmonyos/integration.md +6 -2
  108. package/resource/knowledge/roomkit/preset/ios/integration.md +0 -201
  109. package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
  110. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +207 -509
  111. package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
  112. package/server.js +1 -1
  113. package/utils/report-cls-client.js +1 -1
  114. package/utils/report-es-client.js +1 -1
@@ -1,205 +1,4 @@
1
- TUIRoomKit 是腾讯云提供的一站式多人视频会议解决方案,集成了完整的 UI 组件和核心功能。通过本文档,开发者可以快速了解如何将 TUIRoomKit 集成到项目中,实现多人视频会议功能。本文还将详细介绍如何快速接入 UI 项目,替换图片资源,自定义样式,帮助开发者打造符合品牌特色的音视频应用。
2
-
3
- <style>
4
- .vsdk-survey-card * {
5
- box-sizing: border-box;
6
- }
7
-
8
- .vsdk-survey-card {
9
- position: relative;
10
- display: flex;
11
- align-items: center;
12
- justify-content: space-between;
13
- gap: 20px;
14
- padding: 18px 22px;
15
- margin: 16px 0;
16
- border-radius: 14px;
17
- overflow: hidden;
18
- background: linear-gradient(180deg, #FFFFFF 0%, #F8FBFF 100%);
19
- border: 1px solid #D7E8FF;
20
- box-shadow: 0 4px 16px rgba(0,110,255,.05);
21
- transition: all .25s ease;
22
- }
23
-
24
- .vsdk-survey-card::before{
25
- content:"";
26
- position:absolute;
27
- right:-60px;
28
- top:-60px;
29
- width:180px;
30
- height:180px;
31
- background:radial-gradient(circle,
32
- rgba(0,110,255,.16) 0%,
33
- rgba(0,110,255,.08) 45%,
34
- transparent 75%);
35
- pointer-events:none;
36
- }
37
-
38
- .vsdk-survey-card::after{
39
- content:"";
40
- position:absolute;
41
- left:-40px;
42
- bottom:-60px;
43
- width:120px;
44
- height:120px;
45
- background:radial-gradient(circle,
46
- rgba(76,169,255,.08),
47
- transparent 70%);
48
- pointer-events:none;
49
- }
50
-
51
- .vsdk-survey-card:hover{
52
- border-color:#006EFF;
53
- box-shadow:
54
- 0 10px 28px rgba(0,110,255,.10),
55
- 0 0 36px rgba(0,110,255,.08);
56
- transform:translateY(-2px);
57
- }
58
-
59
- .vsdk-card-left{
60
- display:flex;
61
- align-items:center;
62
- gap:14px;
63
- flex:1;
64
- min-width:0;
65
- position:relative;
66
- z-index:1;
67
- }
68
-
69
- .vsdk-ico{
70
- width:46px;
71
- height:46px;
72
- flex:0 0 46px;
73
- border-radius:12px;
74
- background:linear-gradient(180deg,#EDF5FF,#DCEBFF);
75
- display:flex;
76
- align-items:center;
77
- justify-content:center;
78
- font-size:22px;
79
- box-shadow:
80
- inset 0 1px 0 rgba(255,255,255,.8),
81
- 0 6px 18px rgba(0,110,255,.12);
82
- }
83
-
84
- .vsdk-text{
85
- min-width:0;
86
- }
87
-
88
- .vsdk-title{
89
- display:flex;
90
- align-items:center;
91
- gap:8px;
92
- flex-wrap:wrap;
93
- font-size:18px;
94
- font-weight:600;
95
- color:#1F2329;
96
- line-height:1.4;
97
- }
98
-
99
- .vsdk-badge{
100
- padding:2px 8px;
101
- border-radius:999px;
102
- background:#EAF3FF;
103
- color:#006EFF;
104
- font-size:11px;
105
- font-weight:600;
106
- }
107
-
108
- .vsdk-desc{
109
- margin-top:6px;
110
- font-size:13px;
111
- line-height:1.7;
112
- color:#4E5969;
113
- }
114
-
115
- .vsdk-card-right{
116
- flex-shrink:0;
117
- position:relative;
118
- z-index:1;
119
- }
120
-
121
- .vsdk-cta{
122
- display:inline-flex;
123
- align-items:center;
124
- justify-content:center;
125
- min-width:112px;
126
- height:40px;
127
- padding:0 22px;
128
- border-radius:8px;
129
- background:#006EFF;
130
- color:#FFFFFF;
131
- text-decoration:none;
132
- font-size:14px;
133
- font-weight:600;
134
- box-shadow:0 8px 20px rgba(0,110,255,.25);
135
- transition:all .2s ease;
136
- }
137
-
138
- .vsdk-cta:hover{
139
- background:#0052D9;
140
- box-shadow:0 10px 24px rgba(0,110,255,.35);
141
- }
142
-
143
- @media (max-width:768px){
144
-
145
- .vsdk-survey-card{
146
- flex-direction:column;
147
- align-items:flex-start;
148
- }
149
-
150
- .vsdk-card-left{
151
- width:100%;
152
- align-items:flex-start;
153
- }
154
-
155
- .vsdk-title{
156
- font-size:16px;
157
- }
158
-
159
- .vsdk-desc{
160
- font-size:12px;
161
- }
162
-
163
- .vsdk-card-right{
164
- width:100%;
165
- margin-top:14px;
166
- }
167
-
168
- .vsdk-cta{
169
- width:100%;
170
- }
171
-
172
- }
173
- </style>
174
-
175
- <div class="vsdk-survey-card">
176
-
177
- <div class="vsdk-card-left">
178
-
179
- <div class="vsdk-ico">💡</div>
180
-
181
- <div class="vsdk-text">
182
-
183
- <div class="vsdk-title">
184
- 有接入卡点?30 秒反馈
185
- <span class="vsdk-badge">全部选填</span>
186
- </div>
187
-
188
- <div class="vsdk-desc">
189
- 正在了解或评估视频会议 SDK?UI、功能、文档或套餐开通如有卡点,欢迎填写反馈。
190
- </div>
191
-
192
- </div>
193
-
194
- </div>
195
-
196
- <div class="vsdk-card-right">
197
- <a class="vsdk-cta" href="https://wj.qq.com/s2/27395009/ac34/" target="_blank">
198
- 填写反馈
199
- </a>
200
- </div>
201
-
202
- </div>
1
+ 本文档介绍如何在 uniapp 业务项目中集成 TUIRoomKit,快速获得开箱即用的多人音视频会议能力。
203
2
 
204
3
  ## 前提条件
205
4
 
@@ -211,371 +10,270 @@ TUIRoomKit 是腾讯云提供的一站式多人视频会议解决方案,集成
211
10
  - **SDKSecretKey**:应用密钥,用于初始化配置文件的密钥信息。
212
11
 
213
12
  ### 环境准备
13
+ - **IDE**: HBuilderX 升级到新版本。
214
14
 
215
- > **说明:**
216
- > HBuilderX 4.64 和 4.65 版本对 UTS 插件打包存在已知兼容性问题,建议使用 4.66 或更高版本。
217
- >
218
-
219
- - [HBuilderX](https://www.dcloud.io/hbuilderx.html):HBuilderX 是 **uni-app 官方**的集成开发环境(IDE),我们需要用它来导入、配置和运行我们的 Demo。
220
-
221
- - 2个移动设备: Android 5.0 以上的设备 / iOS 13.0 及以上设备。
222
-
223
- ## 快速接入
224
-
225
- ### **步骤1:下载 TUIRoomKit 组件**
226
-
227
- #### 1. 克隆项目源码
228
- ``` bash
229
- git clone
230
- ```
231
-
232
- #### 2. 导入 atomic-x 组件
233
- - 将源码中 `TUIKit_uni-app/App/uni_modules` 目录下的 `tuikit-atomic-x` 文件夹,完整拷贝到您项目根目录下的 `uni_modules` 文件夹中。
234
-
235
- - 将源码中 `TUIKit_uni-app/App/components` 下的文件,完整的拷贝到您项目的 `components` 文件夹中。
236
-
237
- - 将源码中 `TUIKit_uni-app/App/static` 目录下的文件,完整拷贝到您项目根目录下的同名文件夹下。
238
-
239
- #### 3. 拷贝创建房间,加入房间,房间主界面等页面
240
- - 将源码中 `TUIKit_uni-app/App/pages` 目录下的文件,完整拷贝到您项目根目录下的同名文件夹中。
241
-
242
- - 将源码中 `TUIKit_uni-app/App/debug` 文件夹拷贝到您项目的根目录下,这个目录提供有可以方便您在客户端快速生成的 **UserSig** 的快捷函数。
243
-
244
- #### 4. 合并 App.vue 配置
245
-
246
- **TUIKit_uni-app/App/App.vue** 文件中包含多人视频会议能力的初始化逻辑,因此您需要将 **TUIKit_uni-app/App/App.vue** 文件和您项目下的 **App.vue** 文件进行合并。
15
+ - **语言**: nvue。
247
16
 
248
- > **注意:**
249
- >
250
- > 不要直接覆盖 **App.vue** 文件! 打开源码中的 **TUIKit_uni-app/App/App.vue**, 将其 `<script>` 部分的 ts 内容追加到您自己项目的 **App.vue** 的 `<script>` 标签内。
251
- >
17
+ - **运行环境**: Node.js v12 版本及以上。
252
18
 
253
- ### 步骤2:工程配置
254
- 1. 配置 `manifest.json`
19
+ - **包管理**: npm (版本需与 Node 版本匹配)。
255
20
 
256
- 打开您项目的 **manifest.json** 文件,在 **app-plus** > **distribute** 节点下,确保添加了以下必要的权限:
21
+ - **支持平台**: uni-app 打包 App。
257
22
 
258
- - Android 平台(`android` 节点):在 `permissions` 数组中,请确保包含以下权限:
23
+ ## 集成步骤
259
24
 
260
- ``` json
261
- "<uses-permission android:name=\"android.permission.CAMERA\"/>",
262
- "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
263
- "<uses-permission android:name=\"android.permission.INTERNET\"/>",
264
- "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
265
- "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
266
- ```
267
- - iOS 平台(ios 节点):在 `privacyDescription` 对象中,请确保包含以下描述:
25
+ ### 步骤1:创建项目
268
26
 
269
- ``` json
270
- "NSCameraUsageDescription" : "应用需要访问您的相机以进行多人音视频互动",
271
- "NSMicrophoneUsageDescription" : "应用需要访问您的麦克风以进行多人音视频互动"
272
- ```
27
+ 打开 HBuilderX,在菜单栏中选择**文件 > 新建 > 项目**,创建一个名为 `room-example` 的 uni-app vue3 项目。
273
28
 
274
- 在 `UIBackgroundModes` 数组中,添加 `audio` 以支持后台播放音频。
29
+ ### 步骤2:安装 TUIKit 插件
275
30
 
276
- ``` json
277
- "UIBackgroundModes" : [ "audio" ]
278
- ```
279
- 2. 制作自定义基座。
31
+ 进入[【官方】腾讯云聊天+通话+直播响应式 SDK](https://ext.dcloud.net.cn/plugin)。点击**下载插件并导入 HBuilderX**,将插件导入 `room-example` 项目中。
280
32
 
281
- > **说明:**
282
- >
283
- > 由于 TUIRoomKit 包含原生代码(UTS 插件),您**必须**制作自定义调试基座才能在真机上运行。
284
- >
33
+ ### 步骤3:配置原生模块与 Android 权限
285
34
 
286
- 1. 在 HBuilderX 顶部菜单选择**运行** > **运行到手机或模拟器** > **制作自定义调试基座**。
287
-
288
- 2. 制作成功后,再次选择**运行** > **运行到手机或模拟器**,在弹窗中勾选**使用自定义调试基座**后运行到您的手机。
289
-
290
- 具体操作指引参见 编译并运行 Demo。
291
-
292
- ### 步骤3:登录
293
-
294
- 集成完成后,您需要完成登录。在您项目中需要使用到多人视频会议能力的地方进行登录,这是**使用 TUIRoomKit 的关键步骤**,因为只有在登录成功后才能正常使用 TUIRoomKit 的各项功能,故请您耐心检查相关参数是否配置正确:
295
- ``` typescript
296
- import { useLoginState } from "@/uni_modules/tuikit-atomic-x/state/LoginState";
297
-
298
- const { login } = useLoginState();
299
-
300
- onMounted(() => {
301
- login({
302
- sdkAppID: 1400000001, // 请替换为开通服务控制台的 SDKAppID
303
- userID: "your userID", // 请替换为您的 UserID
304
- userSig: "xxxxxxxxxxx", // 您可以在控制台中计算一个 UserSig 并填在这个位置
305
- });
306
- });
35
+ 【Android 权限配置】
307
36
 
37
+ ``` json
38
+ <uses-permission android:name="android.permission.CAMERA"/>
39
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
40
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
41
+ <uses-permission android:name="android.permission.INTERNET"/>
42
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
308
43
  ```
309
44
 
310
- **登录接口参数说明**
311
- | 参数 | 类型 | 说明 |
312
- | --- | --- | --- |
313
- | SDKAppID | Number | 从 <a href="https://console.cloud.tencent.com/trtc">TRTC 控制台 > 应用管理</a> 获取。 |
314
- | userID | String | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。 |
315
- | userSig | String | 用于腾讯云鉴权的票据。请注意:<br>- 开发环境:您可以采用本地 <code>GenerateTestUserSig.genTestSig</code> 函数生成 UserSig 或者通过 <a href="https://console.cloud.tencent.com/im/tool-usersig">UserSig 辅助工具</a> 生成临时的 UserSig。<br>- 生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参见 <a href="https://cloud.tencent.com/document/product/647/17275#formal">服务端生成 UserSig</a>。<br>更多信息请参见 <a href="https://cloud.tencent.com/document/product/647/17275">如何计算及使用 UserSig</a>。 |
45
+ 【iOS 权限配置】
316
46
 
317
- ### 步骤4:注册多人视频会议主页面
47
+ ``` java
48
+ "privacyDescription" : {
49
+ "NSCameraUsageDescription" : "应用需要访问您的相机以进行直播",
50
+ "NSMicrophoneUsageDescription" : "应用需要访问您的麦克风以进行直播"
51
+ },
52
+ "UIBackgroundModes" : [ "audio" ]
53
+ ```
318
54
 
319
- 现在,您需要在 `pages.json` 文件中告诉您的应用,这个新页面是存在的。
55
+ ### 步骤4:集成 TUIKit
56
+ 1. **拷贝 TUIKit 页面及静态资源**:将 `⁠uni_modules/tuikit-atomic-x/quickstart_room/`⁠下的`⁠pages/*⁠` 拷贝到项目 `page`⁠ 目录,⁠`static/*⁠` 拷贝到项目 `static` 目录下。
320
57
 
321
- 打开您项目根目录下的 `pages.json` 文件,在 `"pages"` 数组中,添加以下对象来注册多人视频会议主页面。
322
- ``` json
323
- {
324
- "pages": [
325
- // ... 您项目已有的其他页面配置
326
- {
327
- "path": "pages/scenes/room/main/index",
328
- "style": {
329
- "navigationBarTitleText": "",
330
- "disableSwipeBack": true, // 禁止右滑返回,防止会中误操作退出
331
- "app-plus": {
332
- "titleNView": false // 隐藏原生导航栏,使用页面内的自定义导航
333
- }
334
- }
335
- }
336
- ]
337
- // ... 其他配置
338
- }
58
+ 【Windows 端】
59
+ ``` bash
60
+ xcopy /E /I /Y "uni_modules\tuikit-atomic-x\quickstart_room\static\*" "static\" && xcopy /E /I /Y "uni_modules\tuikit-atomic-x\quickstart_room\pages\*" "pages\"
339
61
  ```
340
62
 
341
- ### 步骤5:跳转多人视频会议主页面
342
-
343
- #### 创建房间
344
-
345
- 在您需要创建多人视频会议的地方(具体由您的业务决定,在其点击事件里执行),调用 `uni.navigateTo` 或 `uni.redirectTo` 方法,即可进入多人视频会议主页面。
346
- ``` typescript
347
- // 示例:在一个按钮的点击事件中
348
- function startBroadcast() {
349
- const roomID = '123456'; //房间id
350
- const roomName = '123456'; //房间名称
351
- const query = [
352
- 'mode=create',
353
- `roomID=${encodeURIComponent(roomID)}`,
354
- `roomName=${encodeURIComponent(roomName)}`,
355
- 'autoEnableCamera=1', //进房是否开启摄像头(1 开启, 0 关闭)
356
- 'autoEnableMicrophone=1', //进房是否开启麦克风(1 开启, 0 关闭)
357
- 'autoEnableSpeaker=1', //进房是否开启扬声器(1 开启, 0 关闭)
358
- ].join('&');
359
- uni.navigateTo({ url: `/pages/scenes/room/main/index?${query}` }); // URL 对应 pages.json 中配置的 path
360
- }
63
+ 【Mac 端】
64
+ ``` bash
65
+ cp -r uni_modules/tuikit-atomic-x/quickstart_room/static/* static/ && cp -r uni_modules/tuikit-atomic-x/quickstart_room/pages/* pages/
361
66
  ```
362
67
 
68
+ 2. **配置页面路由:**替换 `pages.json` 内容,注册所需页面路由:
69
+
70
+ ``` json
71
+ {
72
+ "pages": [
73
+ {
74
+ "path": "pages/login/login",
75
+ "style": {
76
+ "navigationStyle": "custom"
77
+ }
78
+ },
79
+ {
80
+ "path": "pages/index/index",
81
+ "style": {
82
+ "navigationStyle": "custom"
83
+ }
84
+ },
85
+ {
86
+ "path": "pages/scenes/room/index",
87
+ "style": {
88
+ "navigationStyle": "custom"
89
+ }
90
+ },
91
+ {
92
+ "path": "pages/scenes/room/join/index",
93
+ "style": {
94
+ "navigationStyle": "custom"
95
+ }
96
+ },
97
+ {
98
+ "path": "pages/scenes/room/create/index",
99
+ "style": {
100
+ "navigationStyle": "custom"
101
+ }
102
+ },
103
+ {
104
+ "path": "pages/scenes/room/main/index",
105
+ "style": {
106
+ "navigationStyle": "custom",
107
+ "disableScroll": true,
108
+ "disableSwipeBack": true
109
+ }
110
+ }
111
+ ],
112
+ "globalStyle": {
113
+ "navigationBarTextStyle": "black",
114
+ "navigationBarTitleText": "腾讯云 IM",
115
+ "navigationBarBackgroundColor": "#EBF0F6",
116
+ "backgroundColor": "#F8F8F8"
117
+ }
118
+ }
119
+ ```
120
+
121
+ ## 运行和测试
122
+
363
123
  > **说明:**
364
- > **navigateTo** 与 **redirectTo**
124
+ > 接入过程中遇到任何卡点或有改进建议,欢迎通过 [视频会议 SDK 接入反馈问卷](https://wj.qq.com/s2/27395009/ac34/) 反馈,官方会及时跟进处理。
365
125
  >
366
- > - `uni.navigateTo`:保留当前页面,跳转到新页面,用户可以从多人视频会议主页返回到上一页。适用于创建房间前可以取消的场景。
367
- > - `uni.redirectTo`:关闭当前页面,跳转到新页面,用户无法返回。适用于支持人直接进入主流程的场景,不需要保存上个界面, 您可以根据自己的业务需求选择使用。
368
-
369
- #### 加入房间
370
-
371
- 在您需要加入多人视频会议的地方(具体由您的业务决定,在其点击事件里执行),调用 `uni.navigateTo` 或 `uni.redirectTo` 方法,即可进入多人视频会议主页面。
372
- ``` typescript
373
- // 示例:在一个按钮的点击事件中
374
- function startBroadcast() {
375
- const roomID = '123456'; //房间id
376
- const query = [
377
- 'mode=join',
378
- `roomID=${encodeURIComponent(roomID)}`,
379
- 'autoEnableCamera=1', //进房是否开启摄像头(1 开启, 0 关闭)
380
- 'autoEnableMicrophone=1', //进房是否开启麦克风(1 开启, 0 关闭)
381
- 'autoEnableSpeaker=1', //进房是否开启扬声器(1 开启, 0 关闭)
382
- ].join('&');
383
- uni.navigateTo({ url: `/pages/scenes/room/main/index?${query}` }); // URL 对应 pages.json 中配置的 path
384
- }
385
- ```
386
-
387
- ## 定制您的 UI
388
-
389
- ### 替换主界面底部栏,顶部栏和视频流用户信息界面图标
390
126
 
391
- TUIRoomKit 用到的所有图标都存放于 `static/images` 目录下,部分示例如下,您可以根据您的诉求来替换目录下的图标。
127
+ ### 步骤1:**制作自定义基座**
392
128
 
393
- 顶部栏:
129
+ 点击**运行** > **运行到手机或模拟器** > **制作自定义调试基座**。
394
130
 
395
- |图标路径|详细描述|
396
- |---------|---------|
397
- |/static/images/room/room_switch_camera.png|顶部操作栏切换摄像头图标。|
398
- |/static/images/room/room_speakerphone.png|顶部操作栏扬声器图标。|
399
- |/static/images/room/room_earpiece.png|顶部操作栏听筒图标。|
400
-
401
- 底部栏:
402
-
403
- |图标路径|详细描述|
404
- |---------|---------|
405
- |/static/images/room/room_member.png|底部操作栏成员图标。|
406
- |/static/images/room/room_mic_on.png|底部操作栏麦克风开启图标。|
407
- |/static/images/room/room_mic_off.png|底部操作栏麦克风关闭图标。|
408
- |/static/images/room/room_camera_on.png|底部操作栏摄像头开启图标。|
409
- |/static/images/room/room_camera_off.png|底部操作栏摄像头关闭图标。|
410
-
411
- 视频流区域用户状态信息:
131
+ > **说明:**
132
+ > 首次制作自定义基座需要下载 Gradle 依赖,Android 通常需要 10~20 分钟,iOS 需要 5~10 分钟。过程中请勿中断。
133
+ >
412
134
 
413
- |图标路径|详细描述|
414
- |---------|---------|
415
- |/static/images/room/room_video_view_mic_on.png|视频流用户麦克风开启图标。|
416
- |/static/images/room/room_video_view_mic_off.png|视频流用户麦克风关闭图标。|
417
- |/static/images/room/room_video_view_owner.png|视频流用户主持人角色图标。|
418
- |/static/images/room/room_video_view_admin.png|底部操作栏管理员角色图标。|
135
+ ### 步骤2:**登录**
419
136
 
420
- ### 设置字体的大小/颜色
137
+ 在 `pages/login/login.vue` 中,填入 `SDKAppID`、 `userID`、`SecretKey`,点击**登录**。
138
+ | 参数 | 类型 | 说明 |
139
+ | --- | --- | --- |
140
+ | SDKAppID | Number | SDKAppID 是 RoomKit 客户应用的唯一标识。您可以在 <a href="https://console.cloud.tencent.com/trtc">TRTC 控制台 > 应用管理</a> 创建新应用获取 。<br><strong>说明:</strong><br>SDKAppID 是 RoomKit 客户应用的唯一标识。我们建议每一个独立的 App 都申请一个新的 SDKAppID。不同 SDKAppID 之间是天然隔离的,不能互通。 |
141
+ | SecretKey | String | SecretKey 是 RoomKit 客户应用的密钥。您可以在 <a href="https://console.cloud.tencent.com/trtc">TRTC 控制台 > 应用管理</a> 对应应用获取。<br><strong>安全提示:</strong><br>- 项目示例支持通过 <code>genTestUserSig</code> 函数生成 <code>userSig</code>。该方法中 <code>SecretKey</code> 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。<strong>该方法仅适合本地跑通功能调试</strong>。 正确的 UserSig 签发方式请参见 <a href="https://cloud.tencent.com/document/product/647/17275#formal">服务端生成 UserSig</a>。<br>- 敏感信息(SecretKey)仅用于 Demo 测试,不可提交到代码仓库或用于生产环境。 |
142
+ | userID | String | 用户的唯一标识符,由您定义,只能包含大小写字母(a-z,A-Z)、数字(0-9)、下划线和连字符。 |
421
143
 
422
- uni-app 官方对 **nvue** 页面限制字体的大小和颜色只能在 `text` 标签上设置,对于您想修改的文案,直接修改其 `css` 样式即可,示例如下
144
+ ``` java
423
145
 
424
- 以 “解除静音” 文字为例:
425
- ``` typescript
426
- <template>
427
- <text class="bottom-text">解除静音</text>
428
- </template>
146
+ import { ref } from 'vue'
147
+ import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState';
148
+ import { genTestUserSig } from '@/uni_modules/tuikit-atomic-x/debug/GenerateTestUserSig';
149
+ const { login } = useLoginState();
429
150
 
430
- <style>
431
- .bottom-text {
432
- color: #FFFFFF;
433
- font-size: 20rpx;
434
- margin-top: 6rpx;
435
- text-overflow: ellipsis;
151
+ const sdkAppId = 0; // SDKAppID
152
+ const userId = ref(''); // userID
153
+ const secretKey = ''; // SecretKey
154
+
155
+ // 登录
156
+ login({
157
+ sdkAppID: sdkAppId,
158
+ userID: userId.value,
159
+ userSig: genTestUserSig({
160
+ SDKAppID: sdkAppId,
161
+ userID: userId.value,
162
+ secretKey: secretKey
163
+ }).userSig,
164
+ success: () => {
165
+ uni.reLaunch({ url: '/pages/scenes/chat/conversationList/conversationList' })
166
+ },
167
+ fail: (code: number, msg: string) => {
168
+ uni.showToast({ title: msg || '登录失败', icon: 'none' })
436
169
  }
437
- </style>
170
+ })
438
171
  ```
439
172
 
440
- 修改其 css 样式:
441
- ``` typescript
442
- <template>
443
- <text class="bottom-text">开启音频</text>
444
- </template>
445
-
446
- <style>
447
- .bottom-text {
448
- color: red;
449
- font-size: 24rpx;
450
- margin-top: 6rpx;
451
- text-overflow: ellipsis;
452
- }
453
- </style>
173
+ ### 步骤3:**运行项目**
454
174
 
455
- ```
175
+ 点击**运行** > **运行到手机或模拟器** > **运行到 Android/iOS 基座**,使用制作好的**自定义基座**运行到手机。
456
176
 
457
- 最终效果:
177
+ ## AI 助手:知识咨询与代码集成
458
178
 
459
- ### 设置按钮的大小
179
+ 您在接入视频会议 SDK 过程中,可以通过 MCP 使用 AI 助手,快速完成知识咨询、报错排查和集成代码生成。支持 Web/Android/iOS/Flutter/uni-app/HarmonyOS 等平台,答案基于官方文档。适用于查询 Room 组件和 AtomicXCore SDK 用法以及集成文档等场景,[立即体验,提出您的第一个问题](https://cloud.tencent.com/document/product/647/129285)。
460
180
 
461
- 设置按钮的大小,也可以直接通过修改 `css` 属性来进行设置,示例如下:
181
+ ## 高级功能
462
182
 
463
- 以底部操作栏麦克风按钮为例:
464
- ``` typescript
465
- <template>
466
- <image class="bottom-icon" src="/static/images/room/room_mic_on.png" mode="aspectFit"/>
467
- <text class="bottom-text">解除静音</text>
468
- </template>
183
+ ### 屏幕共享
469
184
 
470
- <style>
471
- .bottom-icon {
472
- width: 48rpx;
473
- height: 48rpx;
474
- }
475
- </style>
476
- ```
185
+ #### Android - 无需配置
477
186
 
478
- 设置对应的 `css` 属性:
479
- ``` typescript
480
- <template>
481
- <image class="bottom-icon" src="/static/images/room/room_mic_off.png" mode="aspectFit"/>
482
- <text class="bottom-text">解除静音</text>
483
- </template>
484
-
485
- <style>
486
- .bottom-icon {
487
- width: 70rpx;
488
- height: 70rpx;
489
- }
490
- </style>
187
+ 开箱即用。
491
188
 
492
- ```
189
+ #### iOS - 需配置 Broadcast Upload Extension
493
190
 
494
- 最终效果:
191
+ ##### **步骤1:生成并绑定** Extension
495
192
 
496
- ### 隐藏按钮
193
+ 使用您的账号 [登录](https://developer.apple.com/),进行以下操作,注意完成后需要下载对应的 Provisioning Profile。
194
+ 1. 单击 Certificates, IDs & Profiles。
497
195
 
498
- 隐藏按钮可以通过注释代码的方式来进行直接隐藏,示例如下
196
+ 2. 在右侧的界面中单击加号。
499
197
 
500
- 以底部操作栏的麦克风按钮为例:
501
- ``` typescript
502
- <!-- 底部操作栏 -->
503
- <view class="bottom-bar">
504
- <MembersButton />
505
- <!-- <MicButton /> --> <!-- 隐藏麦克风图标 -->
506
- <CameraButton />
507
- </view>
508
- ```
198
+ 3. 选择 App Groups,单击 Continue。
509
199
 
510
- 将其注释掉即可实现隐藏按钮。
511
-
512
- ### 新增按钮
513
-
514
- 在您需要新增的位置,插入对应的按钮实现。
515
-
516
- 以底部栏新增“更多”按钮为例:
517
- ``` typescript
518
- <template>
519
- ......
520
- <!-- 底部操作栏 -->
521
- <view class="bottom-bar">
522
- ......
523
- <view class="action-button-item">
524
- <image class="bottom-icon" src="/static/images/more.png" mode="aspectFit" />
525
- <text class="bottom-text">更多</text>
526
- </view>
527
- </view>
528
- </template>
529
-
530
- <style>
531
- .bottom-icon {
532
- width: 48rpx;
533
- height: 48rpx;
534
- }
535
- .bottom-text {
536
- color: #FFFFFF;
537
- font-size: 20rpx;
538
- margin-top: 6rpx;
539
- text-overflow: ellipsis;
540
- text-align: center;
541
- }
542
- </style>
543
- ```
200
+ 4. 在弹出的表单中填写 Description 和 Identifier,其中 Identifier 需要传入接口中的对应的 AppGroup 参数。完成后单击 Continue。
544
201
 
545
- ## 常见问题
202
+ 5. 回到 Identifier 页面,左上边的菜单中选择 App IDs,然后单击您的 App ID(主 App 与 Extension 的 AppID 需要进行同样的配置)。
546
203
 
547
- #### **Q:该 TUIKit 插件是否支持编译到 H5 或微信小程序?**
204
+ 6. 选中 App Groups 并单击 Edit。
548
205
 
549
- A:**不支持。**由于新版 TUIKit 基于 **UTS (Uni-app Type Script)** 插件架构开发,深度依赖 Android 和 iOS 的原生能力(如原生渲染引擎、本地数据库、音视频编解码),因此仅支持打包为 **App (Android/iOS)**。
206
+ 7. 在弹出的表单中选择您之前创建的 App Group,单击 Continue 返回编辑页,单击 Save 保存。
550
207
 
551
- #### **Q:我的现有项目全是** `.vue` **页面(Webview 渲染),能直接集成吗?**
208
+ ##### **步骤2:配置屏幕共享扩展。**
552
209
 
553
- A:**可以混用,但需要注意页面模式。**
210
+ 2. 在 `nativeResources/ios` 下新建 `ios-extension.json` 文件,配置文件内容如下:
554
211
 
555
- nvue 页面和 vue 页面可以互相跳转,但是 vue 页面的子组件不建议是 nvue 组件。TUIKit 的 UI 组件是 nvue 组件,因此使用 TUIKit 所在的**页面(pages)**必须也是 nvue 文件。
212
+ |参数|说明|
213
+ |---------|---------|
214
+ |identifier|步骤1中 Apple 开发者后台创建的 Extension 的 Bundle ID。|
215
+ |profile|`nativeResources/ios` 下的 .mobileprovision 的文件名。|
216
+ |entitlements.com.apple.security.application-groups|步骤1中 Apple 开发者后台创建的 App Group ID。|
556
217
 
557
- #### **Q:页面样式错乱、布局塌陷?**
558
-
559
- A:**没有严格遵守 nvue 的 Flex 布局规范。**
560
-
561
- nvue 页面中:
562
- - 默认 `flex-direction` 是 `column`(纵向),而非 Web 的 `row`。
563
-
564
- - 文本必须包裹在 `<text>` 组件中,不能直接写在 `<div>` 或 `<view>` 里。
565
-
566
- - 不支持简写属性(例如 `margin: 10px 20px`),必须写全(`margin-top`, `margin-left` 等)。
218
+ ``` java
219
+ {
220
+ "ScreenShareExtension.appex": {
221
+ "identifier": "xxx",
222
+ "profile": "xxx.mobileprovision",
223
+ "entitlements": {
224
+ "com.apple.security.application-groups": ["xxx"]
225
+ }
226
+ }
227
+ }
228
+ ```
229
+
230
+ 3. 在 `nativeResources/ios` 下新建 UniApp.entitlements 文件,配置文件内容如下:
231
+
232
+ |**参数**|**说明**|
233
+ |---------|---------|
234
+ |com.apple.security.application-groups|步骤1中 Apple 开发者后台创建的 App Group ID。|
235
+
236
+ ``` xml
237
+ <?xml version="1.0" encoding="UTF-8"?>
238
+ <plist version="1.0">
239
+ <dict>
240
+ <key>com.apple.security.application-groups</key>
241
+ <array>
242
+ <string>xxx</string>
243
+ </array>
244
+ </dict>
245
+ </plist>
246
+ ```
247
+
248
+ 4. 在 项目根目录下新建 `Info.plist` 文件,配置文件内容如下:
249
+
250
+ |**参数**|**说明**|
251
+ |---------|---------|
252
+ |TUIRoomAppGroup|步骤1中 Apple 开发者后台创建的 App Group ID。|
253
+
254
+ ``` xml
255
+ <?xml version="1.0" encoding="UTF-8"?>
256
+ <plist version="1.0">
257
+ <dict>
258
+ <key>TUIRoomAppGroup</key>
259
+ <string>xxx</string>
260
+ </dict>
261
+ </plist>
262
+ ```
263
+
264
+ ##### **步骤3:**重新制作自定义基座**。**
265
+
266
+ 点击**运行** > **运行到手机或模拟器** > **制作 iOS 自定义调试基座。**
567
267
 
568
- #### **Q:**运行报错 "uni is not defined" 或组件无法加载?
268
+ ## 常见问题
569
269
 
570
- A:请检查是否制作并使用了**自定义调试基座**。
270
+ #### **该 TUIKit 插件是否支持编译到 H5 或微信小程序?**
571
271
 
572
- 由于插件包含原生代码(Java/Objective-C),标准基座不包含这些原生库。
573
- - **解决步骤:** 请严格按照文档“运行和测试-步骤2”操作,在 HBuilderX 中点击 **运行** > **运行到手机或模拟器** > **制作自定义调试基座**。制作完成后,运行时请务必选择**运行到 Android/iOS 基座**,并勾选“使用自定义基座”。
272
+ **不支持。**由于新版 TUIKit 基于 **UTS (Uni-app Type Script)** 插件架构开发,深度依赖 Android 和 iOS 的原生能力(如原生渲染引擎、本地数据库、音视频编解码),因此仅支持打包为 **App (Android/iOS)**。
574
273
 
575
- #### **Q:制作自定义基座时一直失败或卡顿怎么办?**
274
+ #### **我的现有项目全是** `.vue` **页面(Webview 渲染),能直接集成吗?**
576
275
 
577
- A:这通常是本地原生编译环境(Gradle 或 CocoaPods)配置问题导致的。
578
- - **Android:** 请检查本地 JDK 版本是否兼容,以及网络是否能正常访问 Maven/Google 仓库。
276
+ **可以混用,但需要注意页面模式。**
579
277
 
580
- - **iOS:** 请确保已安装 CocoaPods 且版本更新,同时检查网络环境是否能访问 GitHub 或 CDN 库。
278
+ nvue 页面和 vue 页面可以互相跳转,但是 vue 页面的子组件不建议是 nvue 组件。TUIKit 的 UI 组件是 nvue 组件,因此使用 TUIKit 所在的**页面(pages)**必须也是 nvue 文件。
581
279