@tencentcloud/sdk-mcp 1.7.1 → 1.7.3

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 (44) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +13 -5
  3. package/knowledge/bm25.js +20 -11
  4. package/knowledge/search/generic-rerank.js +123 -0
  5. package/knowledge/search/search-pass.js +8 -1
  6. package/package.json +1 -1
  7. package/resource/_schema/query-normalization.yaml +6 -0
  8. package/resource/index/manifest.json +1 -1
  9. package/resource/integration/chat/preset/android/integration.md +33 -29
  10. package/resource/integration/chat/preset/flutter/integration.md +93 -92
  11. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +1 -1
  12. package/resource/knowledge/chat/best-practice/common/web-sdk-log-level.md +76 -0
  13. package/resource/knowledge/chat/best-practice/miniprogram/desktop-wechat-miniprogram-error.md +79 -0
  14. package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +1 -1
  15. package/resource/knowledge/chat/preset/android-view/integration.md +37 -29
  16. package/resource/knowledge/push/config/android/fcm.md +2 -6
  17. package/resource/knowledge/push/integration/android.md +777 -425
  18. package/resource/knowledge/push/integration/donut.md +54 -71
  19. package/resource/knowledge/push/integration/flutter.md +194 -63
  20. package/resource/knowledge/push/integration/harmonyos.md +7 -2
  21. package/resource/knowledge/push/integration/ios.md +23 -93
  22. package/resource/knowledge/push/integration/react-native.md +2 -1
  23. package/resource/knowledge/push/integration/uni-app.md +28 -106
  24. package/resource/knowledge/push/integration/unity.md +2 -1
  25. package/resource/knowledge/push/integration/unreal-engine.md +2 -1
  26. package/resource/knowledge/roomkit/best-practice/vue/screen-share-auto-stop-on-leave.md +62 -0
  27. package/resource/knowledge/roomkit/core-sdk/react/network-proxy.md +84 -0
  28. package/resource/knowledge/roomkit/core-sdk/vue/network-proxy.md +84 -0
  29. package/resource/knowledge/roomkit/core-sdk/vue/recording.md +245 -0
  30. package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +196 -0
  31. package/resource/knowledge/roomkit/faq/error-code.md +103 -0
  32. package/resource/knowledge/roomkit/preset/harmonyos/integration.md +461 -0
  33. package/resource/knowledge/roomkit/preset/react/features/network-proxy.md +80 -0
  34. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +581 -0
  35. package/resource/knowledge/roomkit/preset/vue/features/ai-caption-translation.md +69 -0
  36. package/resource/knowledge/roomkit/preset/vue/features/ai-denoiser.md +67 -0
  37. package/resource/knowledge/roomkit/preset/vue/features/network-proxy.md +80 -0
  38. package/resource/knowledge/roomkit/preset/vue/features/recording.md +85 -0
  39. package/resource/knowledge/roomkit/preset/vue/features/whiteboard-annotation.md +86 -0
  40. package/server.js +1 -1
  41. package/tools/common/search_trtc_knowledge.js +2 -0
  42. package/utils/preflight-route.js +18 -6
  43. package/utils/report-cls-client.js +1 -1
  44. package/utils/report-es-client.js +1 -1
@@ -39,38 +39,42 @@ TUIKit Compose 提供了一套完整的即时通信 UI 组件,向下依赖 Ato
39
39
 
40
40
  ## 集成并引入组件
41
41
 
42
+ > **说明:**
43
+ > Demo:[CNB 完整 Demo(国内)](https://cnb.cool/tencent/cloud/trtc/TUIKit_Android_Compose) 或者 [GitHub 完整 Demo](https://github.com/Tencent-RTC/TUIKit_Android_Compose) 开箱即用,5 分钟跑通聊天 + 音视频通话全功能。
44
+ >
45
+
42
46
  ### 下载源码
43
- 1. 从 GitHub 下载 [TUIKit Compose](https://github.com/Tencent-RTC/TUIKit_android_compose) 源码:
44
47
 
45
- ``` bash
46
- git clone https://github.com/Tencent-RTC/TUIKit_Android_Compose.git
47
- ```
48
+ 从 CNB 下载 [TUIKit Compose](https://cnb.cool/tencent/cloud/trtc/TUIKit_Android_Compose) 源码或者 GitHub 下载 [TUIKit Compose](https://github.com/Tencent-RTC/TUIKit_Android_Compose) 源码:
49
+ ``` java
50
+ git clone https://cnb.cool/tencent/cloud/trtc/TUIKit_Android_Compose
51
+ // 或者 git clone https://github.com/Tencent-RTC/TUIKit_Android_Compose.git
52
+ ```
48
53
 
49
- 项目目录结构说明:
50
-
51
- ``` bash
52
- atomic-x/
53
- ├── src/main/
54
- │ ├── java/io/trtc/tuikit/atomicx/ # UI 组件源码(必需集成)
55
- │ ├── messagelist/ # 消息列表组件
56
- │ ├── messageinput/ # 消息输入组件
57
- │ ├── conversationlist/ # 会话列表组件
58
- │ ├── contactlist/ # 联系人列表组件
59
- │ ├── basecomponent/ # 基础组件
60
- │ └── ... # 其他 UI 组件
61
- │ # 资源文件(必需集成)
62
- │ ├── res/ # 公共资源
63
- │ ├── res-message-list/ # 消息列表组件资源
64
- │ ├── res-message-input/ # 消息输入组件资源
65
- │ ├── res-conversation-list/ # 会话列表组件资源
66
- │ └── ... # 其他组件资源
67
- chat/
68
- ├── uikit/src/main/java/io/trtc/tuikit/chat/pages # Page 组件(参考实现)
69
- │ ├── ChatPage.kt
70
- │ ├── ContactsPage.kt
71
- │ └── ConversationsPage.kt
72
- └── demo/ # 示例应用(可选参考)
73
- ```
54
+ 项目目录结构说明:
55
+ ``` bash
56
+ atomic-x/
57
+ ├── src/main/
58
+ │ ├── java/io/trtc/tuikit/atomicx/ # UI 组件源码(必需集成)
59
+ │ ├── messagelist/ # 消息列表组件
60
+ │ ├── messageinput/ # 消息输入组件
61
+ │ ├── conversationlist/ # 会话列表组件
62
+ │ ├── contactlist/ # 联系人列表组件
63
+ │ ├── basecomponent/ # 基础组件
64
+ │ └── ... # 其他 UI 组件
65
+ │ # 资源文件(必需集成)
66
+ │ ├── res/ # 公共资源
67
+ │ ├── res-message-list/ # 消息列表组件资源
68
+ │ ├── res-message-input/ # 消息输入组件资源
69
+ │ ├── res-conversation-list/ # 会话列表组件资源
70
+ │ └── ... # 其他组件资源
71
+ chat/
72
+ ├── uikit/src/main/java/io/trtc/tuikit/chat/pages # Page 组件(参考实现)
73
+ │ ├── ChatPage.kt
74
+ │ ├── ContactsPage.kt
75
+ │ └── ConversationsPage.kt
76
+ └── demo/ # 示例应用(可选参考)
77
+ ```
74
78
 
75
79
  ### 集成组件
76
80
 
@@ -49,14 +49,15 @@ TUIKit 提供了一套完整的即时通信 UI 组件,向下依赖 AtomicXCore
49
49
  ## 集成并引入组件
50
50
 
51
51
  > **说明:**
52
- > **Demo**:[GitHub 完整 Demo](https://github.com/Tencent-RTC/TUIKit_Flutter) 开箱即用,5 分钟跑通聊天 + 音视频通话全功能。
52
+ > **Demo**:[CNB 完整 Demo(国内)](https://cnb.cool/tencent/cloud/trtc/TUIKit_Flutter) 或者 [GitHub 完整 Demo](https://github.com/Tencent-RTC/TUIKit_Flutter) 开箱即用,5 分钟跑通聊天 + 音视频通话全功能。
53
53
  >
54
54
 
55
55
  ### 下载源码
56
56
 
57
- 1. 从 GitHub 下载 [TUIKit Flutter](https://github.com/Tencent-RTC/TUIKit_Flutter) 源码:
57
+ 从 CNB 下载 [TUIKit Flutter](https://cnb.cool/tencent/cloud/trtc/TUIKit_Flutter) 源码或者 GitHub 下载 [TUIKit Flutter](https://github.com/Tencent-RTC/TUIKit_Flutter) 源码:
58
58
  ``` xml
59
- git clone https://github.com/Tencent-RTC/TUIKit_Flutter.git
59
+ git clone https://cnb.cool/tencent/cloud/trtc/TUIKit_Flutter
60
+ // 或者 git clone https://github.com/Tencent-RTC/TUIKit_Flutter.git
60
61
  ```
61
62
 
62
63
  项目目录结构说明:
@@ -107,7 +108,7 @@ call/
107
108
 
108
109
  ### 配置项目
109
110
 
110
- #### iOS
111
+ 【iOS】
111
112
 
112
113
  在 iOS 端添加必要的权限配置。请打开 ios/Podfile ,在文件末尾新增如下权限代码:
113
114
  ``` objectivec
@@ -132,13 +133,13 @@ end
132
133
 
133
134
  ```
134
135
 
135
- #### Android
136
+ 【Android】
136
137
  - **清理 Gradle 全局配置:**如果您本地存在 `~/.gradle/init.gradle`,运行如下命令:
137
138
 
138
- ``` bash
139
- # 或者直接删除:rm -f ~/.gradle/init.gradle
140
- mv ~/.gradle/init.gradle ~/.gradle/init.gradle.backup
141
- ```
139
+ ``` bash
140
+ # 或者直接删除:rm -f ~/.gradle/init.gradle
141
+ mv ~/.gradle/init.gradle ~/.gradle/init.gradle.backup
142
+ ```
142
143
 
143
144
  > **说明:**
144
145
  >
@@ -147,101 +148,101 @@ end
147
148
 
148
149
  - **配置 JDK 17:**在项目例如 `chat/demo` 目录下的 `gradle.properties` 里增加一条 `org.gradle.java.home`,用来配置 JDK 17 路径,请替换成您实际的 JDK 17 的完整路径。参考如下:
149
150
 
150
- ``` bash
151
- # 请替换为您本地 JDK 17 的真实完整路径
152
- org.gradle.java.home=xx/Java/JavaVirtualMachines/jdk-17.0.6.jdk/Contents/Home
153
- ```
151
+ ``` bash
152
+ # 请替换为您本地 JDK 17 的真实完整路径
153
+ org.gradle.java.home=xx/Java/JavaVirtualMachines/jdk-17.0.6.jdk/Contents/Home
154
+ ```
154
155
 
155
- #### HarmonyOS
156
+ 【HarmonyOS】
156
157
  - 参考 [鸿蒙 Flutter 仓库文档](https://gitcode.com/CPF-Flutter/flutter_flutter/tree/oh-3.35.7-release) 的开发指南搭建环境。
157
158
 
158
159
  - 在您项目的 `pubspec.yaml` 文件中依赖重写(dependency_overrides)鸿蒙适配的第三方库,参考 `chat/demo/pubspec.yaml` 文件:
159
160
 
160
- ``` javascript
161
- dependency_overrides:
162
- # ... 已有的 override 保持不变 ...
163
- # HarmonyOS 专用(仅在使用 Flutter-OH 构建时启用,构建 Android/iOS 时请注释掉)
164
-
165
- path_provider:
166
- git:
167
- url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
168
- path: "packages/path_provider/path_provider"
169
- ref: "provider-v2.1.5-ohos-1.0.0"
170
- shared_preferences:
171
- git:
172
- url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
173
- path: "packages/shared_preferences/shared_preferences"
174
- ref: "shared_preferences-v2.5.4-ohos-1.0.0"
175
- url_launcher:
176
- git:
177
- url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
178
- path: "packages/url_launcher/url_launcher"
179
- ref: "url_launcher_v6.3.2-ohos-1.0.0"
161
+ ``` javascript
162
+ dependency_overrides:
163
+ # ... 已有的 override 保持不变 ...
164
+ # HarmonyOS 专用(仅在使用 Flutter-OH 构建时启用,构建 Android/iOS 时请注释掉)
165
+
166
+ path_provider:
167
+ git:
168
+ url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
169
+ path: "packages/path_provider/path_provider"
170
+ ref: "provider-v2.1.5-ohos-1.0.0"
171
+ shared_preferences:
172
+ git:
173
+ url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
174
+ path: "packages/shared_preferences/shared_preferences"
175
+ ref: "shared_preferences-v2.5.4-ohos-1.0.0"
176
+ url_launcher:
177
+ git:
178
+ url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
179
+ path: "packages/url_launcher/url_launcher"
180
+ ref: "url_launcher_v6.3.2-ohos-1.0.0"
180
181
 
181
- ```
182
+ ```
182
183
  - 声明 HarmonyOS 权限,参考 `chat/demo/ohos/entry/src/main/module.json5` 在 `requestPermissions` 数组中加入所需权限。
183
184
 
184
- ``` java
185
- {
186
- "module": {
187
- "requestPermissions": [
188
- // ===== system_grant(声明即得) =====
189
- { "name": "ohos.permission.INTERNET" },
190
- { "name": "ohos.permission.GET_NETWORK_INFO" },
191
- { "name": "ohos.permission.VIBRATE" },
192
- // ===== user_grant(需运行时申请,必须提供 reason 和 usedScene) =====
193
- {
194
- "name": "ohos.permission.CAMERA",
195
- "reason": "$string:permission_reason_camera",
196
- "usedScene": {
197
- "abilities": [ "EntryAbility" ],
198
- "when": "inuse"
199
- }
200
- },
201
- {
202
- "name": "ohos.permission.MICROPHONE",
203
- "reason": "$string:permission_reason_microphone",
204
- "usedScene": {
205
- "abilities": [ "EntryAbility" ],
206
- "when": "inuse"
207
- }
208
- },
209
- {
210
- "name": "ohos.permission.WRITE_IMAGEVIDEO",
211
- "reason": "$string:permission_reason_write_media",
212
- "usedScene": {
213
- "abilities": [ "EntryAbility" ],
214
- "when": "inuse"
215
- }
216
- },
217
- {
218
- "name": "ohos.permission.READ_PASTEBOARD",
219
- "reason": "$string:permission_reason_read_pasteboard",
220
- "usedScene": {
221
- "abilities": [ "EntryAbility" ],
222
- "when": "inuse"
223
- }
224
- }
225
- ]
226
- }
227
- }
185
+ ``` java
186
+ {
187
+ "module": {
188
+ "requestPermissions": [
189
+ // ===== system_grant(声明即得) =====
190
+ { "name": "ohos.permission.INTERNET" },
191
+ { "name": "ohos.permission.GET_NETWORK_INFO" },
192
+ { "name": "ohos.permission.VIBRATE" },
193
+ // ===== user_grant(需运行时申请,必须提供 reason 和 usedScene) =====
194
+ {
195
+ "name": "ohos.permission.CAMERA",
196
+ "reason": "$string:permission_reason_camera",
197
+ "usedScene": {
198
+ "abilities": [ "EntryAbility" ],
199
+ "when": "inuse"
200
+ }
201
+ },
202
+ {
203
+ "name": "ohos.permission.MICROPHONE",
204
+ "reason": "$string:permission_reason_microphone",
205
+ "usedScene": {
206
+ "abilities": [ "EntryAbility" ],
207
+ "when": "inuse"
208
+ }
209
+ },
210
+ {
211
+ "name": "ohos.permission.WRITE_IMAGEVIDEO",
212
+ "reason": "$string:permission_reason_write_media",
213
+ "usedScene": {
214
+ "abilities": [ "EntryAbility" ],
215
+ "when": "inuse"
216
+ }
217
+ },
218
+ {
219
+ "name": "ohos.permission.READ_PASTEBOARD",
220
+ "reason": "$string:permission_reason_read_pasteboard",
221
+ "usedScene": {
222
+ "abilities": [ "EntryAbility" ],
223
+ "when": "inuse"
224
+ }
225
+ }
226
+ ]
227
+ }
228
+ }
228
229
 
229
- ```
230
+ ```
230
231
  - 在项目根目录 `ohos/build-profile.json5` 里启用 `useNormalizedOHMUrl`,否则会报“Bytecode HARs not supported when useNormalizedOHMUrl is not true”的错误。
231
232
 
232
- ``` java
233
- {
234
- "app": {
235
- "products": [{
236
- "name": "default",
237
- "buildOption": {
238
- "arkOptions": { "useNormalizedOHMUrl": true }
239
- }
240
- }]
241
- }
242
- }
233
+ ``` java
234
+ {
235
+ "app": {
236
+ "products": [{
237
+ "name": "default",
238
+ "buildOption": {
239
+ "arkOptions": { "useNormalizedOHMUrl": true }
240
+ }
241
+ }]
242
+ }
243
+ }
243
244
 
244
- ```
245
+ ```
245
246
 
246
247
  ## 接入步骤
247
248
 
@@ -1,4 +1,4 @@
1
- 本文档将指导您如何基于 [TIMPush](https://cloud.tencent.com/document/product/269/133003) 服务实现 VoIP 推送功能,适用于使用 AtomicXCore 进行无 UI 集成的场景。
1
+ 本文档将指导您如何基于 TIMPush 服务实现 VoIP 推送功能,适用于使用 AtomicXCore 进行无 UI 集成的场景。
2
2
 
3
3
  > **注意:**
4
4
  > - 使用 **VoIP** 推送功能首先需要 开通 TIMPush 服务。
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Web Chat SDK 关闭/调整浏览器本地日志输出(setLogLevel)
3
+ product: chat
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [setLogLevel, 日志, 日志级别, 关闭日志, 本地日志, 浏览器日志, 控制台日志, release, 生产环境, create, 初始化日志]
7
+ version_range: ">=3.0.0"
8
+ ---
9
+
10
+ # Web Chat SDK 关闭/调整浏览器本地日志输出(setLogLevel)
11
+
12
+ ## 1. 核心结论
13
+
14
+ - 通过 `chat.setLogLevel(level)` 控制 SDK 本地日志输出级别,将 `level` 设为 `4` 即可关闭 SDK 的全部日志打印。
15
+ - `setLogLevel` 需在 `create` 创建 `chat` 实例之后调用。
16
+ - `setLogLevel` 只对调用成功**之后**的日志生效;调用之前已输出的初始化日志无法关闭,这是预期的设计行为。
17
+ - 生产环境建议将级别设为 `1`(release),仅输出关键信息,而非直接设为 `4` 关闭全部日志,以保留必要的问题排查线索。
18
+
19
+ ## 2. 字段语义对照
20
+
21
+ | 字段/能力 | 作用 | 说明 |
22
+ |---|---|---|
23
+ | `chat.setLogLevel(level)` | 设置本地日志级别 | 需在 `create` 创建实例后调用 |
24
+ | `level = 0` | 普通级别 | 日志量较多,接入调试阶段建议使用 |
25
+ | `level = 1` | release 级别 | 仅输出关键信息,生产环境建议使用 |
26
+ | `level = 2` | 告警级别 | 仅输出告警与错误级别日志 |
27
+ | `level = 3` | 错误级别 | 仅输出错误级别日志 |
28
+ | `level = 4` | 无日志级别 | 不打印任何日志(完全关闭) |
29
+
30
+ ## 3. 机制/时序
31
+
32
+ `create` 创建 `chat` 实例 -> SDK 输出初始化日志(此阶段日志不受 `setLogLevel` 控制) -> 调用 `chat.setLogLevel(level)` -> 从调用成功之后开始,按设定级别过滤日志输出。
33
+
34
+ ## 4. 标准用法
35
+
36
+ 1. 调用 `create` 创建 `chat` 实例。
37
+ 2. 紧接着调用 `chat.setLogLevel(level)`,传入目标级别(关闭全部日志传 `4`,生产环境保留关键信息传 `1`)。
38
+ 3. 如需在不同环境使用不同级别,按环境变量在初始化后设置对应 `level`。
39
+
40
+ ``` javascript
41
+ // 创建实例后立即设置日志级别
42
+ const chat = TencentCloudChat.create({ SDKAppID });
43
+
44
+ // 关闭 SDK 全部本地日志
45
+ chat.setLogLevel(4);
46
+
47
+ // 或:生产环境仅保留关键信息
48
+ // chat.setLogLevel(1);
49
+ ```
50
+
51
+ ## 5. 结果判定
52
+
53
+ - 设置 `level = 4` 后,`setLogLevel` 调用成功之后的浏览器控制台不再出现 SDK 日志。
54
+ - 设置 `level = 1` 后,仅输出关键信息,告警/普通日志被过滤。
55
+ - `create` 到 `setLogLevel` 之间的初始化日志仍会出现,属预期行为。
56
+
57
+ ## 6. 常见误区
58
+
59
+ - 误区 1:认为 `setLogLevel(4)` 能连初始化日志一起清掉(调用前的初始化日志无法关闭)。
60
+ - 误区 2:在 `create` 之前调用 `setLogLevel`(必须在创建实例之后调用才生效)。
61
+ - 误区 3:生产环境直接设为 `4` 关闭全部日志,导致线上问题无日志可查(建议用 `1` 保留关键信息)。
62
+
63
+ ## 7. 问题定义(检索辅助,极简)
64
+
65
+ Web/小程序 Chat SDK 如何关闭或调整浏览器本地(控制台)日志输出。
66
+
67
+ ## 8. 同义问法覆盖(检索召回,极简)
68
+
69
+ - web im sdk 怎么关闭浏览器本地日志?
70
+ - chat.setLogLevel 各个级别是什么含义?
71
+ - 生产环境 IM SDK 日志级别怎么设置?
72
+ - 为什么设置了 setLogLevel 还有初始化日志?
73
+
74
+ ## 9. 参考来源(可选)
75
+
76
+ - Web Chat SDK setLogLevel 接口说明:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/SDK.html#setLogLevel`
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: 桌面版微信小程序运行 IM SDK 报错(tencent_cloud_im_csig_flutter_for_web_25F_cy is uniefined / WebSocket is not a constructor)与升级修复
3
+ product: chat
4
+ frameworks: [miniprogram]
5
+ scope: platform_specific
6
+ tags: [桌面版微信, mac微信4.x, windows微信3.9.x, uniapp小程序, 微信原生小程序, WebSocket is not a constructor, tencent_cloud_im_csig, cannot read properties of undefined, tim-wx-sdk, "@tencentcloud/chat", "@tencentcloud/lite-chat", v2, v3, v4, 版本升级, 兼容性]
7
+ version_range: ">=3.5.7"
8
+ ---
9
+
10
+ # 桌面版微信小程序运行 IM SDK 报错(csig undefined / WebSocket is not a constructor)与升级修复
11
+
12
+ ## 1. 核心结论
13
+
14
+ - 该问题的根因是桌面版微信(mac 4.x / windows 3.9.x)小程序底层 API 属性变更,导致 IM SDK 运行时环境识别异常。
15
+ - 两种报错是同一根因的不同表现:uniapp 打包的微信小程序报 `cannot read properties of undefined (reading 'tencent_cloud_im_csig_flutter_for_web_25F_cy')`;微信原生小程序报 `TypeError: WebSocket is not a constructor`。
16
+ - 该问题在 IM SDK v3(`3.5.7`)与 v4(`4.2.4`)中均已做兼容性处理,升级到对应大版本的最新版本即可修复。
17
+ - v2/v3/v4 接口向下兼容、可平滑迁移,但 v3、v4 各自存在 breaking change,升级前需评估对业务无风险后再执行。
18
+
19
+ ## 2. 字段语义对照
20
+
21
+ | 字段/能力 | 作用 | 说明 |
22
+ |---|---|---|
23
+ | `tim-wx-sdk` | v2 版本包名 | 旧版本,推荐升级到 v4 最新版本 |
24
+ | `@tencentcloud/chat` | v3 版本包名 | 已修复该问题(`>=3.5.7`);v3 不再迭代新功能 |
25
+ | `@tencentcloud/lite-chat` | v4 版本包名 | 已修复该问题(`>=4.2.4`);推荐版本 |
26
+ | `tencent_cloud_im_csig...` 属性缺失 | uniapp 小程序报错信号 | 桌面版微信底层 API 属性变更导致 undefined |
27
+ | `WebSocket is not a constructor` | 原生小程序报错信号 | 桌面版微信运行环境识别异常,构造函数不可用 |
28
+
29
+ ## 3. 机制/时序
30
+
31
+ 桌面版微信升级(mac 4.x / windows 3.9.x) -> 小程序底层 API 属性发生变更 -> IM SDK 运行时环境识别异常 -> uniapp 打包小程序读取 `tencent_cloud_im_csig...` 属性时命中 undefined(报 `cannot read properties of undefined`)或原生小程序 `WebSocket` 构造异常(报 `WebSocket is not a constructor`) -> 升级到已做兼容处理的 v3(`>=3.5.7`)或 v4(`>=4.2.4`)后,SDK 正确识别桌面版微信运行环境,报错消失。
32
+
33
+ ## 4. 标准用法
34
+
35
+ 1. 确认当前使用的 IM SDK 版本与包名:v2(`tim-wx-sdk`)/ v3(`@tencentcloud/chat`)/ v4(`@tencentcloud/lite-chat`)。
36
+ 2. 按当前版本选择升级目标:
37
+ - 当前 v4(`@tencentcloud/lite-chat`):升级到 v4 最新版本。
38
+ - 当前 v3(`@tencentcloud/chat`):升级到 v3 最新版本(v3 不再迭代新功能),或升级到 v4 最新版本。
39
+ - 当前 v2(`tim-wx-sdk`):升级到 v4 最新版本。
40
+ 3. 升级前阅读对应迁移指南,评估 breaking change 对业务的影响:
41
+ - v3 重大变更:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-07-breakingchanges.html`
42
+ - v2 升 v3 说明:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-05-integration.html`
43
+ - v4 重大变更:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-04-comparison-v4.html`
44
+ - v3 升 v4 说明:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-03-integration-v4.html`
45
+ 4. 完成升级并回归验证:在桌面版微信(mac 4.x / windows 3.9.x)上重新运行 uniapp 小程序与微信原生小程序,确认不再报错。
46
+
47
+ ## 5. 结果判定
48
+
49
+ - 升级到 v3(`>=3.5.7`)或 v4(`>=4.2.4`)后,桌面版微信下 uniapp 小程序不再报 `cannot read properties of undefined (reading 'tencent_cloud_im_csig...')`。
50
+ - 微信原生小程序不再报 `TypeError: WebSocket is not a constructor`。
51
+ - IM SDK 在桌面版微信运行环境下可正常初始化并建立连接。
52
+
53
+ ## 6. 常见误区
54
+
55
+ - 误区 1:认为是 uniapp 打包配置或业务代码 bug(实际是桌面版微信底层 API 属性变更导致的 SDK 环境识别异常)。
56
+ - 误区 2:只在手机端微信验证通过就认为无问题(该问题仅在桌面版微信 mac 4.x / windows 3.9.x 出现)。
57
+ - 误区 3:直接跨版本升级而不看 breaking change(v3、v4 各有 breaking change,需先评估业务影响)。
58
+ - 误区 4:混淆包名(v3 是 `@tencentcloud/chat`,v4 是 `@tencentcloud/lite-chat`,v2 是 `tim-wx-sdk`)。
59
+
60
+ ## 7. 问题定义(检索辅助,极简)
61
+
62
+ uniapp 打包微信小程序或微信原生小程序在桌面版微信(mac 4.x / windows 3.9.x)运行 IM SDK 时,报 csig 属性 undefined 或 `WebSocket is not a constructor`。
63
+
64
+ ## 8. 同义问法覆盖(检索召回,极简)
65
+
66
+ - 桌面版微信小程序 IM SDK 报 WebSocket is not a constructor 怎么办?
67
+ - uniapp 小程序在 mac/windows 微信报 tencent_cloud_im_csig undefined?
68
+ - Windows 3.9 / Mac 4.x 微信运行小程序 IM 初始化失败?
69
+ - IM SDK 需要升级到哪个版本修复桌面版微信兼容问题?
70
+ - PC 微信小程序的 AppService 逻辑层没有原生 WebSocket 构造函数怎么解决?
71
+ - PC 端 tim-im app-service.js 报 WebSocket is not a constructor?
72
+ - 小程序逻辑层没有原生 WebSocket 构造函数 / WebSocket 构造函数不可用?
73
+
74
+ ## 9. 参考来源(可选)
75
+
76
+ - v3 重大变更:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-07-breakingchanges.html`
77
+ - v2 升 v3 说明:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-05-integration.html`
78
+ - v4 重大变更:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-04-comparison-v4.html`
79
+ - v3 升 v4 说明:`https://web.sdk.qcloud.com/im/doc/v3/zh-cn/tutorial-03-integration-v4.html`
@@ -3,7 +3,7 @@ title: 小程序集成 IM SDK 登录超时 2801 排查与修复
3
3
  product: chat
4
4
  frameworks: [miniprogram]
5
5
  scope: platform_specific
6
- tags: [login, timeout, 2801, websocket, 域名白名单, 调试模式, ipv6]
6
+ tags: [login, timeout, 2801, 小程序域名白名单, 调试模式]
7
7
  version_range: ">=3.0.0"
8
8
  ---
9
9
 
@@ -28,26 +28,40 @@ TUIKit 采用数据驱动的响应式架构与原生 Android View 体系(非 C
28
28
  > 我们建议您根据上述指南,选择与项目要求完全匹配的版本组合。
29
29
  >
30
30
 
31
- ### 集成步骤
32
- 1. 从 GitHub 仓库 [Tencent-RTC/TUIKit_Android](https://github.com/Tencent-RTC/TUIKit_Android) 下载源码,将仓库根目录下的 `chat`、`atomic_x`(以及可选的、用于音视频通话的 `call`)文件夹整体复制到您的工程根目录下。复制完成后的目录结构如下:
33
-
34
- ``` text
35
- YourApplication/
36
- ├── app/ # 您的应用模块
37
- ├── atomic_x/ # 基础 UI 组件库(必要)
38
- ├── call/ # 音视频通话组件(可选)
39
- │ └── tuicallkit-kt/
40
- ├── chat/ # Chat 源码
41
- │ ├── demo/ # 示例工程(可参考,非必需)
42
- │ └── uikit/ # Chat UIKit 组件库(必要)
43
- ├── settings.gradle.kts
44
- └── build.gradle.kts
45
- ```
46
-
47
- > **说明:**TUIKit_Android 是包含多个产品的开源仓库,Chat 的 UI 源码位于 `chat/` 目录下(`chat/uikit` 为 UIKit 组件库,`chat/demo` 为示例工程),其依赖的基础组件 `atomic_x` 与音视频通话组件 `call/tuicallkit-kt` 位于仓库根目录。模块目录可放在工程任意位置,只需在 `settings.gradle.kts` 中设置正确的相对路径即可。
48
- >
49
-
50
- 2. 在 `settings.gradle.kts` 中引入对应模块(请按源码实际存放位置调整相对路径):
31
+ ### 集成并引入组件
32
+
33
+ > **说明:**
34
+ > Demo:[CNB 完整 Demo(国内)](https://cnb.cool/tencent/cloud/trtc/TUIKit_Android) 或者 [GitHub 完整 Demo](https://github.com/Tencent-RTC/TUIKit_Android) 开箱即用,5 分钟跑通聊天 + 音视频通话全功能。
35
+ >
36
+
37
+ ### 下载源码
38
+
39
+ 从 CNB 下载 [TUIKit Android](https://cnb.cool/tencent/cloud/trtc/TUIKit_Android) 源码或者 GitHub 下载 [TUIKit Android](https://github.com/Tencent-RTC/TUIKit_Android) 源码:
40
+ ``` java
41
+ git clone https://cnb.cool/tencent/cloud/trtc/TUIKit_Android
42
+ // 或者 git clone https://github.com/Tencent-RTC/TUIKit_Android.git
43
+ ```
44
+
45
+ 将仓库根目录下的 `chat`、`atomic_x`(以及可选的、用于音视频通话的 `call`)文件夹整体复制到您的工程根目录下。复制完成后的目录结构如下:
46
+ ``` text
47
+ YourApplication/
48
+ ├── app/ # 您的应用模块
49
+ ├── atomic_x/ # 基础 UI 组件库(必要)
50
+ ├── call/ # 音视频通话组件(可选)
51
+ │ └── tuicallkit-kt/
52
+ ├── chat/ # Chat 源码
53
+ │ ├── demo/ # 示例工程(可参考,非必需)
54
+ │ └── uikit/ # Chat UIKit 组件库(必要)
55
+ ├── settings.gradle.kts
56
+ └── build.gradle.kts
57
+ ```
58
+
59
+ > **说明:**
60
+ > TUIKit_Android 是包含多个产品的开源仓库,Chat 的 UI 源码位于 `chat/` 目录下(`chat/uikit` 为 UIKit 组件库,`chat/demo` 为示例工程),其依赖的基础组件 `atomic_x` 与音视频通话组件 `call/tuicallkit-kt` 位于仓库根目录。模块目录可放在工程任意位置,只需在 `settings.gradle.kts` 中设置正确的相对路径即可。
61
+ >
62
+
63
+ ### 集成组件
64
+ 1. 在 `settings.gradle.kts` 中引入对应模块(请按源码实际存放位置调整相对路径):
51
65
 
52
66
  【Kotlin DSL】
53
67
  ``` kotlin
@@ -83,7 +97,7 @@ include ':tuicallkit-kt'
83
97
  project(':tuicallkit-kt').projectDir = new File(settingsDir, 'call/tuicallkit-kt')
84
98
  ```
85
99
 
86
- 3. 在 app 模块的 `build.gradle.kts` 中添加依赖:
100
+ 2. 在 app 模块的 `build.gradle.kts` 中添加依赖:
87
101
 
88
102
  【Kotlin DSL】
89
103
  ``` kotlin
@@ -187,8 +201,6 @@ import io.trtc.tuikit.chat.uikit.pages.ChatPageView
187
201
  class ChatActivity : AppCompatActivity() {
188
202
 
189
203
  override fun onCreate(savedInstanceState: Bundle?) {
190
- // 必须设置 Material Components 主题,否则 ChatPageView 运行时会 Crash
191
- setTheme(com.google.android.material.R.style.Theme_MaterialComponents_Light_NoActionBar)
192
204
  super.onCreate(savedInstanceState)
193
205
 
194
206
  // conversationID 格式:单聊 "c2c_<对方 UserID>",群聊 "group_<群 GroupID>"
@@ -209,11 +221,8 @@ class ChatActivity : AppCompatActivity() {
209
221
  }
210
222
  ```
211
223
 
212
- > **注意:**
213
- > 承载聊天页的 Activity **必须**设置 Material Components 主题(如 `setTheme(com.google.android.material.R.style.Theme_MaterialComponents_Light_NoActionBar)`),否则 `ChatPageView` 内部使用的 Material 控件会因缺少对应主题属性,在运行时直接 Crash。
214
- >
215
-
216
- > **说明:**示例工程(demo)中提供了基于 `ChatPageView` 封装好的聊天页 `ChatActivity`(带标题栏、未读角标、群事件处理等),可直接复用或参考其实现进行自定义:`ChatActivity.start(context, conversationID)`。
224
+ > **说明:**
225
+ > 示例工程(demo)中提供了基于 `ChatPageView` 封装好的聊天页 `ChatActivity`(带标题栏、未读角标、群事件处理等),可直接复用或参考其实现进行自定义:`ChatActivity.start(context, conversationID)`。
217
226
  >
218
227
 
219
228
  #### 步骤5:构建联系人界面
@@ -283,7 +292,6 @@ TUICallEngine.createInstance(context).init(
283
292
 
284
293
  若需同时集成智能客服 Desk 用户端,请先 [开通智能客服 Desk 服务](https://cloud.tencent.com/document/product/269/96059),并根据 [Android 接入智能客服用户端](https://cloud.tencent.com/document/product/269/110809) 文档完成 `com.tencentcloud.desk:aideskcustomer` 包引入和配置,即可在您的应用中引入客服会话能力。
285
294
  ``` java
286
-
287
295
  int SDKAppID = 0; // 开通了智能客服 Desk 的应用 ID
288
296
  String userID = "";
289
297
  String userSig = "";
@@ -59,17 +59,13 @@
59
59
 
60
60
  ### 确认 FCM API V1 状态
61
61
 
62
- 在 Firebase 控制台**项目设置 > Cloud Messaging** 中,确认 **Firebase Cloud Messaging API (V1)**已启用。新接入场景请使用 HTTP v1 API 和服务账号私钥进行 FCM 鉴权。
63
-
64
- > **注意:**
65
- > FCM 旧版 Server Key(HTTP/XMPP)已被弃用。TIMPush 的 Google FCM 通道应使用 HTTP v1 API 和服务账号私钥,请勿混用旧版 Server Key 凭据。
66
- >
62
+ 在 Firebase 控制台**项目设置 > 云消息传递**中,确认 **Firebase Cloud Messaging API (V1)** 已启用。FCM 旧版 Server Key(HTTP/XMPP)已被弃用,TIMPush 的 Google FCM 通道应使用 HTTP v1 API 和服务账号私钥,请勿混用旧版 Server Key 凭据。
67
63
 
68
64
  ## 腾讯云控制台配置
69
65
 
70
66
  ### 添加 Google FCM 厂商证书
71
67
 
72
- 登录腾讯云 [即时通信 IM 控制台](https://console.qcloud.com/avc),在**推送服务 Push** > **推送设置** > **厂商配置**中添加 Google FCM 厂商证书,并按控制台要求上传或填写服务账号私钥相关配置。
68
+ 登录腾讯云 [即时通信 IM 控制台](https://console.qcloud.com/avc),在**推送服务 Push** > **推送设置** > **厂商配置**中添加 Google FCM 厂商证书。
73
69
 
74
70
  ### 选择 FCM 消息类型
75
71