@tencentcloud/sdk-mcp 1.7.3 → 1.7.5

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 (135) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +22 -23
  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 +8 -4
  8. package/resource/integration/callkit/preset/ios/integration.md +16 -15
  9. package/resource/integration/callkit/preset/react/integration.md +2 -2
  10. package/resource/integration/callkit/preset/vue/integration.md +9 -12
  11. package/resource/integration/chat/preset/android/integration.md +5 -147
  12. package/resource/integration/chat/preset/flutter/integration.md +22 -130
  13. package/resource/integration/chat/preset/ios/integration.md +12 -279
  14. package/resource/integration/chat/preset/react/integration.md +27 -1
  15. package/resource/integration/chat/preset/uni-app/integration.md +5 -1
  16. package/resource/integration/chat/preset/vue/integration.md +21 -31
  17. package/resource/integration/livekit/preset/live/android/live-host-integration.md +4 -0
  18. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +4 -0
  19. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +3 -3
  20. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +3 -4
  21. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -1
  22. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -1
  23. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +4 -9
  24. package/resource/integration/roomkit/preset/vue/integration.md +152 -652
  25. package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +490 -0
  26. package/resource/knowledge/callkit/best-practice/flutter/android-keep-call-alive-background.md +79 -0
  27. package/resource/knowledge/callkit/best-practice/flutter/background-incoming-call-no-notification.md +99 -0
  28. package/resource/knowledge/callkit/best-practice/flutter/ios-keep-call-alive-background.md +93 -0
  29. package/resource/knowledge/callkit/best-practice/flutter/ios-startup-crash-version-voip.md +68 -0
  30. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +2 -2
  31. package/resource/knowledge/callkit/core-sdk/android/make-call.md +5 -5
  32. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +7 -7
  33. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +10 -10
  34. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -1
  35. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +18 -16
  36. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +16 -14
  37. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +19 -19
  38. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +16 -16
  39. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +2 -86
  40. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +2 -104
  41. package/resource/knowledge/callkit/core-sdk/web/call-event.md +2 -2
  42. package/resource/knowledge/callkit/faq/android.md +4 -4
  43. package/resource/knowledge/callkit/faq/common.md +4 -4
  44. package/resource/knowledge/callkit/faq/error-code.md +62 -36
  45. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +1 -1
  46. package/resource/knowledge/callkit/preset/android/api.md +10 -10
  47. package/resource/knowledge/callkit/preset/harmonyos/api.md +362 -0
  48. package/resource/knowledge/callkit/preset/harmonyos/integration.md +322 -0
  49. package/resource/knowledge/callkit/preset/ios/api.md +9 -9
  50. package/resource/knowledge/callkit/preset/miniprogram/api-uniapp.md +293 -0
  51. package/resource/knowledge/callkit/preset/miniprogram/api.md +19 -19
  52. package/resource/knowledge/callkit/preset/miniprogram/integration.md +292 -0
  53. package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +521 -0
  54. package/resource/knowledge/callkit/preset/uni-app/api.md +49 -0
  55. package/resource/knowledge/callkit/preset/uni-app/integration.md +353 -0
  56. package/resource/knowledge/chat/preset/android-view/integration.md +54 -102
  57. package/resource/knowledge/chat/preset/ios/features/language.md +5 -5
  58. package/resource/knowledge/chat/preset/ios-uikit/integration.md +194 -926
  59. package/resource/knowledge/chat/preset/react/features/search.md +9 -214
  60. package/resource/knowledge/chat/preset/react/h5/integration.md +965 -0
  61. package/resource/knowledge/chat/preset/vue/features/chat-header.md +0 -36
  62. package/resource/knowledge/chat/preset/vue/features/contact-list.md +0 -34
  63. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +0 -39
  64. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +0 -74
  65. package/resource/knowledge/chat/preset/vue/features/message-input.md +4 -4
  66. package/resource/knowledge/chat/preset/vue/features/search.md +9 -790
  67. package/resource/knowledge/chat/preset/vue/h5/integration.md +724 -0
  68. package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +3 -3
  69. package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +3 -3
  70. package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +3 -3
  71. package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -3
  72. package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +3 -3
  73. package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +3 -3
  74. package/resource/knowledge/livekit/core-sdk/features/uni-app/audience-list.md +3 -3
  75. package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +3 -170
  76. package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +1 -1
  77. package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +3 -3
  78. package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -1
  79. package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +3 -3
  80. package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +3 -3
  81. package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +1 -1
  82. package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +3 -3
  83. package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +2 -2
  84. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +13 -78
  85. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +5 -70
  86. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +10 -10
  87. package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -1
  88. package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +4 -4
  89. package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -1
  90. package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +1 -1
  91. package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +4 -4
  92. package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +7 -7
  93. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +1 -24
  94. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +0 -3
  95. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -5
  96. package/resource/knowledge/push/api-reference/harmonyos.md +9 -9
  97. package/resource/knowledge/push/api-reference/unity.md +10 -10
  98. package/resource/knowledge/push/api-reference/unreal-engine.md +11 -11
  99. package/resource/knowledge/push/config/donut.md +3 -3
  100. package/resource/knowledge/push/config/harmonyos.md +12 -12
  101. package/resource/knowledge/push/config/ios.md +2 -2
  102. package/resource/knowledge/push/integration/android.md +90 -1067
  103. package/resource/knowledge/push/integration/donut.md +11 -11
  104. package/resource/knowledge/push/integration/flutter.md +38 -24
  105. package/resource/knowledge/push/integration/harmonyos.md +1 -11
  106. package/resource/knowledge/push/integration/ios.md +29 -40
  107. package/resource/knowledge/push/integration/react-native.md +1 -1
  108. package/resource/knowledge/push/integration/uni-app.md +1 -1
  109. package/resource/knowledge/push/integration/unity.md +4 -4
  110. package/resource/knowledge/push/integration/unreal-engine.md +9 -9
  111. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +6 -6
  112. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +13 -13
  113. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +5 -5
  114. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -4
  115. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +6 -6
  116. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -4
  117. package/resource/knowledge/roomkit/core-sdk/vue/device-detection.md +0 -9
  118. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
  119. package/resource/knowledge/roomkit/core-sdk/vue/recording.md +3 -3
  120. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
  121. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -16
  122. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +0 -3
  123. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +3 -6
  124. package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +0 -15
  125. package/resource/knowledge/roomkit/preset/android/integration.md +5 -202
  126. package/resource/knowledge/roomkit/preset/flutter/integration.md +17 -13
  127. package/resource/knowledge/roomkit/preset/harmonyos/integration.md +10 -2
  128. package/resource/knowledge/roomkit/preset/ios/integration.md +7 -204
  129. package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
  130. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +244 -500
  131. package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
  132. package/server.js +1 -1
  133. package/utils/preflight-route.js +203 -185
  134. package/utils/report-cls-client.js +1 -1
  135. 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,316 @@ TUIRoomKit 是腾讯云提供的一站式多人视频会议解决方案,集成
211
10
  - **SDKSecretKey**:应用密钥,用于初始化配置文件的密钥信息。
212
11
 
213
12
  ### 环境准备
13
+ - **IDE**: HBuilderX 升级到新版本。
214
14
 
215
- > **说明:**
216
- > HBuilderX 4.64 和 4.65 版本对 UTS 插件打包存在已知兼容性问题,建议使用 4.66 或更高版本。
217
- >
15
+ - **语言**: nvue。
218
16
 
219
- - [HBuilderX](https://www.dcloud.io/hbuilderx.html):HBuilderX 是 **uni-app 官方**的集成开发环境(IDE),我们需要用它来导入、配置和运行我们的 Demo。
17
+ - **运行环境**: Node.js v12 版本及以上。
220
18
 
221
- - 2个移动设备: Android 5.0 以上的设备 / iOS 13.0 及以上设备。
19
+ - **包管理**: npm (版本需与 Node 版本匹配)。
222
20
 
223
- ## 快速接入
21
+ - **支持平台**: uni-app 打包 App。
224
22
 
225
- ### **步骤1:下载 TUIRoomKit 组件**
23
+ ## 集成步骤
226
24
 
227
- #### 1. 克隆项目源码
228
- ``` bash
229
- git clone
230
- ```
25
+ ### 步骤1:创建项目
231
26
 
232
- #### 2. 导入 atomic-x 组件
233
- - 将源码中 `TUIKit_uni-app/App/uni_modules` 目录下的 `tuikit-atomic-x` 文件夹,完整拷贝到您项目根目录下的 `uni_modules` 文件夹中。
27
+ 打开 HBuilderX,在菜单栏中选择**文件 > 新建 > 项目**,创建一个名为 `room-example` 的 uni-app vue3 项目。
234
28
 
235
- - 将源码中 `TUIKit_uni-app/App/components` 下的文件,完整的拷贝到您项目的 `components` 文件夹中。
29
+ ### 步骤2:安装 TUIKit 插件
236
30
 
237
- - 将源码中 `TUIKit_uni-app/App/static` 目录下的文件,完整拷贝到您项目根目录下的同名文件夹下。
31
+ 进入[【官方】腾讯云聊天+通话+直播响应式 SDK](https://ext.dcloud.net.cn/plugin)。点击**下载插件并导入 HBuilderX**,将插件导入 `room-example` 项目中。
238
32
 
239
- #### 3. 拷贝创建房间,加入房间,房间主界面等页面
240
- - 将源码中 `TUIKit_uni-app/App/pages` 目录下的文件,完整拷贝到您项目根目录下的同名文件夹中。
33
+ ### 步骤3:配置原生模块与 Android 权限
241
34
 
242
- - 将源码中 `TUIKit_uni-app/App/debug` 文件夹拷贝到您项目的根目录下,这个目录提供有可以方便您在客户端快速生成的 **UserSig** 的快捷函数。
35
+ 【Android 权限配置】
243
36
 
244
- #### 4. 合并 App.vue 配置
245
-
246
- **TUIKit_uni-app/App/App.vue** 文件中包含多人视频会议能力的初始化逻辑,因此您需要将 **TUIKit_uni-app/App/App.vue** 文件和您项目下的 **App.vue** 文件进行合并。
247
-
248
- > **注意:**
249
- >
250
- > 不要直接覆盖 **App.vue** 文件! 打开源码中的 **TUIKit_uni-app/App/App.vue**, 将其 `<script>` 部分的 ts 内容追加到您自己项目的 **App.vue** 的 `<script>` 标签内。
251
- >
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"/>
43
+ ```
252
44
 
253
- ### 步骤2:工程配置
254
- 1. 配置 `manifest.json`
45
+ 【iOS 权限配置】
255
46
 
256
- 打开您项目的 **manifest.json** 文件,在 **app-plus** > **distribute** 节点下,确保添加了以下必要的权限:
47
+ ``` java
48
+ "privacyDescription" : {
49
+ "NSCameraUsageDescription" : "应用需要访问您的相机以进行直播",
50
+ "NSMicrophoneUsageDescription" : "应用需要访问您的麦克风以进行直播"
51
+ },
52
+ "UIBackgroundModes" : [ "audio" ]
53
+ ```
257
54
 
258
- - Android 平台(`android` 节点):在 `permissions` 数组中,请确保包含以下权限:
55
+ ### 步骤4:集成 TUIKit
56
+ 1. **拷贝 TUIKit 页面及静态资源**:将 `⁠uni_modules/tuikit-atomic-x/quickstart_room/`⁠下的`⁠pages/*⁠` 拷贝到项目 `page`⁠ 目录,⁠`static/*⁠` 拷贝到项目 `static` 目录下。
259
57
 
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` 对象中,请确保包含以下描述:
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\"
61
+ ```
268
62
 
269
- ``` json
270
- "NSCameraUsageDescription" : "应用需要访问您的相机以进行多人音视频互动",
271
- "NSMicrophoneUsageDescription" : "应用需要访问您的麦克风以进行多人音视频互动"
272
- ```
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/
66
+ ```
273
67
 
274
- 在 `UIBackgroundModes` 数组中,添加 `audio` 以支持后台播放音频。
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/schedule/index",
105
+ "style": {
106
+ "navigationStyle": "custom"
107
+ }
108
+ },
109
+ {
110
+ "path": "pages/scenes/room/scheduleDetail/index",
111
+ "style": {
112
+ "navigationStyle": "custom"
113
+ }
114
+ },
115
+ {
116
+ "path": "pages/scenes/room/main/index",
117
+ "style": {
118
+ "navigationStyle": "custom",
119
+ "disableScroll": true,
120
+ "disableSwipeBack": true
121
+ }
122
+ },
123
+ {
124
+ "path": "pages/scenes/room/roomInvite/index",
125
+ "style": {
126
+ "navigationStyle": "custom",
127
+ "disableScroll": true,
128
+ "disableSwipeBack": true,
129
+ "backgroundColor": "#000000",
130
+ "app-plus": {
131
+ "titleNView": false,
132
+ "animationType": "slide-in-bottom"
133
+ }
134
+ }
135
+ }
136
+ ],
137
+ "globalStyle": {
138
+ "navigationBarTextStyle": "black",
139
+ "navigationBarTitleText": "腾讯云 IM",
140
+ "navigationBarBackgroundColor": "#EBF0F6",
141
+ "backgroundColor": "#F8F8F8"
142
+ }
143
+ }
144
+ ```
145
+ 3. **初始化来电邀请服务**:在 `App.vue` 的 `onLaunch` 里初始化 `initRoomCallService`。
146
+
147
+ ``` typescript
148
+ // App.vue
149
+ <script lang="ts">
150
+ import { initRoomCallService } from '@/uni_modules/tuikit-atomic-x/server/roomCallService';
151
+
152
+ export default {
153
+ onLaunch: function () {
154
+ initRoomCallService();
155
+ },
156
+ };
157
+ </script>
158
+ ```
159
+
160
+ ## 运行和测试
275
161
 
276
- ``` json
277
- "UIBackgroundModes" : [ "audio" ]
278
- ```
279
- 2. 制作自定义基座。
162
+ > **说明:**
163
+ > 接入过程中遇到任何卡点或有改进建议,欢迎通过 [视频会议 SDK 接入反馈问卷](https://wj.qq.com/s2/27395009/ac34/) 反馈,官方会及时跟进处理。
164
+ >
280
165
 
281
- > **说明:**
282
- >
283
- > 由于 TUIRoomKit 包含原生代码(UTS 插件),您**必须**制作自定义调试基座才能在真机上运行。
284
- >
166
+ ### 步骤1:**制作自定义基座**
285
167
 
286
- 1. 在 HBuilderX 顶部菜单选择**运行** > **运行到手机或模拟器** > **制作自定义调试基座**。
168
+ 点击**运行** > **运行到手机或模拟器** > **制作自定义调试基座**。
287
169
 
288
- 2. 制作成功后,再次选择**运行** > **运行到手机或模拟器**,在弹窗中勾选**使用自定义调试基座**后运行到您的手机。
170
+ > **说明:**
171
+ > 首次制作自定义基座需要下载 Gradle 依赖,Android 通常需要 10~20 分钟,iOS 需要 5~10 分钟。过程中请勿中断。
172
+ >
289
173
 
290
- 具体操作指引参见 编译并运行 Demo。
174
+ ### 步骤2:**登录**
291
175
 
292
- ### 步骤3:登录
176
+ 在 `pages/login/login.vue` 中,填入 `SDKAppID`、 `userID`、`SecretKey`,点击**登录**。
177
+ | 参数 | 类型 | 说明 |
178
+ | --- | --- | --- |
179
+ | SDKAppID | Number | SDKAppID 是 RoomKit 客户应用的唯一标识。您可以在 <a href="https://console.cloud.tencent.com/trtc">TRTC 控制台 > 应用管理</a> 创建新应用获取 。<br><strong>说明:</strong><br>SDKAppID 是 RoomKit 客户应用的唯一标识。我们建议每一个独立的 App 都申请一个新的 SDKAppID。不同 SDKAppID 之间是天然隔离的,不能互通。 |
180
+ | 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 测试,不可提交到代码仓库或用于生产环境。 |
181
+ | userID | String | 用户的唯一标识符,由您定义,只能包含大小写字母(a-z,A-Z)、数字(0-9)、下划线和连字符。 |
293
182
 
294
- 集成完成后,您需要完成登录。在您项目中需要使用到多人视频会议能力的地方进行登录,这是**使用 TUIRoomKit 的关键步骤**,因为只有在登录成功后才能正常使用 TUIRoomKit 的各项功能,故请您耐心检查相关参数是否配置正确:
295
- ``` typescript
296
- import { useLoginState } from "@/uni_modules/tuikit-atomic-x/state/LoginState";
183
+ ``` java
297
184
 
185
+ import { ref } from 'vue'
186
+ import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState';
187
+ import { genTestUserSig } from '@/uni_modules/tuikit-atomic-x/debug/GenerateTestUserSig';
298
188
  const { login } = useLoginState();
299
189
 
300
- onMounted(() => {
301
- login({
302
- sdkAppID: 1400000001, // 请替换为开通服务控制台的 SDKAppID
303
- userID: "your userID", // 请替换为您的 UserID
304
- userSig: "xxxxxxxxxxx", // 您可以在控制台中计算一个 UserSig 并填在这个位置
305
- });
306
- });
307
-
190
+ const sdkAppId = 0; // SDKAppID
191
+ const userId = ref(''); // userID
192
+ const secretKey = ''; // SecretKey
193
+
194
+ // 登录
195
+ login({
196
+ sdkAppID: sdkAppId,
197
+ userID: userId.value,
198
+ userSig: genTestUserSig({
199
+ SDKAppID: sdkAppId,
200
+ userID: userId.value,
201
+ secretKey: secretKey
202
+ }).userSig,
203
+ success: () => {
204
+ uni.reLaunch({ url: '/pages/scenes/room/index' })
205
+ },
206
+ fail: (code: number, msg: string) => {
207
+ uni.showToast({ title: msg || '登录失败', icon: 'none' })
208
+ }
209
+ })
308
210
  ```
309
211
 
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>。 |
212
+ ### 步骤3:**运行项目**
316
213
 
317
- ### 步骤4:注册多人视频会议主页面
214
+ 点击**运行** > **运行到手机或模拟器** > **运行到 Android/iOS 基座**,使用制作好的**自定义基座**运行到手机。
318
215
 
319
- 现在,您需要在 `pages.json` 文件中告诉您的应用,这个新页面是存在的。
216
+ ## AI 助手:知识咨询与代码集成
320
217
 
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
- }
339
- ```
218
+ 您在接入视频会议 SDK 过程中,可以通过 MCP 使用 AI 助手,快速完成知识咨询、报错排查和集成代码生成。支持 Web/Android/iOS/Flutter/uni-app/HarmonyOS 等平台,答案基于官方文档。适用于查询 Room 组件和 AtomicXCore SDK 用法以及集成文档等场景,[立即体验,提出您的第一个问题](https://cloud.tencent.com/document/product/647/129285)。
340
219
 
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
- }
361
- ```
220
+ ## 高级功能
362
221
 
363
- > **说明:**
364
- > **navigateTo** 与 **redirectTo**
365
- >
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
- ```
222
+ ### 屏幕共享
386
223
 
387
- ## 定制您的 UI
224
+ #### Android - 无需配置
388
225
 
389
- ### 替换主界面底部栏,顶部栏和视频流用户信息界面图标
226
+ 开箱即用。
390
227
 
391
- TUIRoomKit 用到的所有图标都存放于 `static/images` 目录下,部分示例如下,您可以根据您的诉求来替换目录下的图标。
228
+ #### iOS - 需配置 Broadcast Upload Extension
392
229
 
393
- 顶部栏:
230
+ ##### **步骤1:生成并绑定** Extension
394
231
 
395
- |图标路径|详细描述|
396
- |---------|---------|
397
- |/static/images/room/room_switch_camera.png|顶部操作栏切换摄像头图标。|
398
- |/static/images/room/room_speakerphone.png|顶部操作栏扬声器图标。|
399
- |/static/images/room/room_earpiece.png|顶部操作栏听筒图标。|
232
+ 使用您的账号 [登录](https://developer.apple.com/),进行以下操作,注意完成后需要下载对应的 Provisioning Profile。
233
+ 1. 单击 Certificates, IDs & Profiles。
400
234
 
401
- 底部栏:
235
+ 2. 在右侧的界面中单击加号。
402
236
 
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|底部操作栏摄像头关闭图标。|
237
+ 3. 选择 App Groups,单击 Continue。
410
238
 
411
- 视频流区域用户状态信息:
239
+ 4. 在弹出的表单中填写 Description 和 Identifier,其中 Identifier 需要传入接口中的对应的 AppGroup 参数。完成后单击 Continue。
412
240
 
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|底部操作栏管理员角色图标。|
241
+ 5. 回到 Identifier 页面,左上边的菜单中选择 App IDs,然后单击您的 App ID(主 App 与 Extension 的 AppID 需要进行同样的配置)。
419
242
 
420
- ### 设置字体的大小/颜色
243
+ 6. 选中 App Groups 并单击 Edit。
421
244
 
422
- uni-app 官方对 **nvue** 页面限制字体的大小和颜色只能在 `text` 标签上设置,对于您想修改的文案,直接修改其 `css` 样式即可,示例如下
245
+ 7. 在弹出的表单中选择您之前创建的 App Group,单击 Continue 返回编辑页,单击 Save 保存。
423
246
 
424
- 以 “解除静音” 文字为例:
425
- ``` typescript
426
- <template>
427
- <text class="bottom-text">解除静音</text>
428
- </template>
247
+ ##### **步骤2:配置屏幕共享扩展。**
429
248
 
430
- <style>
431
- .bottom-text {
432
- color: #FFFFFF;
433
- font-size: 20rpx;
434
- margin-top: 6rpx;
435
- text-overflow: ellipsis;
436
- }
437
- </style>
438
- ```
249
+ 2. 在 `nativeResources/ios` 下新建 `ios-extension.json` 文件,配置文件内容如下:
439
250
 
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>
251
+ |参数|说明|
252
+ |---------|---------|
253
+ |identifier|步骤1 中 Apple 开发者后台创建的 Extension 的 Bundle ID。|
254
+ |profile|`nativeResources/ios` 下的 .mobileprovision 的文件名。|
255
+ |entitlements.com.apple.security.application-groups|步骤1 中 Apple 开发者后台创建的 App Group ID。|
454
256
 
455
- ```
257
+ ``` java
258
+ {
259
+ "ScreenShareExtension.appex": {
260
+ "identifier": "xxx",
261
+ "profile": "xxx.mobileprovision",
262
+ "entitlements": {
263
+ "com.apple.security.application-groups": ["xxx"]
264
+ }
265
+ }
266
+ }
267
+ ```
456
268
 
457
- 最终效果:
269
+ 3. 在 `nativeResources/ios` 下新建 UniApp.entitlements 文件,配置文件内容如下:
458
270
 
459
- ### 设置按钮的大小
271
+ |**参数**|**说明**|
272
+ |---------|---------|
273
+ |com.apple.security.application-groups|步骤1 中 Apple 开发者后台创建的 App Group ID。|
460
274
 
461
- 设置按钮的大小,也可以直接通过修改 `css` 属性来进行设置,示例如下:
275
+ ``` xml
276
+ <?xml version="1.0" encoding="UTF-8"?>
277
+ <plist version="1.0">
278
+ <dict>
279
+ <key>com.apple.security.application-groups</key>
280
+ <array>
281
+ <string>xxx</string>
282
+ </array>
283
+ </dict>
284
+ </plist>
285
+ ```
462
286
 
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>
287
+ 4. 在 项目根目录下新建 `Info.plist` 文件,配置文件内容如下:
469
288
 
470
- <style>
471
- .bottom-icon {
472
- width: 48rpx;
473
- height: 48rpx;
474
- }
475
- </style>
476
- ```
289
+ |**参数**|**说明**|
290
+ |---------|---------|
291
+ |TUIRoomAppGroup|步骤1 中 Apple 开发者后台创建的 App Group ID。|
477
292
 
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>
293
+ ``` xml
294
+ <?xml version="1.0" encoding="UTF-8"?>
295
+ <plist version="1.0">
296
+ <dict>
297
+ <key>TUIRoomAppGroup</key>
298
+ <string>xxx</string>
299
+ </dict>
300
+ </plist>
301
+ ```
491
302
 
492
- ```
303
+ ##### **步骤3:**重新制作自定义基座**。**
493
304
 
494
- 最终效果:
305
+ 点击**运行** > **运行到手机或模拟器** > **制作 iOS 自定义调试基座。**
495
306
 
496
- ### 隐藏按钮
307
+ ### 预定会议和会中邀请
497
308
 
498
- 隐藏按钮可以通过注释代码的方式来进行直接隐藏,示例如下
309
+ TUIRoomKit 内置的邀请参会和预定会议选人组件,底层默认依赖腾讯云 IM 的用户关系链(好友列表)。如果您希望在这些组件中展示您企业内部的组织架构或好友列表,请先通过服务端 REST API 将您的业务联系人同步至腾讯云 IM 系统中:
310
+ 1. 使用 [账号管理 > 导入多个账号](https://cloud.tencent.com/document/product/269/4919) REST API 接口批量导入用户账号。
499
311
 
500
- 以底部操作栏的麦克风按钮为例:
501
- ``` typescript
502
- <!-- 底部操作栏 -->
503
- <view class="bottom-bar">
504
- <MembersButton />
505
- <!-- <MicButton /> --> <!-- 隐藏麦克风图标 -->
506
- <CameraButton />
507
- </view>
508
- ```
509
-
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
- ```
312
+ 2. 使用 [好友管理 > 导入好友](https://cloud.tencent.com/document/product/269/8301) REST API 接口批量导入用户关系链。
544
313
 
545
314
  ## 常见问题
546
315
 
547
- #### **Q:该 TUIKit 插件是否支持编译到 H5 或微信小程序?**
316
+ #### **该 TUIKit 插件是否支持编译到 H5 或微信小程序?**
548
317
 
549
- A:**不支持。**由于新版 TUIKit 基于 **UTS (Uni-app Type Script)** 插件架构开发,深度依赖 Android 和 iOS 的原生能力(如原生渲染引擎、本地数据库、音视频编解码),因此仅支持打包为 **App (Android/iOS)**。
318
+ **不支持。**由于新版 TUIKit 基于 **UTS (Uni-app Type Script)** 插件架构开发,深度依赖 Android 和 iOS 的原生能力(如原生渲染引擎、本地数据库、音视频编解码),因此仅支持打包为 **App (Android/iOS)**。
550
319
 
551
- #### **Q:我的现有项目全是** `.vue` **页面(Webview 渲染),能直接集成吗?**
320
+ #### **我的现有项目全是** `.vue` **页面(Webview 渲染),能直接集成吗?**
552
321
 
553
- A:**可以混用,但需要注意页面模式。**
322
+ **可以混用,但需要注意页面模式。**
554
323
 
555
324
  nvue 页面和 vue 页面可以互相跳转,但是 vue 页面的子组件不建议是 nvue 组件。TUIKit 的 UI 组件是 nvue 组件,因此使用 TUIKit 所在的**页面(pages)**必须也是 nvue 文件。
556
325
 
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` 等)。
567
-
568
- #### **Q:**运行报错 "uni is not defined" 或组件无法加载?
569
-
570
- A:请检查是否制作并使用了**自定义调试基座**。
571
-
572
- 由于插件包含原生代码(Java/Objective-C),标准基座不包含这些原生库。
573
- - **解决步骤:** 请严格按照文档“运行和测试-步骤2”操作,在 HBuilderX 中点击 **运行** > **运行到手机或模拟器** > **制作自定义调试基座**。制作完成后,运行时请务必选择**运行到 Android/iOS 基座**,并勾选“使用自定义基座”。
574
-
575
- #### **Q:制作自定义基座时一直失败或卡顿怎么办?**
576
-
577
- A:这通常是本地原生编译环境(Gradle 或 CocoaPods)配置问题导致的。
578
- - **Android:** 请检查本地 JDK 版本是否兼容,以及网络是否能正常访问 Maven/Google 仓库。
579
-
580
- - **iOS:** 请确保已安装 CocoaPods 且版本更新,同时检查网络环境是否能访问 GitHub 或 CDN 库。
581
-