@tencentcloud/sdk-mcp 1.7.2 → 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.
- package/CHANGELOG.md +13 -0
- package/README.md +13 -5
- package/knowledge/bm25.js +20 -11
- package/knowledge/search/generic-rerank.js +123 -0
- package/knowledge/search/search-pass.js +8 -1
- package/package.json +1 -1
- package/resource/_schema/query-normalization.yaml +6 -0
- package/resource/index/manifest.json +1 -1
- package/resource/integration/chat/preset/android/integration.md +33 -29
- package/resource/integration/chat/preset/flutter/integration.md +93 -92
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +1 -1
- package/resource/knowledge/chat/best-practice/common/web-sdk-log-level.md +76 -0
- package/resource/knowledge/chat/best-practice/miniprogram/desktop-wechat-miniprogram-error.md +79 -0
- package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +1 -1
- package/resource/knowledge/chat/preset/android-view/integration.md +37 -29
- package/resource/knowledge/push/config/android/fcm.md +2 -6
- package/resource/knowledge/push/integration/android.md +777 -425
- package/resource/knowledge/push/integration/donut.md +54 -71
- package/resource/knowledge/push/integration/flutter.md +194 -63
- package/resource/knowledge/push/integration/harmonyos.md +7 -2
- package/resource/knowledge/push/integration/ios.md +23 -93
- package/resource/knowledge/push/integration/react-native.md +2 -1
- package/resource/knowledge/push/integration/uni-app.md +28 -106
- package/resource/knowledge/push/integration/unity.md +2 -1
- package/resource/knowledge/push/integration/unreal-engine.md +2 -1
- package/resource/knowledge/roomkit/best-practice/vue/screen-share-auto-stop-on-leave.md +62 -0
- package/resource/knowledge/roomkit/core-sdk/react/network-proxy.md +84 -0
- package/resource/knowledge/roomkit/core-sdk/vue/network-proxy.md +84 -0
- package/resource/knowledge/roomkit/core-sdk/vue/recording.md +245 -0
- package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +196 -0
- package/resource/knowledge/roomkit/faq/error-code.md +103 -0
- package/resource/knowledge/roomkit/preset/harmonyos/integration.md +461 -0
- package/resource/knowledge/roomkit/preset/react/features/network-proxy.md +80 -0
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +581 -0
- package/resource/knowledge/roomkit/preset/vue/features/ai-caption-translation.md +69 -0
- package/resource/knowledge/roomkit/preset/vue/features/ai-denoiser.md +67 -0
- package/resource/knowledge/roomkit/preset/vue/features/network-proxy.md +80 -0
- package/resource/knowledge/roomkit/preset/vue/features/recording.md +85 -0
- package/resource/knowledge/roomkit/preset/vue/features/whiteboard-annotation.md +86 -0
- package/server.js +1 -1
- package/utils/preflight-route.js +18 -6
- package/utils/report-cls-client.js +1 -1
- 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
|
-
|
|
46
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
├──
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
├──
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
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://
|
|
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
|
-
|
|
111
|
+
【iOS】
|
|
111
112
|
|
|
112
113
|
在 iOS 端添加必要的权限配置。请打开 ios/Podfile ,在文件末尾新增如下权限代码:
|
|
113
114
|
``` objectivec
|
|
@@ -132,13 +133,13 @@ end
|
|
|
132
133
|
|
|
133
134
|
```
|
|
134
135
|
|
|
135
|
-
|
|
136
|
+
【Android】
|
|
136
137
|
- **清理 Gradle 全局配置:**如果您本地存在 `~/.gradle/init.gradle`,运行如下命令:
|
|
137
138
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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
|
|
|
@@ -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`
|
|
@@ -28,26 +28,40 @@ TUIKit 采用数据驱动的响应式架构与原生 Android View 体系(非 C
|
|
|
28
28
|
> 我们建议您根据上述指南,选择与项目要求完全匹配的版本组合。
|
|
29
29
|
>
|
|
30
30
|
|
|
31
|
-
###
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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
|
-
>
|
|
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 控制台**项目设置 >
|
|
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
|
|