@tencent-rtc/mcp 1.7.2 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +25 -17
  3. package/knowledge/bm25.js +20 -11
  4. package/knowledge/path-meta.js +23 -1
  5. package/knowledge/search/generic-rerank.js +123 -0
  6. package/knowledge/search/search-pass.js +8 -1
  7. package/package.json +1 -1
  8. package/resource/index/manifest.json +1 -1
  9. package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +497 -0
  10. package/resource/knowledge/callkit/best-practice/flutter/android-keep-call-alive-background.md +79 -0
  11. package/resource/knowledge/callkit/best-practice/flutter/background-incoming-call-no-notification.md +99 -0
  12. package/resource/knowledge/callkit/best-practice/flutter/ios-keep-call-alive-background.md +93 -0
  13. package/resource/knowledge/callkit/best-practice/flutter/ios-startup-crash-version-voip.md +68 -0
  14. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +386 -0
  15. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +315 -0
  16. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +204 -0
  17. package/resource/knowledge/callkit/preset/harmonyos/api.md +362 -0
  18. package/resource/knowledge/callkit/preset/harmonyos/integration.md +318 -0
  19. package/resource/knowledge/callkit/preset/miniprogram/api-uniapp.md +430 -0
  20. package/resource/knowledge/callkit/preset/miniprogram/api.md +293 -0
  21. package/resource/knowledge/callkit/preset/miniprogram/integration.md +294 -0
  22. package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +224 -0
  23. package/resource/knowledge/callkit/preset/uni-app/api.md +339 -0
  24. package/resource/knowledge/callkit/preset/uni-app/integration.md +243 -0
  25. package/resource/knowledge/chat/best-practice/common/web-sdk-log-level.md +76 -0
  26. package/resource/knowledge/chat/best-practice/miniprogram/desktop-wechat-miniprogram-error.md +79 -0
  27. package/resource/knowledge/chat/preset/react/h5/integration.md +964 -0
  28. package/resource/knowledge/chat/preset/vue/h5/integration.md +717 -0
  29. package/resource/knowledge/roomkit/best-practice/vue/screen-share-auto-stop-on-leave.md +62 -0
  30. package/resource/knowledge/roomkit/core-sdk/react/network-proxy.md +83 -0
  31. package/resource/knowledge/roomkit/core-sdk/vue/network-proxy.md +83 -0
  32. package/resource/knowledge/roomkit/core-sdk/vue/recording.md +245 -0
  33. package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +196 -0
  34. package/resource/knowledge/roomkit/faq/error-code.md +103 -0
  35. package/resource/knowledge/roomkit/preset/harmonyos/integration.md +461 -0
  36. package/resource/knowledge/roomkit/preset/react/features/network-proxy.md +79 -0
  37. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +580 -0
  38. package/resource/knowledge/roomkit/preset/vue/features/ai-caption-translation.md +69 -0
  39. package/resource/knowledge/roomkit/preset/vue/features/ai-denoiser.md +67 -0
  40. package/resource/knowledge/roomkit/preset/vue/features/network-proxy.md +79 -0
  41. package/resource/knowledge/roomkit/preset/vue/features/recording.md +85 -0
  42. package/resource/knowledge/roomkit/preset/vue/features/whiteboard-annotation.md +86 -0
  43. package/resource/knowledge/rtcengine/web/plugin/23-advanced-support-detection.md +6 -6
  44. package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +8 -6
  45. package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +30 -10
  46. package/server.js +1 -1
  47. package/utils/preflight-route.js +18 -6
  48. package/utils/report-cls-client.js +1 -1
  49. package/utils/report-es-client.js +1 -1
@@ -0,0 +1,243 @@
1
+ This guide walks you through quickly integrating the TUICallKit component into a uni-app project and running on **Android** and **iOS** platforms. You can complete the following key steps in about 10 minutes and get a fully functional audio/video calling interface.
2
+
3
+ ## Prerequisites
4
+
5
+ ### Development Environment Requirements
6
+ - It is recommended to use **HBuilderX 4.31** or later for development.
7
+ - iOS: iOS 13.0 or later.
8
+ - Android: Android 5.0 (SDK API Level 21) or later.
9
+ - The mini program dev tool does not support native components (i.e., `<live-pusher>` and `<live-player>` tags). You need to run and test on a **real device**.
10
+ - For running on a real device, first install the [uni-app native runtime app](https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey.html#%E7%AC%AC%E4%B8%80%E6%AD%A5-%E7%94%B3%E8%AF%B7appkey) base, or make a custom base.
11
+
12
+ ### Activate the Service
13
+ Before using Tencent Cloud audio/video services, you need to go to the console to activate the service for your application. For detailed steps, see [Activate Service](https://cloud.tencent.com/document/product/1640/81130). After activation, note down the `SDKAppID` and `SDKSecretKey` — you will need them in the subsequent login step.
14
+
15
+ ## TUICallKit Source Code Integration
16
+
17
+ ### Step 1: Create a uni-app Project
18
+
19
+ Create a uni-app project in HBuilderX.
20
+ 1. Open HBuilderX editor.
21
+ 2. Create a project via **File** > **New** > **Project**. Set the project name, select the default template, and click Create.
22
+
23
+ ### Step 2: Download and Import the TUICallKit Component
24
+ 1. Download the `TUICallKit` component to your local project directory.
25
+
26
+ ``` bash
27
+ npm i @tencentcloud/call-uikit-uniapp
28
+ ```
29
+
30
+ > **Note:**
31
+ >
32
+ > Run the npm command in the root directory of your uni-app project.
33
+ >
34
+
35
+ 2. Copy the `TUICallKit` folder (from `node_modules/@tencentcloud/call-uikit-uniapp/`) to your project root directory.
36
+
37
+ ### Step 3: Import Required Native Plugins
38
+
39
+ To use TUICallKit on Android and iOS platforms, you need to import the required native plugins.
40
+
41
+ 1. In [DCloud Plugin Market](https://ext.dcloud.net.cn/), search for and purchase the following native plugins:
42
+ - [Tencent Cloud Native Chat Plugin](https://ext.dcloud.net.cn/plugin?id=7571)
43
+ - [Tencent Cloud Native Audio/Video Call Plugin](https://ext.dcloud.net.cn/plugin?id=7096)
44
+
45
+ 2. After purchase, go to the HBuilderX project, click **manifest.json** > **App Native Plugin Configuration** > **Cloud Plugin** > **Select Cloud Plugin**, and select the two plugins purchased above.
46
+
47
+ > **Note:**
48
+ >
49
+ > After purchasing native plugins, you must make a **custom debug base** to use the native plugin capabilities. The standard base does not include special native plugins.
50
+ >
51
+
52
+ ### Step 4: Fill in SDKAPPID and SECRETKEY
53
+
54
+ Modify the `SDKAPPID` and `SECRETKEY` in the `TUICallKit/debug/GenerateTestUserSig-es.js` file.
55
+
56
+ ### Step 5: Use the TUICallKit Component
57
+
58
+ 1. Modify the `pages.json` file to set the page to full-screen mode.
59
+
60
+ ``` json
61
+ {
62
+ "pages": [
63
+ {
64
+ "path": "pages/index/index",
65
+ "style": {
66
+ "navigationStyle": "custom",
67
+ "app-plus": {
68
+ "titleNView": false
69
+ }
70
+ }
71
+ }
72
+ ]
73
+ }
74
+ ```
75
+
76
+ 2. Open the `pages/index/index.vue` file and add the following code.
77
+
78
+ ``` html
79
+ <template>
80
+ <view class="container">
81
+ <TUICallKit ref="TUICallKit" />
82
+ <view class="input-box">
83
+ <input
84
+ type="text"
85
+ maxlength="20"
86
+ :placeholder="isLogin ? 'Enter callee userID' : 'Enter login userID'"
87
+ :value="userID"
88
+ @input="bindInputUserID"
89
+ />
90
+ </view>
91
+ <view class="btn-box">
92
+ <button @tap="isLogin ? call() : login()">
93
+ {{ isLogin ? 'Call' : 'Login' }}
94
+ </button>
95
+ </view>
96
+ </view>
97
+ </template>
98
+
99
+ <script>
100
+ import TUICallKit from '../../TUICallKit/TUICallKit.vue';
101
+ import * as GenerateTestUserSig from '../../TUICallKit/debug/GenerateTestUserSig-es.js';
102
+
103
+ export default {
104
+ components: { TUICallKit },
105
+ data() {
106
+ return {
107
+ userID: '',
108
+ isLogin: false,
109
+ };
110
+ },
111
+ methods: {
112
+ bindInputUserID(e) {
113
+ this.userID = e.detail.value;
114
+ },
115
+ async login() {
116
+ const userID = this.userID;
117
+ if (!userID) return;
118
+ const { userSig, SDKAppID } = GenerateTestUserSig.genTestUserSig({
119
+ userID,
120
+ });
121
+ try {
122
+ await this.$refs.TUICallKit.init({
123
+ sdkAppID: SDKAppID,
124
+ userID,
125
+ userSig,
126
+ });
127
+ uni.showToast({ title: 'Login successful' });
128
+ this.isLogin = true;
129
+ this.userID = '';
130
+ } catch (error) {
131
+ uni.showToast({ title: 'Login failed', icon: 'error' });
132
+ }
133
+ },
134
+ async call() {
135
+ try {
136
+ await this.$refs.TUICallKit.calls({
137
+ userIDList: [this.userID],
138
+ type: 2,
139
+ });
140
+ } catch (error) {
141
+ uni.showToast({ title: 'Call failed', icon: 'error' });
142
+ }
143
+ },
144
+ },
145
+ };
146
+ </script>
147
+
148
+ <style>
149
+ .container {
150
+ display: flex;
151
+ flex-direction: column;
152
+ align-items: center;
153
+ justify-content: center;
154
+ height: 100vh;
155
+ }
156
+ .input-box {
157
+ width: 80%;
158
+ margin-bottom: 20px;
159
+ }
160
+ .btn-box {
161
+ width: 80%;
162
+ }
163
+ button {
164
+ background-color: #006eff;
165
+ color: white;
166
+ border-radius: 25px;
167
+ }
168
+ </style>
169
+ ```
170
+ 3. You must use **Vue 2** for compilation. Currently, **Vue 3** is not supported.
171
+
172
+ ### Step 6: Build and Run
173
+ 1. Make a custom base (for real-device testing):
174
+ - In HBuilderX, click **Run** > **Run to Phone or Simulator** > **Make Custom Debug Base**.
175
+ - Wait for the build to complete and the custom base to be installed on the device.
176
+
177
+ 2. Run on a real device:
178
+ - Click **Run** > **Run to Phone or Simulator** and select your connected device.
179
+ - Select **Use Custom Base** for debugging.
180
+
181
+ 3. Expected result after quick integration.
182
+
183
+ ### Step 7: Make Your First Call
184
+ - Prepare two devices. Device A logs in with user "userA" and Device B logs in with user "userB".
185
+ - Device A enters "userB" as the callee and clicks the Call button. Device B will see an incoming call UI.
186
+ - Device B clicks the accept button to start the audio/video call.
187
+
188
+ > **Note:**
189
+ >
190
+ > The first time you run the app, you need to grant camera and microphone permissions.
191
+ >
192
+
193
+ ## More Features
194
+
195
+ ### Set Nickname and Avatar
196
+
197
+ Call the `setSelfInfo` API to set the current user's nickname and avatar:
198
+
199
+ ``` javascript
200
+ this.$refs.TUICallKit.setSelfInfo({
201
+ nickName: 'Tom',
202
+ avatar: 'https://...'
203
+ })
204
+ ```
205
+
206
+ ### Set Custom Ringtone
207
+
208
+ Call the `setCallingBell` API to set a custom incoming call ringtone:
209
+
210
+ ``` javascript
211
+ this.$refs.TUICallKit.setCallingBell('/static/bell.mp3')
212
+ ```
213
+
214
+ > **Note:**
215
+ > Only local file paths are accepted. The ringtone setting is device-bound and persists across user switches. Pass an empty string to restore the default ringtone.
216
+
217
+ ### Enable Mute Mode
218
+
219
+ Call the `enableMuteMode` API to enable mute mode (no ringtone on incoming calls):
220
+
221
+ ``` javascript
222
+ this.$refs.TUICallKit.enableMuteMode(true)
223
+ ```
224
+
225
+ ### Enable Floating Window
226
+
227
+ Call the `enableFloatWindow` API to enable the floating window feature:
228
+
229
+ ``` javascript
230
+ this.$refs.TUICallKit.enableFloatWindow(true)
231
+ ```
232
+
233
+ ## FAQ
234
+
235
+ ### Why does the call UI not appear after running?
236
+ 1. Ensure you are running on a **real device** rather than a simulator. Native components like `<live-pusher>` and `<live-player>` are not supported in simulators.
237
+ 2. Ensure you have made a **custom debug base** that includes the required native plugins.
238
+ 3. Check that camera and microphone permissions have been granted.
239
+
240
+ ### What should I do if the native plugin is not found?
241
+ 1. Verify that you have purchased the plugins from the DCloud Plugin Market.
242
+ 2. Ensure the plugins are selected in **manifest.json** > **App Native Plugin Configuration**.
243
+ 3. Rebuild the custom debug base after adding plugins.
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Web Chat SDK Disabling/Adjusting Local Browser Log Output (setLogLevel)
3
+ product: chat
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [setLogLevel, log, log level, disable log, local log, browser log, console log, release, production, create, initialization log]
7
+ version_range: ">=3.0.0"
8
+ ---
9
+
10
+ # Web Chat SDK Disabling/Adjusting Local Browser Log Output (setLogLevel)
11
+
12
+ ## 1. Key Conclusions
13
+
14
+ - Use `chat.setLogLevel(level)` to control the SDK's local log output level. Setting `level` to `4` disables all SDK log printing.
15
+ - `setLogLevel` must be called **after** the `chat` instance is created via `create`.
16
+ - `setLogLevel` only affects logs produced **after** the call succeeds; initialization logs printed before the call cannot be suppressed. This is expected behavior by design.
17
+ - For production, it is recommended to set the level to `1` (release) so that only critical information is printed, rather than setting it to `4` to disable all logs, in order to retain the diagnostic clues needed for troubleshooting.
18
+
19
+ ## 2. Field/Capability Reference
20
+
21
+ | Field/Capability | Purpose | Notes |
22
+ |---|---|---|
23
+ | `chat.setLogLevel(level)` | Sets the local log level | Must be called after the instance is created via `create` |
24
+ | `level = 0` | Normal level | Verbose output; recommended during integration and debugging |
25
+ | `level = 1` | Release level | Prints only critical information; recommended for production |
26
+ | `level = 2` | Warning level | Prints only warning- and error-level logs |
27
+ | `level = 3` | Error level | Prints only error-level logs |
28
+ | `level = 4` | No-log level | Prints no logs (fully disabled) |
29
+
30
+ ## 3. Mechanism/Sequence
31
+
32
+ `create` creates the `chat` instance -> the SDK prints initialization logs (these logs are not controlled by `setLogLevel`) -> call `chat.setLogLevel(level)` -> from the moment the call succeeds, log output is filtered according to the configured level.
33
+
34
+ ## 4. Standard Usage
35
+
36
+ 1. Call `create` to create the `chat` instance.
37
+ 2. Immediately call `chat.setLogLevel(level)` with the target level (pass `4` to disable all logs; pass `1` to keep critical information in production).
38
+ 3. To use different levels across environments, set the corresponding `level` after initialization based on your environment variables.
39
+
40
+ ``` javascript
41
+ // Set the log level immediately after creating the instance
42
+ const chat = TencentCloudChat.create({ SDKAppID });
43
+
44
+ // Disable all local SDK logs
45
+ chat.setLogLevel(4);
46
+
47
+ // Or: keep only critical information in production
48
+ // chat.setLogLevel(1);
49
+ ```
50
+
51
+ ## 5. Result Verification
52
+
53
+ - After setting `level = 4`, no SDK logs appear in the browser console for output produced after the `setLogLevel` call succeeds.
54
+ - After setting `level = 1`, only critical information is printed; warning and normal logs are filtered out.
55
+ - Initialization logs between `create` and `setLogLevel` still appear. This is expected behavior.
56
+
57
+ ## 6. Common Pitfalls
58
+
59
+ - Pitfall 1: Expecting `setLogLevel(4)` to also clear initialization logs (logs printed before the call cannot be suppressed).
60
+ - Pitfall 2: Calling `setLogLevel` before `create` (it only takes effect when called after the instance is created).
61
+ - Pitfall 3: Setting `4` directly in production to disable all logs, leaving no logs to investigate online issues (use `1` to retain critical information).
62
+
63
+ ## 7. Problem Definition (Retrieval Aid, Minimal)
64
+
65
+ How to disable or adjust local (console) browser log output for the Web/Mini Program Chat SDK.
66
+
67
+ ## 8. Synonymous Phrasing Coverage (Retrieval Recall, Minimal)
68
+
69
+ - How do I disable local browser logs in the web IM SDK?
70
+ - What does each `chat.setLogLevel` level mean?
71
+ - How should I set the IM SDK log level in production?
72
+ - Why are initialization logs still printed after I called setLogLevel?
73
+
74
+ ## 9. References (Optional)
75
+
76
+ - Web Chat SDK setLogLevel API reference: `https://web.sdk.qcloud.com/im/doc/v3/en/SDK.html#setLogLevel`
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: IM SDK Errors When Running in Desktop WeChat Mini Program (tencent_cloud_im_csig_flutter_for_web_25F_cy is undefined / WebSocket is not a constructor) and the Upgrade Fix
3
+ product: chat
4
+ frameworks: [miniprogram]
5
+ scope: platform_specific
6
+ tags: [desktop WeChat, mac WeChat 4.x, windows WeChat 3.9.x, uniapp mini program, WeChat native mini program, 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, version upgrade, compatibility]
7
+ version_range: ">=3.5.7"
8
+ ---
9
+
10
+ # IM SDK Errors When Running in Desktop WeChat Mini Program (csig undefined / WebSocket is not a constructor) and the Upgrade Fix
11
+
12
+ ## 1. Key Conclusions
13
+
14
+ - The root cause is that the underlying API attributes of desktop WeChat (mac 4.x / windows 3.9.x) mini programs have changed, causing the IM SDK to misidentify its runtime environment.
15
+ - The two errors are different symptoms of the same root cause: a WeChat mini program packaged with uniapp reports `cannot read properties of undefined (reading 'tencent_cloud_im_csig_flutter_for_web_25F_cy')`; a WeChat native mini program reports `TypeError: WebSocket is not a constructor`.
16
+ - This issue has been handled for compatibility in both IM SDK v3 (`3.5.7`) and v4 (`4.2.4`). Upgrading to the latest release of the corresponding major version fixes it.
17
+ - v2/v3/v4 interfaces are backward compatible and allow smooth migration, but v3 and v4 each contain breaking changes. Assess that there is no risk to your business before upgrading.
18
+
19
+ ## 2. Field/Capability Reference
20
+
21
+ | Field/Capability | Purpose | Notes |
22
+ |---|---|---|
23
+ | `tim-wx-sdk` | v2 package name | Legacy version; upgrading to the latest v4 is recommended |
24
+ | `@tencentcloud/chat` | v3 package name | Issue fixed (`>=3.5.7`); v3 no longer receives new features |
25
+ | `@tencentcloud/lite-chat` | v4 package name | Issue fixed (`>=4.2.4`); recommended version |
26
+ | Missing `tencent_cloud_im_csig...` attribute | uniapp mini program error signal | Undefined due to changed underlying API attributes in desktop WeChat |
27
+ | `WebSocket is not a constructor` | Native mini program error signal | Desktop WeChat runtime misidentified; constructor unavailable |
28
+
29
+ ## 3. Mechanism/Sequence
30
+
31
+ Desktop WeChat is upgraded (mac 4.x / windows 3.9.x) -> the underlying mini program API attributes change -> the IM SDK misidentifies its runtime environment -> a uniapp-packaged mini program hits undefined when reading the `tencent_cloud_im_csig...` attribute (reporting `cannot read properties of undefined`) or a native mini program fails to construct `WebSocket` (reporting `WebSocket is not a constructor`) -> after upgrading to v3 (`>=3.5.7`) or v4 (`>=4.2.4`) with compatibility handling, the SDK correctly identifies the desktop WeChat runtime and the error disappears.
32
+
33
+ ## 4. Standard Usage
34
+
35
+ 1. Confirm your current IM SDK version and package name: v2 (`tim-wx-sdk`) / v3 (`@tencentcloud/chat`) / v4 (`@tencentcloud/lite-chat`).
36
+ 2. Choose the upgrade target based on your current version:
37
+ - Currently v4 (`@tencentcloud/lite-chat`): upgrade to the latest v4 release.
38
+ - Currently v3 (`@tencentcloud/chat`): upgrade to the latest v3 release (v3 no longer receives new features), or upgrade to the latest v4 release.
39
+ - Currently v2 (`tim-wx-sdk`): upgrade to the latest v4 release.
40
+ 3. Before upgrading, read the corresponding migration guide and assess the impact of breaking changes on your business:
41
+ - v3 breaking changes: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-07-breakingchanges.html`
42
+ - v2 to v3 guide: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-05-integration.html`
43
+ - v4 breaking changes: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-04-comparison-v4.html`
44
+ - v3 to v4 guide: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-03-integration-v4.html`
45
+ 4. Complete the upgrade and verify via regression: rerun the uniapp mini program and the WeChat native mini program on desktop WeChat (mac 4.x / windows 3.9.x) and confirm the errors no longer occur.
46
+
47
+ ## 5. Result Verification
48
+
49
+ - After upgrading to v3 (`>=3.5.7`) or v4 (`>=4.2.4`), the uniapp mini program on desktop WeChat no longer reports `cannot read properties of undefined (reading 'tencent_cloud_im_csig...')`.
50
+ - The WeChat native mini program no longer reports `TypeError: WebSocket is not a constructor`.
51
+ - The IM SDK initializes and establishes a connection normally in the desktop WeChat runtime.
52
+
53
+ ## 6. Common Pitfalls
54
+
55
+ - Pitfall 1: Assuming it is a uniapp packaging configuration or business code bug (it is actually an SDK environment-identification issue caused by changed underlying desktop WeChat API attributes).
56
+ - Pitfall 2: Considering it resolved after verifying only on mobile WeChat (the issue only appears on desktop WeChat mac 4.x / windows 3.9.x).
57
+ - Pitfall 3: Upgrading across versions without reading breaking changes (v3 and v4 each have breaking changes; assess business impact first).
58
+ - Pitfall 4: Confusing package names (v3 is `@tencentcloud/chat`, v4 is `@tencentcloud/lite-chat`, v2 is `tim-wx-sdk`).
59
+
60
+ ## 7. Problem Definition (Retrieval Aid, Minimal)
61
+
62
+ When running the IM SDK in a uniapp-packaged WeChat mini program or a WeChat native mini program on desktop WeChat (mac 4.x / windows 3.9.x), it reports the csig attribute as undefined or `WebSocket is not a constructor`.
63
+
64
+ ## 8. Synonymous Phrasing Coverage (Retrieval Recall, Minimal)
65
+
66
+ - What should I do when the desktop WeChat mini program IM SDK reports WebSocket is not a constructor?
67
+ - Why does a uniapp mini program report tencent_cloud_im_csig undefined on mac/windows WeChat?
68
+ - IM initialization fails when running a mini program on Windows 3.9 / Mac 4.x WeChat?
69
+ - Which version should the IM SDK be upgraded to in order to fix desktop WeChat compatibility?
70
+ - How to resolve the missing native WebSocket constructor in the AppService logic layer of the PC WeChat mini program?
71
+ - On PC, tim-im app-service.js reports WebSocket is not a constructor?
72
+ - The mini program logic layer has no native WebSocket constructor / the WebSocket constructor is unavailable?
73
+
74
+ ## 9. References (Optional)
75
+
76
+ - v3 breaking changes: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-07-breakingchanges.html`
77
+ - v2 to v3 guide: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-05-integration.html`
78
+ - v4 breaking changes: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-04-comparison-v4.html`
79
+ - v3 to v4 guide: `https://web.sdk.qcloud.com/im/doc/v3/en/tutorial-03-integration-v4.html`