@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
@@ -0,0 +1,353 @@
1
+ 本文将介绍如何快速接入 TUICallKit 组件。您可以在 10 分钟内完成以下关键步骤,最终获得一个功能完备的音视频通话界面。
2
+
3
+ > **说明:**
4
+ > 自 2025 年 5 月 1 日起,由于 uni-app 官方限制,CallKit 原生语言插件已终止迭代,为保障业务持续稳定运行,现提供 CallKit UTS 插件方案。
5
+ >
6
+ > ​​CallKit UTS 插件核心优势:​​
7
+ >
8
+ > - 支持自定义 UI、深度界面定制。
9
+ > - 支持 uni-app 项目。
10
+ > - 提供插件版本锁定功能,避免因更新导致兼容性问题。
11
+
12
+ ## 准备工作
13
+
14
+ ### 环境要求
15
+
16
+ > **说明:**
17
+ > HBuilderX 4.64 和 4.65 版本对 UTS 插件打包存在已知兼容性问题,建议使用 4.66 或更高版本。
18
+ >
19
+
20
+ - [HBuilderX](https://www.dcloud.io/hbuilderx.html):HBuilderX 是 **uni-app 官方**的集成开发环境(IDE),我们需要用它来导入、配置和运行我们的 Demo。
21
+
22
+ - 2个移动设备: Android 5.0 以上的设备 / iOS 13.0 及以上设备。
23
+
24
+ ### 开通服务
25
+
26
+ 您需要开通腾讯云服务,以获取应用所需的唯一身份标识和密钥。 。
27
+
28
+ ## 代码集成
29
+
30
+ ### **步骤 1:下载 TUICallKit 源码**
31
+
32
+ 【Vue3】
33
+ 1. **克隆项目源码。**
34
+
35
+ ``` bash
36
+ git clone https://github.com/Tencent-RTC/TUIKit_uni-app.git
37
+ ```
38
+ 2. **导入 atomic-x 组件。**
39
+
40
+ - 将源码中 `TUIKit_uni-app/App/uni_modules` 目录下的 `tuikit-atomic-x` 文件夹,完整拷贝到您项目根目录下的 `uni_modules` 文件夹中。
41
+
42
+ - 将源码中 `TUIKit_uni-app/App/components` 下的文件,完整地拷贝到您项目的 `components` 文件夹中。
43
+
44
+ - 将源码中 `TUIKit_uni-app/App/static` 目录下的文件,完整拷贝到您项目根目录下的同名文件夹下。
45
+
46
+ - 将源码中 `TUIKit_uni-app/App/debug` 文件夹拷贝到您项目的根目录下,这个目录提供可以方便您在客户端快速生成的 **UserSig** 的快捷函数。
47
+
48
+ 3. **合并 App.vue 配置。**
49
+
50
+ **TUIKit_uni-app/App/App.vue** 文件中包含通话能力的初始化逻辑,因此您需要将 **TUIKit_uni-app/App/App.vue** 文件和您项目下的 **App.vue** 文件进行合并。
51
+
52
+ > **注意:**
53
+ >
54
+ > 不要直接覆盖 **App.vue** 文件! 打开源码中的 **TUIKit_uni-app/App/App.vue**, 将其 `<script>` 部分的 ts 内容追加到您自己项目的 **App.vue** 的 `<script>` 标签内。
55
+ >
56
+
57
+ 【Vue2】
58
+ 1. **安装 TUIKit 插件。**
59
+
60
+ 进入[【官方】腾讯云聊天+通话+直播响应式 SDK](https://ext.dcloud.net.cn/plugin)。点击【下载插件并导入 HBuilderX】,将插件导入您的项目中。
61
+
62
+ 2. **导入 atomic-x 组件。**
63
+
64
+ 1. **转化兼容模式**:仅 Vue2 项目,Vue3 项目可忽略。
65
+
66
+ > **说明:**
67
+ >
68
+ > 该脚本用于将插件源码中 Vue3 的 Composition API 写法自动转换为 Vue2 的 Options API 写法,以确保在 Vue2 项目中正常运行。
69
+ >
70
+
71
+ ``` bash
72
+ node ./uni_modules/tuikit-atomic-x/scripts/switch-to-compatible-mode.js
73
+ ```
74
+ 2. **拷贝静态资源**:将 `⁠uni_modules/tuikit-atomic-x/quickstart/` ⁠下的 ⁠⁠`static/*⁠` 拷贝到项目 `static` 目录下。
75
+
76
+ 【Mac 端】
77
+ ``` java
78
+ cp -r uni_modules/tuikit-atomic-x/quickstart/static/* static/
79
+ ```
80
+
81
+ 【Windows 端】
82
+ ``` bash
83
+ xcopy /E /I /Y "uni_modules\tuikit-atomic-x\quickstart\static\*" "static\"
84
+ ```
85
+ 3. **合并 App.vue 配置。**
86
+
87
+ 通话能力的初始化需要在应用唤醒的时候进行,因此需要您将以下代码和您项目中的 `App.vue` 中的逻辑进行合并处理。
88
+ ``` typescript
89
+ import { initCallService } from '@/uni_modules/tuikit-atomic-x/server/callService';
90
+ export default {
91
+ onLaunch: function() {
92
+ initCallService()
93
+ console.log('App Launch')
94
+ },
95
+ onShow: function() {
96
+ console.log('App Show')
97
+ },
98
+ onHide: function() {
99
+ console.log('App Hide')
100
+ }
101
+ }
102
+ ```
103
+
104
+ ### 步骤 2:工程配置
105
+ 1. 配置 `manifest.json`。
106
+
107
+ 打开您项目的 **manifest.json** 文件,在 **app-plus** > **distribute** 节点下,确保添加了以下必要的权限:
108
+
109
+ - Android 平台(`Android` 节点):在 `permissions` 数组中,请确保包含以下权限:
110
+
111
+ ``` json
112
+ "<uses-permission android:name=\"android.permission.CAMERA\"/>",
113
+ "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
114
+ "<uses-permission android:name=\"android.permission.INTERNET\"/>",
115
+ "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
116
+ "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
117
+ "<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
118
+ "<uses-permission android:name=\"android.permission.VIBRATE\"/>"
119
+ ```
120
+ - iOS 平台(`iOS` 节点):在 `privacyDescription` 对象中,请确保包含以下描述:
121
+
122
+ ``` json
123
+ "NSCameraUsageDescription" : "应用需要访问您的相机以进行通话",
124
+ "NSMicrophoneUsageDescription" : "应用需要访问您的麦克风以进行通话"
125
+ ```
126
+
127
+ 在 `UIBackgroundModes` 数组中,添加 `audio` 以支持后台播放音频。
128
+
129
+ ``` json
130
+ "UIBackgroundModes" : [ "audio" ]
131
+ ```
132
+ 2. 制作自定义基座。
133
+
134
+ > **说明:**
135
+ >
136
+ > 由于 TUICallKit 包含原生代码(UTS 插件),您**必须**制作自定义调试基座才能在真机上运行。
137
+ >
138
+
139
+ 1. 在 HBuilderX 顶部菜单选择**运行** > **运行到手机或模拟器** > **制作自定义调试基座**。
140
+
141
+ 2. 制作成功后,再次选择**运行** > **运行到手机或模拟器**,在弹窗中勾选**使用自定义调试基座**后运行到您的手机。
142
+
143
+ 具体操作指引参见 跑通 Demo 的步骤3。
144
+
145
+ ### 步骤 3:完成登录
146
+
147
+ 集成完成后,您需要完成登录。在您项目中需要使用到通话能力的地方进行登录,这是**使用 TUICallKit 的关键步骤**,因为只有在登录成功后才能正常使用 TUICallKit 的各项功能,故请您耐心检查相关参数是否配置正确:
148
+
149
+ 【Vue3】
150
+ ``` typescript
151
+ import { onMounted } from 'vue';
152
+ import { useLoginState } from "@/uni_modules/tuikit-atomic-x/state/LoginState";
153
+
154
+ const { login } = useLoginState();
155
+ onMounted(() => {
156
+ login({
157
+ sdkAppID: 1400000001, // 请替换为开通服务控制台的 SDKAppID
158
+ userID: "denny", // 请替换为您的 UserID
159
+ userSig: "xxxxxxxxxxx", // 您可以在控制台中计算一个 UserSig 并填在这个位置
160
+ });
161
+ });
162
+ ```
163
+
164
+ 【Vue2】
165
+ ``` typescript
166
+ <script>
167
+ import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState'
168
+
169
+ export default {
170
+ data() {
171
+ var loginStore = useLoginState()
172
+ return {
173
+ loginStore: loginStore,
174
+ userId: '',
175
+ userSig: ''
176
+ }
177
+ },
178
+ methods: {
179
+ handleLogin: function () {
180
+ if (!this.userId || !this.userSig) return
181
+ var self = this
182
+ this.loginStore.login({
183
+ sdkAppID: 1400000001, // 你的 SDKAppID
184
+ userID: this.userId,
185
+ userSig: this.userSig,
186
+ })
187
+ }
188
+ }
189
+ }
190
+ </script>
191
+
192
+ ```
193
+
194
+ **登录接口参数说明**
195
+ | 参数 | 类型 | 说明 |
196
+ | --- | --- | --- |
197
+ | SDKAppID | Number | 从 <a href="https://console.cloud.tencent.com/trtc">TRTC 控制台 > 应用管理</a> 获取。 |
198
+ | userID | String | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。 |
199
+ | 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>。 |
200
+
201
+ ### 步骤 4:注册通话页面
202
+
203
+ 现在,您需要在 `pages.json` 文件中告诉您的应用,这个新页面是存在的。
204
+
205
+ 打开您项目根目录下的 `pages.json` 文件,在 `"pages"` 数组中,添加以下对象来注册通话页。
206
+ ``` java
207
+ {
208
+ "pages": [
209
+ // ... 您项目已有的其他页面配置
210
+ {
211
+ "path": "uni_modules/tuikit-atomic-x/pages/call",
212
+ "style": {
213
+ "navigationBarTitleText": "",
214
+ "disableSwipeBack": true, // 禁止右滑返回,防止直播中误操作退出
215
+ "app-plus": {
216
+ "titleNView": false // 隐藏原生导航栏,使用页面内的自定义导航
217
+ }
218
+ }
219
+ }
220
+ ]
221
+ // ... 其他配置
222
+ }
223
+
224
+ ```
225
+
226
+ ### 步骤5:跳转通话页面
227
+
228
+ 在您需要发起通话的地方(具体由您的业务决定,在其点击事件里执行),您需要先调用 calls 函数。在该函数成功执行的 success 回调中,再通过 uni.navigateTo 跳转到通话页面,以确保通话状态已正确建立。
229
+
230
+ 【Vue3】
231
+ ``` typescript
232
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
233
+ import { useDeviceState } from "@/uni_modules/tuikit-atomic-x/state/DeviceState";
234
+ const { calls } = useCallState()
235
+ const { openLocalCamera, openLocalMicrophone } = useDeviceState();
236
+
237
+ // 示例:在一个按钮的点击事件中
238
+ function startCall() {
239
+ // 跳转到通话页
240
+ calls({
241
+ participantIds: ['xxx'],
242
+ mediaType: 1, // 1 是视频通话, 0 是语音通话
243
+ success: () => {
244
+ openLocalCamera({isFront: true})
245
+ openLocalMicrophone()
246
+ uni.navigateTo({
247
+ url: '/uni_modules/tuikit-atomic-x/pages/call?layoutTemplate=Float'
248
+ })
249
+ },
250
+ fail: (error) => {
251
+ console.log('calls fail:', error)
252
+ }
253
+ });
254
+ }
255
+
256
+ ```
257
+
258
+ 【Vue2】
259
+ ``` typescript
260
+ <script>
261
+ import { useCallState, CallMediaType } from '@/uni_modules/tuikit-atomic-x/state/CallState'
262
+ import { useDeviceState } from '@/uni_modules/tuikit-atomic-x/state/DeviceState'
263
+
264
+ export default {
265
+ data() {
266
+ var callStore = useCallState()
267
+ var deviceStore = useDeviceState()
268
+ return {
269
+ callStore: callStore,
270
+ deviceStore: deviceStore,
271
+ // 要呼叫的用户 ID
272
+ participantId: 'xxx'
273
+ }
274
+ },
275
+ methods: {
276
+ startCall: function () {
277
+ var self = this
278
+
279
+ // 发起通话
280
+ this.callStore.calls({
281
+ participantIds: [this.participantId], // 被呼叫者用户 ID 数组
282
+ mediaType: CallMediaType.Video, // 1 是视频通话, 0 是语音通话
283
+ success: function () {
284
+ console.log('发起通话成功')
285
+
286
+ // 打开本地摄像头
287
+ self.deviceStore.openLocalCamera({
288
+ isFront: true, // 使用前置摄像头
289
+ success: function () {
290
+ console.log('摄像头打开成功')
291
+ },
292
+ fail: function (errCode, errMsg) {
293
+ console.log('摄像头打开失败:', errMsg)
294
+ }
295
+ })
296
+
297
+ // 打开本地麦克风
298
+ self.deviceStore.openLocalMicrophone({
299
+ success: function () {
300
+ console.log('麦克风打开成功')
301
+ },
302
+ fail: function (errCode, errMsg) {
303
+ console.log('麦克风打开失败:', errMsg)
304
+ }
305
+ })
306
+
307
+ // 跳转到通话页面
308
+ uni.navigateTo({
309
+ url: '/uni_modules/tuikit-atomic-x/pages/call?layoutTemplate=Float'
310
+ })
311
+ },
312
+ fail: function (error) {
313
+ console.log('发起通话失败:', error)
314
+ }
315
+ })
316
+ }
317
+ }
318
+ }
319
+ </script>
320
+ ```
321
+
322
+ > **说明:**
323
+ > 在 `tuikit-atomic-x/server/callService` 文件中进行了默认处理被叫端收到呼叫的逻辑,若您需要自定义,可以修改该文件中的 `"onCallReceived"` 事件对应的处理逻辑。
324
+ >
325
+
326
+ ## 常见问题
327
+
328
+ ### 调用接口没有反应?
329
+
330
+ 请检查您是否制作了自定义基座并且使用自定义基座运行项目。
331
+
332
+ ### 如何禁止系统侧滑返回上一个页面的行为?
333
+
334
+ iOS 端可以通过设置页面上的 **disableSwipeBack** 属性进行禁止。详情参考 [uni-app 官方文档](https://uniapp.dcloud.net.cn/collocation/pages.html)。
335
+
336
+ Android 端可以通过 **onBackPress** 拦截系统侧滑和物理返回,示例代码如下
337
+
338
+ > **注意:**
339
+ > 使用该方式进行系统侧滑和物理返回的拦截的前提是该页面使用的是 [自定义导航栏](https://uniapp.dcloud.net.cn/collocation/pages.html#customnav)。
340
+ >
341
+
342
+ ``` typescript
343
+ <script setup>
344
+ import { onBackPress } from '@dcloudio/uni-app'
345
+
346
+ // 拦截系统侧滑和物理返回键,防止通话中误退出
347
+ onBackPress((option) => {
348
+ if (option.from === 'backbutton') {
349
+ return true; // 返回 true 阻止默认回退行为
350
+ }
351
+ });
352
+ </script>
353
+ ```
@@ -15,9 +15,9 @@ TUIKit 采用数据驱动的响应式架构与原生 Android View 体系(非 C
15
15
 
16
16
  - 一个有效的腾讯云账号及 Chat 应用。可参考 开通服务 从控制台获取以下信息:
17
17
 
18
- - SDKAppID:App 在控制台获取的 Chat 应用的 ID,为应用的唯一标识。
18
+ - SDKAppID:App 在控制台获取的 Chat 应用的 ID,为应用的唯一标识。
19
19
 
20
- - SDKSecretKey:应用的密钥。
20
+ - SDKSecretKey:应用的密钥。
21
21
 
22
22
  > **版本兼容性说明:**
23
23
  >
@@ -42,16 +42,16 @@ git clone https://cnb.cool/tencent/cloud/trtc/TUIKit_Android
42
42
  // 或者 git clone https://github.com/Tencent-RTC/TUIKit_Android.git
43
43
  ```
44
44
 
45
- 将仓库根目录下的 `chat`、`atomic_x`(以及可选的、用于音视频通话的 `call`)文件夹整体复制到您的工程根目录下。复制完成后的目录结构如下:
45
+ 将仓库根目录下的 `chat`、`call` 和 `atomic_x` 文件夹整体复制到您的工程根目录下。复制完成后的目录结构如下:
46
46
  ``` text
47
47
  YourApplication/
48
48
  ├── app/ # 您的应用模块
49
- ├── atomic_x/ # 基础 UI 组件库(必要)
50
- ├── call/ # 音视频通话组件(可选)
49
+ ├── atomic_x/ # 基础 UI 组件库
50
+ ├── call/ # 音视频通话组件
51
51
  │ └── tuicallkit-kt/
52
52
  ├── chat/ # Chat 源码
53
- │ ├── demo/ # 示例工程(可参考,非必需)
54
- │ └── uikit/ # Chat UIKit 组件库(必要)
53
+ │ ├── demo/ # 示例工程
54
+ │ └── uikit/ # Chat UIKit 组件库
55
55
  ├── settings.gradle.kts
56
56
  └── build.gradle.kts
57
57
  ```
@@ -67,15 +67,12 @@ YourApplication/
67
67
  ``` kotlin
68
68
  // settings.gradle.kts
69
69
 
70
- // 引入 Chat UIKit 组件库(必要)
71
- include(":uikit")
72
- project(":uikit").projectDir = file("${settingsDir.path}/chat/uikit")
73
-
74
- // 引入 AtomicX 基础 UI 组件库(必要)
75
70
  include(":atomic_x")
76
71
  project(":atomic_x").projectDir = file("${settingsDir.path}/atomic_x")
77
72
 
78
- // 引入音视频通话组件(可选,集成音视频通话时需要)
73
+ include(":uikit")
74
+ project(":uikit").projectDir = file("${settingsDir.path}/chat/uikit")
75
+
79
76
  include(":tuicallkit-kt")
80
77
  project(":tuicallkit-kt").projectDir = file("${settingsDir.path}/call/tuicallkit-kt")
81
78
  ```
@@ -84,15 +81,12 @@ project(":tuicallkit-kt").projectDir = file("${settingsDir.path}/call/tuicallkit
84
81
  ``` groovy
85
82
  // settings.gradle
86
83
 
87
- // 引入 Chat UIKit 组件库(必要)
88
- include ':uikit'
89
- project(':uikit').projectDir = new File(settingsDir, 'chat/uikit')
90
-
91
- // 引入 AtomicX 基础 UI 组件库(必要)
92
84
  include ':atomic_x'
93
85
  project(':atomic_x').projectDir = new File(settingsDir, 'atomic_x')
94
86
 
95
- // 引入音视频通话组件(可选,集成音视频通话时需要)
87
+ include ':uikit'
88
+ project(':uikit').projectDir = new File(settingsDir, 'chat/uikit')
89
+
96
90
  include ':tuicallkit-kt'
97
91
  project(':tuicallkit-kt').projectDir = new File(settingsDir, 'call/tuicallkit-kt')
98
92
  ```
@@ -103,10 +97,8 @@ project(':tuicallkit-kt').projectDir = new File(settingsDir, 'call/tuicallkit-kt
103
97
  ``` kotlin
104
98
  // app/build.gradle.kts
105
99
  dependencies {
106
- // TUIKit 组件库(必要)
107
- implementation(project(":uikit"))
108
100
  implementation(project(":atomic_x"))
109
- // 音视频通话(可选)
101
+ implementation(project(":uikit"))
110
102
  implementation(project(":tuicallkit-kt"))
111
103
  }
112
104
  ```
@@ -115,10 +107,8 @@ dependencies {
115
107
  ``` groovy
116
108
  // app/build.gradle
117
109
  dependencies {
118
- // TUIKit 组件库(必要)
119
- implementation project(':uikit')
120
110
  implementation project(':atomic_x')
121
- // 音视频通话(可选)
111
+ implementation project(':uikit')
122
112
  implementation project(':tuicallkit-kt')
123
113
  }
124
114
  ```
@@ -137,6 +127,8 @@ dependencies {
137
127
  ``` java
138
128
  import io.trtc.tuikit.atomicxcore.api.CompletionHandler
139
129
  import io.trtc.tuikit.atomicxcore.api.login.LoginStore
130
+ import com.tencent.cloud.tuikit.engine.call.TUICallEngine
131
+ import com.tencent.cloud.tuikit.engine.common.TUICommonDefine
140
132
 
141
133
  LoginStore.shared.login(
142
134
  context,
@@ -145,7 +137,19 @@ LoginStore.shared.login(
145
137
  userSig, // String,控制台或服务端生成
146
138
  object : CompletionHandler {
147
139
  override fun onSuccess() {
148
- // 登录成功,可跳转会话列表或聊天页
140
+ // 登录成功
141
+ TUICallEngine.createInstance(context).init(
142
+ sdkAppID, userID, userSig,
143
+ object : TUICommonDefine.Callback {
144
+ override fun onSuccess() {
145
+ // 初始化成功,可使用音视频通话能力
146
+ }
147
+
148
+ override fun onError(errCode: Int, errMsg: String) {
149
+ // 初始化失败
150
+ }
151
+ }
152
+ )
149
153
  }
150
154
  override fun onFailure(code: Int, desc: String) {
151
155
  // 登录失败,可弹框报错
@@ -158,37 +162,7 @@ LoginStore.shared.login(
158
162
  > 在正式的生产环境中,建议在您的服务端生成 UserSig,在需要时由 App 向业务服务器发起请求获取动态 UserSig 进行鉴权。详见 [服务端生成 UserSig](https://cloud.tencent.com/document/product/269/32688)。
159
163
  >
160
164
 
161
- #### 步骤3:构建会话列表界面
162
-
163
- 会话列表只需创建 `ConversationsPageView` 并加入到您的布局即可。它会自动从本地读取最近会话,点击某个会话时通过 `onConversationClick` 回调返回该会话的 `conversationID`,您可据此跳转聊天界面。
164
- ``` kotlin
165
- import android.os.Bundle
166
- import androidx.appcompat.app.AppCompatActivity
167
- import io.trtc.tuikit.chat.uikit.pages.ConversationsPageView
168
-
169
- class ConversationActivity : AppCompatActivity() {
170
- override fun onCreate(savedInstanceState: Bundle?) {
171
- super.onCreate(savedInstanceState)
172
-
173
- val conversationsPage = ConversationsPageView(this)
174
- conversationsPage.setHeaderTitle("消息")
175
-
176
- // 点击会话回调,conversationID 已带 c2c_ / group_ 前缀
177
- conversationsPage.onConversationClick = { conversationID ->
178
- // 跳转到您的聊天界面,并将 conversationID 传入(可参考步骤4 的 ChatActivity)
179
- }
180
- // 可选:搜索、发起单聊、创建群聊等入口回调
181
- conversationsPage.onSearchClick = { /* 跳转搜索页 */ }
182
- conversationsPage.onStartChatClick = { /* 发起单聊 */ }
183
- conversationsPage.onCreateGroupClick = { /* 创建群聊 */ }
184
-
185
- // 将会话列表设置为页面内容
186
- setContentView(conversationsPage)
187
- }
188
- }
189
- ```
190
-
191
- #### 步骤4:构建聊天界面
165
+ #### 步骤3:构建聊天界面
192
166
 
193
167
  聊天界面使用 `ChatPageView` 展示和收发消息,通过 `setup` 传入 `conversationID` 即可。`conversationID` 的格式为:单聊 `c2c_<对方 UserID>`,群聊 `group_<群 GroupID>`。
194
168
  ``` kotlin
@@ -225,55 +199,14 @@ class ChatActivity : AppCompatActivity() {
225
199
  > 示例工程(demo)中提供了基于 `ChatPageView` 封装好的聊天页 `ChatActivity`(带标题栏、未读角标、群事件处理等),可直接复用或参考其实现进行自定义:`ChatActivity.start(context, conversationID)`。
226
200
  >
227
201
 
228
- #### 步骤5:构建联系人界面
202
+ #### 步骤4:音视频通话
229
203
 
230
- 联系人界面使用 `ContactsPageView` 展示好友列表、群组列表等,通过 `setup` 设置点击回调。点击联系人或群组时跳转对应聊天界面。
231
- ``` kotlin
232
- import android.os.Bundle
233
- import androidx.appcompat.app.AppCompatActivity
234
- import io.trtc.tuikit.chat.uikit.pages.ContactsPageView
235
-
236
- class ContactActivity : AppCompatActivity() {
237
- override fun onCreate(savedInstanceState: Bundle?) {
238
- super.onCreate(savedInstanceState)
239
-
240
- val contactsPage = ContactsPageView(this)
241
- contactsPage.setHeaderTitle("通讯录")
242
- contactsPage.setup(
243
- onContactClick = { contactInfo ->
244
- // 跳转到您的聊天界面,单聊会话 ID 为 "c2c_" + contactInfo.userID(可参考步骤4 的 ChatActivity)
245
- },
246
- onGroupClick = { contactInfo ->
247
- // 跳转到您的聊天界面,群聊会话 ID 为 "group_" + contactInfo.userID(可参考步骤4 的 ChatActivity)
248
- }
249
- )
250
- setContentView(contactsPage)
251
- }
252
- }
253
- ```
254
-
255
- #### 步骤6:主题设置(可选)
256
-
257
- TUIKit 通过 `ThemeStore` 支持设置主题色与浅色 / 深色主题切换。
258
- ``` kotlin
259
- import io.trtc.tuikit.atomicx.theme.Theme
260
- import io.trtc.tuikit.atomicx.theme.ThemeStore
261
-
262
- // 设置主题色
263
- ThemeStore.shared(context).setPrimaryColor("#1C66E5")
264
-
265
- // 切换浅色 / 深色主题
266
- ThemeStore.shared(context).setTheme(Theme.lightTheme(context))
267
- // ThemeStore.shared(context).setTheme(Theme.darkTheme(context))
268
- ```
269
-
270
- #### 步骤7:音视频通话(可选)
271
-
272
- 若需在聊天中支持音视频通话,请先 [开通音视频服务](https://console.cloud.tencent.com/im),并在集成步骤中引入 `:tuicallkit-kt` 组件。**登录成功后**初始化 `TUICallEngine,`即可在 Chat 组件中正常使用该功能。
204
+ **登录成功后**初始化 `TUICallEngine,`即可在 Chat 组件中正常使用该功能。如需开通音视频通话服务,
273
205
  ``` kotlin
274
206
  import com.tencent.cloud.tuikit.engine.call.TUICallEngine
275
207
  import com.tencent.cloud.tuikit.engine.common.TUICommonDefine
276
208
 
209
+ // 在步骤 2 的 LoginStore 登录成功回调中初始化 TUICallEngine
277
210
  TUICallEngine.createInstance(context).init(
278
211
  sdkAppID, userID, userSig,
279
212
  object : TUICommonDefine.Callback {
@@ -288,7 +221,7 @@ TUICallEngine.createInstance(context).init(
288
221
  )
289
222
  ```
290
223
 
291
- #### 步骤8:接入智能客服 Desk 用户端(可选)
224
+ #### 步骤5:接入智能客服 Desk 用户端
292
225
 
293
226
  若需同时集成智能客服 Desk 用户端,请先 [开通智能客服 Desk 服务](https://cloud.tencent.com/document/product/269/96059),并根据 [Android 接入智能客服用户端](https://cloud.tencent.com/document/product/269/110809) 文档完成 `com.tencentcloud.desk:aideskcustomer` 包引入和配置,即可在您的应用中引入客服会话能力。
294
227
  ``` java
@@ -319,6 +252,10 @@ TencentAiDeskCustomer.getInstance().initWithProfile(context, SDKAppID, userID, u
319
252
  });
320
253
  ```
321
254
 
255
+ ## AI 助手:知识咨询与代码集成
256
+
257
+ 在接入 IM SDK 过程中,您可以通过 MCP 使用 AI 助手,快速完成知识咨询、报错排查和 UIKit 集成代码生成。支持 Web/Android/iOS/Flutter/uni-app 等平台,答案基于官方文档。适用于查询 SDK API、UI 组件用法、服务端 API 与 IM 产品配置等场景,[立即体验,提出您的第一个问题](https://cloud.tencent.com/document/product/269/126983)。
258
+
322
259
  ## 常见问题
323
260
 
324
261
  ### 音视频常见问题
@@ -332,6 +269,21 @@ TencentAiDeskCustomer.getInstance().initWithProfile(context, SDKAppID, userID, u
332
269
 
333
270
  - 如果是群聊通话邀请,被邀请者离线再上线后会自动拉取最近 30 秒内的邀请,TUIKit 会自动唤起群通话界面。
334
271
 
272
+ ##### **如何移除音视频通话功能?**
273
+
274
+ 如果您不需要集成音视频通话功能,请在 `settings.gradle.kts`(或 `settings.gradle`) 和 `app` 模块的 `build.gradle.kts`(或 `build.gradle`) 文件中移除 `tuicallkit-kt` 依赖,并在步骤 3 创建聊天界面中关闭音视频通话开关,代码如下所示:
275
+ ``` java
276
+ val messageInputConfig = ChatMessageInputConfig(
277
+ isShowAudioCall = false, // 关闭语音通话
278
+ isShowVideoCall = false // 关闭视频通话
279
+ )
280
+ val chatPageView = ChatPageView(this)
281
+ chatPageView.setup(
282
+ conversationID = conversationID,
283
+ messageInputConfig = messageInputConfig
284
+ )
285
+ ```
286
+
335
287
  ### 其他常见问题
336
288
 
337
289
  ##### 表情包的使用
@@ -26,7 +26,7 @@ iOS 端 `TUIKit`默认自带 **简体中文、英语** 和 **阿拉伯语** 语
26
26
 
27
27
  > **说明**
28
28
  >
29
- > 语言代码清单见 附录。
29
+ > 语言代码清单见 [附录](#code)。
30
30
  >
31
31
 
32
32
  ## 使用更多语言/自定义翻译表述
@@ -37,7 +37,7 @@ iOS 端 `TUIKit`默认自带 **简体中文、英语** 和 **阿拉伯语** 语
37
37
 
38
38
  我们自带的所有语言包,以String文件模板的形式,存储于您项目里Pods中`TUICore`组件的`TUIKitLocalizable/Localizable/` 路径。
39
39
 
40
- 请新建目录并命名为`{语言编码}.lproj`,在此目录下新增 `Localizable.strings`文件,其中,`${语言编码}` 需要替换为 ISO 639-1 语言代码。(可以直接复制您熟悉的语言文件,如zh-Hans.lproj,并直接修改目录名称)
40
+ 请新建目录并命名为`{语言编码}.lproj`,在此目录下新增 `Localizable.strings`文件,其中,`${语言编码}` 需要替换为 [ISO 639-1 语言代码](#code)。(可以直接复制您熟悉的语言文件,如zh-Hans.lproj,并直接修改目录名称)
41
41
  如果您需要兼容支持多个新语言,复制多份,并准确指定每一份的语言编码即可。
42
42
 
43
43
  以韩语为例,新增`ko.lproj/Localizable.strings`的语言资源文件:
@@ -52,17 +52,17 @@ iOS 端 `TUIKit`默认自带 **简体中文、英语** 和 **阿拉伯语** 语
52
52
 
53
53
  如果是其他语种,则需要在 `TUIGlobalization.m`中的`+ (NSString *)tk_localizableLanguageKey`
54
54
 
55
- 新增的语言词条包命名需要 符合标准,组件内部会跟随系统语言自适应。
55
+ 新增的语言词条包命名需要 [符合标准](#code),组件内部会跟随系统语言自适应。
56
56
 
57
57
  > **说明**
58
58
  >
59
- > 语言代码清单见 ISO 639-1 语言代码。
59
+ > 语言代码清单见 [ISO 639-1 语言代码](#code)。
60
60
  >
61
61
 
62
62
  ### 指定显示的语言
63
63
 
64
64
  如果您需要指定`TUIKit`界面语言,请在`[TUIGlobalization setPreferredLanguage:@""]`中传入需要的语言,指定语言后,组件内部不再跟随系统语言。
65
- 语言可选项,取值为 ISO 639-1 语言代码
65
+ 语言可选项,取值为 [ISO 639-1 语言代码](#code)
66
66
  以韩语为例,传入`[TUIGlobalization setPreferredLanguage:@"ko"];`
67
67
 
68
68
  ## 附录:语言代码表