@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
|
@@ -12,23 +12,21 @@
|
|
|
12
12
|
|证书 ID|腾讯云控制台上传 APNs 证书后生成|证书 ID 即 `businessID`,在 AppDelegate 中返回给 TIMPush。|
|
|
13
13
|
|App Group ID|Apple Developer Center / **Xcode Capabilities**|仅在需要推送触达统计时使用。|
|
|
14
14
|
|Push 服务开通状态|腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **概览**|创建 Push 应用不等于已开通 Push 服务,请确认 Push 服务已开通。|
|
|
15
|
-
|TIMPush iOS `VERSION`|[更新日志](https://cloud.tencent.com/document/product/269/114289)|`VERSION` 是 Podfile 中 TIMPush 依赖的版本号占位符,例如 `8.9.7537
|
|
15
|
+
|TIMPush iOS `VERSION`|[更新日志](https://cloud.tencent.com/document/product/269/114289)|`VERSION` 是 Podfile 中 TIMPush 依赖的版本号占位符,例如 `8.9.7537`等,请以实际接入版本为准。|
|
|
16
16
|
|
|
17
17
|
本文示例中的 `VERSION`、`SDKAppID`、`AppKey`、`businessID`、App Group ID 均为占位符,请勿在代码仓库中提交真实密钥。
|
|
18
18
|
|
|
19
19
|
## AI 集成
|
|
20
20
|
|
|
21
|
-
通过 npx 安装 [@tencent-rtc/trtc-push-skill](https://www.npmjs.com/package/@tencent-rtc/trtc-push-skill/v/1.0.1#%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 到本地 AI IDE 中,辅助完成 TIMPush
|
|
21
|
+
通过 npx 安装 [@tencent-rtc/trtc-push-skill](https://www.npmjs.com/package/@tencent-rtc/trtc-push-skill/v/1.0.1#%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 到本地 AI IDE 中,辅助完成 TIMPush 离线推送集成。安装后,您可以直接向 AI 输入“集成 iOS 离线推送”等需求,AI 将根据项目类型引导您完成环境检测、厂商通道配置、凭据填写、代码接入和验证等步骤。详情可参考 AI Coding。
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
> 使用 Push Skill AI 集成不是全自动流程,依然需要开发者在厂商配置控制台、腾讯云控制台等配置 Push 相关信息。具体的配置方法请参考下文相关章节。
|
|
25
|
-
>
|
|
23
|
+
## 手动集成
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
### 步骤1:集成 TIMPush SDK
|
|
28
26
|
|
|
29
27
|
如果你想手动集成,请按顺序完成下文配置。
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
#### 在主 App target 中集成 TIMPush
|
|
32
30
|
|
|
33
31
|
TIMPush 通过 CocoaPods 集成。请在 `Podfile` 中为主 App target 添加 TIMPush 依赖。Podfile 示例:
|
|
34
32
|
``` ruby
|
|
@@ -62,11 +60,9 @@ pod install
|
|
|
62
60
|
> 无论 Swift 还是 Objective-C 项目,都请集成 TXIMSDK_Plus_iOS_XCFramework。
|
|
63
61
|
>
|
|
64
62
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
### 配置推送参数
|
|
63
|
+
#### 配置推送参数
|
|
68
64
|
|
|
69
|
-
|
|
65
|
+
##### 配置 `businessID`
|
|
70
66
|
|
|
71
67
|
`businessID` 是腾讯云控制台上传 APNs 证书后生成的证书 ID。TIMPush 通过该 ID 识别当前 App 使用控制台中的哪一份 iOS 推送证书。
|
|
72
68
|
|
|
@@ -95,9 +91,7 @@ import TIMPush
|
|
|
95
91
|
}
|
|
96
92
|
```
|
|
97
93
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
#### 配置 `applicationGroupID`(可选)
|
|
94
|
+
##### 配置 `applicationGroupID`(可选)
|
|
101
95
|
|
|
102
96
|
如果您需要统计推送触达率,需要配置 App Group ID 并实现 applicationGroupID() 方法 ,该 ID 应与您在厂商配置阶段准备的 App Group ID 保持一致。如果不需要推送触达统计,可以跳过本节。
|
|
103
97
|
|
|
@@ -125,11 +119,11 @@ import TIMPush
|
|
|
125
119
|
|
|
126
120
|
**验证**:在 Apple Developer Center 和 Xcode 中确认主 App 与 Notification Service Extension 已绑定到同一个 App Group ID,且 AppDelegate 返回的 `group.<#YOUR_APP_GROUP_ID#>` 与之一致。
|
|
127
121
|
|
|
128
|
-
|
|
122
|
+
### 步骤2:注册推送服务
|
|
129
123
|
|
|
130
|
-
|
|
124
|
+
#### 调用 registerPush
|
|
131
125
|
|
|
132
|
-
registerPush 用于向 TIMPush 注册当前设备的推送 token
|
|
126
|
+
registerPush 用于向 TIMPush 注册当前设备的推送 token。注册成功后,TIMPush 会为当前设备建立一个推送目标标识 `registrationID`;服务端、控制台接入测试和排查工具可以使用该标识向这台设备下发离线推送。若 App 同时接入 IM 并完成登录,也可以使用 `userID` 向该用户已建立推送关系的设备下发离线推送。
|
|
133
127
|
|
|
134
128
|
`appKey` 的取值会影响注册方式和可用的推送标识:
|
|
135
129
|
- `appKey = Push Key`:注册 TIMPush 独立推送能力。Push Key 为腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **概览**中的客户端密钥。
|
|
@@ -270,7 +264,7 @@ func loginIMAndRegisterPush() {
|
|
|
270
264
|
|
|
271
265
|
3. 如触发 `onError`,可按 错误码 查询 `code` 含义。
|
|
272
266
|
|
|
273
|
-
|
|
267
|
+
#### 自定义 registrationID(可选)
|
|
274
268
|
|
|
275
269
|
如需自定义推送标识(如使用业务侧用户 ID),可在 `registerPush` **前**调用 setRegistrationID。
|
|
276
270
|
|
|
@@ -278,7 +272,7 @@ func loginIMAndRegisterPush() {
|
|
|
278
272
|
> 混用场景下,自定义 `registrationID` 必须与 IM 登录使用的 `userID` 完全一致,否则会产生账号互踢导致推送丢失。
|
|
279
273
|
>
|
|
280
274
|
|
|
281
|
-
|
|
275
|
+
### 步骤3:配置消息触达统计(可选)
|
|
282
276
|
|
|
283
277
|
仅当您需要统计推送触达率时,才需要完成本节配置;如果只需要接收普通离线推送,可跳过本节。
|
|
284
278
|
|
|
@@ -289,7 +283,7 @@ func loginIMAndRegisterPush() {
|
|
|
289
283
|
|
|
290
284
|
3. 在 Extension 中调用 TIMPush 处理通知。
|
|
291
285
|
|
|
292
|
-
|
|
286
|
+
#### 创建并配置 Notification Service Extension target
|
|
293
287
|
1. 在 Xcode 中选择 **File** > **New** > **Target**。
|
|
294
288
|
|
|
295
289
|
2. 选择 **Notification Service Extension**。
|
|
@@ -317,7 +311,7 @@ func loginIMAndRegisterPush() {
|
|
|
317
311
|
> Extension target 是独立 target,不能复用主 App target 的 Pod 依赖。若未在 Extension target 中添加 `TIMPush`,在 `NotificationService` 中 `import TIMPush` 或 `#import <TIMPush/TIMPushManager.h>` 会失败。
|
|
318
312
|
>
|
|
319
313
|
|
|
320
|
-
|
|
314
|
+
#### 开启 `mutable-content`
|
|
321
315
|
|
|
322
316
|
`mutable-content` 是 APNs payload 字段,由发送方在推送内容中设置。只有 payload 中开启 `mutable-content`,iOS 10 及以上系统才会在送达前调用 Notification Service Extension,触达统计才能生效。请确保通过以下任一方式开启 `mutable-content`:
|
|
323
317
|
- **腾讯云控制台推送**:在控制台页面,勾选 `mutable-content` 。页面路径:控制台 > 推送服务 Push > 推送设置 > 厂商配置 > iOS > 添加/编辑证书 > 开启 mutable-content。示例图如下:
|
|
@@ -326,7 +320,7 @@ func loginIMAndRegisterPush() {
|
|
|
326
320
|
|
|
327
321
|
- **Chat SDK 发送**:以 Chat SDK 离线推送配置文档为准。
|
|
328
322
|
|
|
329
|
-
|
|
323
|
+
#### 在 Extension 中处理通知
|
|
330
324
|
|
|
331
325
|
请将 `group.<#YOUR_APP_GROUP_ID#>` 替换为您在 Apple Developer Center 和 Xcode 中配置的 App Group ID。主 App 和 Extension 必须使用同一个 App Group ID。以下 Swift 写法基于 OC 接口自动桥接,参数命名可能随 SDK 版本调整,请以 SDK 头文件 `TIMPushManager.h` 为准。
|
|
332
326
|
|
|
@@ -389,9 +383,7 @@ class NotificationService: UNNotificationServiceExtension {
|
|
|
389
383
|
@end
|
|
390
384
|
```
|
|
391
385
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
## 测试推送
|
|
386
|
+
### 步骤4:测试推送链路
|
|
395
387
|
|
|
396
388
|
完成上述集成步骤后,需要通过发送测试消息验证整体链路是否打通。发送消息前请确认:
|
|
397
389
|
1. App 已获得系统通知权限;
|
|
@@ -469,19 +461,15 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
469
461
|
|
|
470
462
|
`sendMessage` 属于 IMSDK 消息发送能力。仅集成 TIMPush 的用户不需要为了验证离线推送而额外接入完整 Chat 初始化、登录和消息发送流程。
|
|
471
463
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
## 处理通知点击跳转
|
|
464
|
+
### 步骤5:处理通知点击跳转
|
|
475
465
|
|
|
476
466
|
通知点击跳转需要三步配合完成:控制台配置点击动作、发送推送时携带跳转参数、客户端注册监听并解析参数。三步缺一则跳转不生效。
|
|
477
467
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
在腾讯云控制台配置推送证书的「点击后续动作」,勾选「打开应用内指定页面」:
|
|
468
|
+
#### **配置控制台点击动作**
|
|
481
469
|
|
|
482
|
-
|
|
470
|
+
在腾讯云控制台选择「打开应用内指定页面」。操作路径:腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **推送设置** > **厂商配置** > **iOS** > **对应 APNs 证书** > **编辑** > 点击后续动作 > 打开应用内指定页面。
|
|
483
471
|
|
|
484
|
-
|
|
472
|
+
#### **发送推送时携带** `ext`
|
|
485
473
|
|
|
486
474
|
发送离线推送时,通过 `ext` 字段携带跳转所需的业务信息(如目标页面、会话 ID 等)。`ext` 是一个字符串,结构由业务自定义,推荐使用 JSON 格式便于客户端解析。下文示例统一使用如下结构演示:
|
|
487
475
|
``` json
|
|
@@ -565,7 +553,7 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
565
553
|
}];
|
|
566
554
|
```
|
|
567
555
|
|
|
568
|
-
|
|
556
|
+
#### **客户端注册监听并解析** `ext`
|
|
569
557
|
|
|
570
558
|
请在 AppDelegate 中遵循 TIMPushListener 协议,在 `didFinishLaunchingWithOptions` 中调用 addPushListener 注册监听器,并在 onNotificationClicked 中解析 `ext` 后跳转到业务页面。
|
|
571
559
|
|
|
@@ -662,63 +650,5 @@ class AppDelegate: UIResponder, UIApplicationDelegate, TIMPushListener {
|
|
|
662
650
|
|
|
663
651
|
**验证**:点击通知后 `onNotificationClicked` 被调用,且 `ext` 内容与发送时设置的一致。如果回调未触发,请检查:控制台点击动作是否选择了**打开应用内指定页面**、监听器是否在 `didFinishLaunchingWithOptions` 中注册、发送消息时是否设置了 `ext`。
|
|
664
652
|
|
|
665
|
-
##
|
|
666
|
-
|
|
667
|
-
如果发送测试消息后设备没有收到推送,请按以下流程逐步排查。每一步确认通过后再进入下一步,可以快速定位问题所在环节。不要只凭单条 APNs 配置成功日志判断接入成功;运行 App 后可过滤 `TIMPush` 关键字观察整体日志。
|
|
668
|
-
|
|
669
|
-
### 步骤1:确认 APNs 权限和 Push Notifications 能力
|
|
670
|
-
- App 是否已获得系统通知权限。
|
|
671
|
-
|
|
672
|
-
- Xcode 主 App target 的 **Signing & Capabilities** 是否已开启 **Push Notifications**。
|
|
673
|
-
|
|
674
|
-
- Apple Developer Center 对应 App ID 的 **Capabilities** 是否已勾选 **Push Notifications**。
|
|
675
|
-
|
|
676
|
-
通过后,进入第二步。
|
|
677
|
-
|
|
678
|
-
### 步骤2:确认 `registerPush` 是否成功
|
|
679
|
-
|
|
680
|
-
检查 `registerPush` 回调结果:
|
|
681
|
-
- `succ` **已触发**:注册成功,进入第三步。
|
|
682
|
-
|
|
683
|
-
- `fail` **触发**:注册失败。结合下文「错误码」表查询 `code` 含义,并按返回的 `desc` 排查 `SDKAppID`、`appKey` 取值(独立 Push 用 Push Key,Chat / TUIKit 用 `nil`)以及调用时机。
|
|
684
|
-
|
|
685
|
-
### 步骤3:确认控制台排查工具能查到 token
|
|
686
|
-
|
|
687
|
-
在腾讯云控制台 **即时通信 IM > 推送服务 Push** 的排查工具中输入 `registrationID` 或 `userID`:
|
|
688
|
-
- **能查到设备且 token 正常**:进入步骤4。
|
|
689
|
-
|
|
690
|
-
- **查不到设备 / 显示「没有上传成功 token」**:常见原因是 Chat 场景未在 Chat 登录成功后调用 `registerPush`,或调用顺序错误。请重新核对调用时机。
|
|
691
|
-
|
|
692
|
-
### 步骤4:确认 `businessID` / Bundle ID / APNs 环境匹配
|
|
693
|
-
|
|
694
|
-
控制台显示「不允许向该主题推送」或仅部分设备能收到推送时,通常是这一层出了问题:
|
|
695
|
-
- Xcode 主 App target 的 Bundle Identifier 是否与 Apple App ID 一致。
|
|
696
|
-
|
|
697
|
-
- 腾讯云控制台上传的 APNs 证书是否绑定同一个 Bundle ID。
|
|
698
|
-
|
|
699
|
-
- AppDelegate 返回的 `businessID` 是否为该 Bundle ID 对应的证书 ID。
|
|
700
|
-
|
|
701
|
-
- APNs 环境(开发 / 生产)是否与 App 安装包环境匹配。
|
|
702
|
-
|
|
703
|
-
- p8 / p12 证书是否上传到正确应用。
|
|
704
|
-
|
|
705
|
-
### 步骤5:确认 Chat / TUIKit 场景登录顺序
|
|
706
|
-
|
|
707
|
-
仅 Chat / TUIKit 场景需要检查:
|
|
708
|
-
- `registerPush` 是否在 Chat 登录成功回调(或 `TUILogin.login` 成功回调)之后调用。
|
|
709
|
-
|
|
710
|
-
- `appKey` 参数是否传 `nil`,而不是 Push Key 或 Chat Key。
|
|
711
|
-
|
|
712
|
-
- 自定义 `registrationID` 是否与 Chat 登录使用的 `userID` 完全一致(不一致会产生账号互踢)。
|
|
713
|
-
|
|
714
|
-
### 步骤6:确认测试消息发送目标和设备状态
|
|
715
|
-
- 测试消息发送给的 `registrationID` 或 `userID` 是否与 `getRegistrationID:` 返回值一致。
|
|
716
|
-
|
|
717
|
-
- App 是否处于后台或已杀进程(前台时离线推送可能不触发)。
|
|
718
|
-
|
|
719
|
-
- 设备是否处于可接收通知状态(勿扰模式、通知权限等)。
|
|
720
|
-
|
|
721
|
-
- 推送服务是否到期(试用到期后自动停止服务)。
|
|
722
|
-
|
|
723
|
-
### 仍无法解决
|
|
653
|
+
## 接入排查
|
|
724
654
|
|
|
@@ -12,22 +12,20 @@
|
|
|
12
12
|
|
|
13
13
|
## AI 集成
|
|
14
14
|
|
|
15
|
-
通过 npx 安装 [@tencent-rtc/trtc-push-skill](https://www.npmjs.com/package/@tencent-rtc/trtc-push-skill/v/1.0.1#%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 到本地 AI IDE 中,辅助完成 TIMPush
|
|
15
|
+
通过 npx 安装 [@tencent-rtc/trtc-push-skill](https://www.npmjs.com/package/@tencent-rtc/trtc-push-skill/v/1.0.1#%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 到本地 AI IDE 中,辅助完成 TIMPush 离线推送集成。安装后,您可以直接向 AI 输入“集成 uniapp 离线推送”等需求,AI 将根据项目类型引导您完成环境检测、厂商通道配置、凭据填写、代码接入和验证等步骤。详情可参考 AI Coding。
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
> 使用 Push Skill AI 集成不是全自动流程,依然需要开发者在厂商配置控制台、腾讯云控制台等配置 Push 相关信息。具体的配置方法请参考下文相关章节。
|
|
19
|
-
>
|
|
17
|
+
## 手动集成
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
### 步骤1:集成 TencentCloud-Push
|
|
22
20
|
|
|
23
21
|
如果你想手动集成,请按下述步骤依次完成下载插件并导入 HBuilderX、配置离线推送文件。
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
#### 下载插件并导入 HBuilderX
|
|
26
24
|
1. 完成上述「前提条件」中目标平台的厂商配置后,打开 [uni-app 腾讯云推送服务(Push)](https://ext.dcloud.net.cn/plugin),单击**下载插件并导入 HBuilderX**,将插件导入 HBuilderX 工程中。
|
|
27
25
|
|
|
28
26
|
2. 选择需要集成的工程并单击**确定**。
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
#### 配置离线推送文件
|
|
31
29
|
|
|
32
30
|
> **说明:**
|
|
33
31
|
> - 推送配置文件统一放在与 `uni_modules` 平级的 `nativeResources` 目录下,若该目录不存在请手动新建。
|
|
@@ -128,7 +126,7 @@
|
|
|
128
126
|
}
|
|
129
127
|
```
|
|
130
128
|
|
|
131
|
-
|
|
129
|
+
### 步骤2:注册推送服务
|
|
132
130
|
|
|
133
131
|
完成插件导入和离线推送文件配置后,在 App 启动、用户同意隐私政策后调用 `registerPush` 注册推送服务,并按需注册通知点击、在线推送等监听。
|
|
134
132
|
|
|
@@ -143,7 +141,7 @@
|
|
|
143
141
|
> - 仅使用 TIMPush(独立推送):直接调用 `registerPush`,后台使用 `getRegistrationID` 返回的 `registrationID` 推送即可。
|
|
144
142
|
> - 与 Chat 打通:在 `registerPush` 前调用 `setRegistrationID(userID)`,且 `userID` 必须与 Chat 登录使用的 `userID` 完全一致,否则会产生账号互踢导致推送丢失。
|
|
145
143
|
|
|
146
|
-
|
|
144
|
+
#### 引入并注册推送服务
|
|
147
145
|
|
|
148
146
|
``` javascript
|
|
149
147
|
// 集成 TencentCloud-Push
|
|
@@ -187,7 +185,7 @@ addPushListener(EVENT.MESSAGE_REVOKED, (res) => {
|
|
|
187
185
|
|
|
188
186
|
**验证**:`registerPush` 成功回调被触发;登录 [IM 控制台 > 推送服务 Push 排查工具](https://cloud.tencent.com/document/product/269/100629),输入 `userID` 或 `registrationID`,确认 token 已上传。如触发失败回调,可按 错误码 查询 `errCode` 含义。
|
|
189
187
|
|
|
190
|
-
|
|
188
|
+
#### 自定义 registrationID(可选)
|
|
191
189
|
|
|
192
190
|
如需自定义推送标识(如使用业务侧用户 ID),可在 `registerPush` 前调用 `setRegistrationID`。
|
|
193
191
|
``` javascript
|
|
@@ -208,7 +206,7 @@ setRegistrationID(userID, () => {
|
|
|
208
206
|
> 混用场景下,自定义 `registrationID` 必须与 IM 登录使用的 `userID` 完全一致,否则会产生账号互踢导致推送丢失。
|
|
209
207
|
>
|
|
210
208
|
|
|
211
|
-
|
|
209
|
+
### 步骤3:生成自定义调试基座(Android、iOS)
|
|
212
210
|
|
|
213
211
|
> **说明:**
|
|
214
212
|
> Harmony 不需要自定义基座。
|
|
@@ -218,7 +216,7 @@ setRegistrationID(userID, () => {
|
|
|
218
216
|
|
|
219
217
|
**验证**:自定义基座制作成功,可在目标厂商真机上正常安装并运行 App,无崩溃。如启动崩溃,请检查 `config.json` 依赖/插件配置、厂商配置文件位置是否正确。
|
|
220
218
|
|
|
221
|
-
|
|
219
|
+
### 步骤4:测试推送链路
|
|
222
220
|
|
|
223
221
|
完成上述集成步骤后,需要通过发送测试消息验证链路是否打通。发送消息前请确认:
|
|
224
222
|
1. Android 13 及以上已允许通知权限;
|
|
@@ -231,17 +229,17 @@ setRegistrationID(userID, () => {
|
|
|
231
229
|
|
|
232
230
|
**验证**:App 置于后台后发送测试消息,设备能收到离线推送通知。如果收不到。
|
|
233
231
|
|
|
234
|
-
|
|
232
|
+
### 步骤5:处理通知点击跳转
|
|
235
233
|
|
|
236
234
|
通知点击跳转需要三步配合完成:控制台配置点击动作、发送推送时携带跳转参数、客户端注册监听并解析参数。三步缺一则跳转不生效。
|
|
237
235
|
|
|
238
|
-
|
|
236
|
+
#### 配置控制台点击动作
|
|
239
237
|
|
|
240
238
|
在 IM 控制台配置推送证书的「点击后续动作」,勾选「打开应用内指定界面」:
|
|
241
239
|
|
|
242
240
|
操作路径:IM 控制台 > **推送服务 Push** > **推送设置** > **对应厂商证书** > **编辑** > 点击后续动作,选择**打开应用内指定界面**,并保持默认填充值不修改。
|
|
243
241
|
|
|
244
|
-
|
|
242
|
+
#### 发送推送时携带 ext
|
|
245
243
|
|
|
246
244
|
发送离线推送时,通过 `ext` 字段携带跳转所需的业务信息(如目标页面、会话 ID 等)。`ext` 是一个字符串,结构由业务自定义,推荐使用 JSON 格式便于客户端解析。下文示例统一使用如下结构演示:
|
|
247
245
|
``` json
|
|
@@ -268,7 +266,7 @@ setRegistrationID(userID, () => {
|
|
|
268
266
|
}
|
|
269
267
|
```
|
|
270
268
|
|
|
271
|
-
|
|
269
|
+
#### 客户端注册监听并解析 ext
|
|
272
270
|
|
|
273
271
|
在 App 启动时调用 `addPushListener` 注册 `EVENT.NOTIFICATION_CLICKED` 事件,回调中的 `res` 为发送端通过 `ext` 携带的推送扩展信息。解析后即可跳转到业务页面。以下示例只演示解析核心逻辑,跳转部分用 `TODO` 占位,请按自身业务补充:
|
|
274
272
|
``` javascript
|
|
@@ -303,25 +301,7 @@ addPushListener(EVENT.NOTIFICATION_CLICKED, (res) => {
|
|
|
303
301
|
|
|
304
302
|
**验证**:点击通知后 `EVENT.NOTIFICATION_CLICKED` 回调被调用,且 `res` 内容与发送时设置的 `ext` 一致。如果回调未触发,请检查:控制台点击动作是否选择了「打开应用内指定界面」并保持默认填充值、监听器是否在 App 启动时注册、发送消息时是否设置了 `ext`。
|
|
305
303
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
开启推送服务后,推送结果可以通过配置基础回调的方式,将结果转发给 App 后台,
|
|
309
|
-
- [普通推送结果回调](https://cloud.tencent.com/document/product/269/102567)
|
|
310
|
-
|
|
311
|
-
- [全员推送结果回调](https://cloud.tencent.com/document/product/269/102568)
|
|
312
|
-
|
|
313
|
-
## 设备通知栏设置
|
|
314
|
-
|
|
315
|
-
推送的直观表现就是通知栏提示,所以同其他通知一样受设备通知相关设置的影响,以华为为例:
|
|
316
|
-
- “手机设置 > 通知 > 锁屏通知 > 隐藏或者不显示通知”,会影响锁屏状态下推送通知显示。
|
|
317
|
-
|
|
318
|
-
- “手机设置 > 通知 > 更多通知设置 > 状态栏显示通知图标”,会影响状态栏下推送通知的图标显示。
|
|
319
|
-
|
|
320
|
-
- “手机设置 > 通知 > 应用的通知管理 > 允许通知”,打开关闭会直接影响推送通知显示。
|
|
321
|
-
|
|
322
|
-
- “手机设置 > 通知 > 应用的通知管理 > 通知铃声” 和 “手机设置 > 通知 > 应用的通知管理 > 静默通知”,会影响推送通知铃声的效果。
|
|
323
|
-
|
|
324
|
-
## 配置消息分类(可选)
|
|
304
|
+
### 步骤6:配置消息分类
|
|
325
305
|
|
|
326
306
|
厂商离线通道通常有消息分类机制。消息分类会影响推送及时性、单设备每日接收数量、夜间展示、声音、横幅以及厂商通道权限。
|
|
327
307
|
|
|
@@ -341,15 +321,9 @@ addPushListener(EVENT.NOTIFICATION_CLICKED, (res) => {
|
|
|
341
321
|
|魅族|区分公信消息与私信消息。|
|
|
342
322
|
|FCM|通过通道 `channelID` 设置 Android 8.0 及以上通知渠道。|
|
|
343
323
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
> **注意:**
|
|
347
|
-
> 只有 IM 聊天、订单、交易、账号变更等用户预期强、需要及时触达的消息,才建议申请或使用高优先级分类。营销、广告、活动、资讯类消息不应滥用高优分类,否则可能被厂商降级、限频或冻结权限。
|
|
348
|
-
>
|
|
349
|
-
|
|
350
|
-
- 国内厂商都有消息分类机制,不同类型也会有不同的推送策略。如果想要推送及时可靠,需要按照厂商规则设置自己应用的推送类型为高优先级的系统消息类型或者重要消息类型。反之,推送消息会受厂商推送消息分类影响,与预期会有差异。
|
|
324
|
+
### 步骤7:检查厂商推送限制
|
|
351
325
|
|
|
352
|
-
|
|
326
|
+
一些厂商对于应用每天的推送数量也是有限制的,可以在厂商控制台查看应用每日限制的推送数量。如果推送消息出现推送不及时或者偶尔收不到情况,需要检查这里:
|
|
353
327
|
|
|
354
328
|
【华为】
|
|
355
329
|
|
|
@@ -378,75 +352,23 @@ addPushListener(EVENT.NOTIFICATION_CLICKED, (res) => {
|
|
|
378
352
|
|
|
379
353
|
推送上行消息频率有限制。具体请参见 [厂商描述](https://firebase.google.com/docs/cloud-messaging/scale-fcm)。
|
|
380
354
|
|
|
381
|
-
##
|
|
382
|
-
|
|
383
|
-
如果发送测试消息后设备没有收到推送,请按以下流程逐步排查。每一步确认通过后再进入下一步,可以快速定位问题所在环节。
|
|
384
|
-
|
|
385
|
-
#### 步骤1:确认 registerPush 是否成功
|
|
386
|
-
|
|
387
|
-
检查 `registerPush` 回调结果:
|
|
388
|
-
- **成功回调触发**:注册成功,进入第二步。
|
|
389
|
-
|
|
390
|
-
- **失败回调触发**:注册失败。查看 `errCode`、`errMsg`:
|
|
391
|
-
|
|
392
|
-
- TIMPush 错误码(如 `800006`):在 错误码 中查询。
|
|
393
|
-
|
|
394
|
-
- 厂商原始异常(如 `6003: certificate fingerprint error`):优先根据此信息排查厂商侧配置。
|
|
395
|
-
|
|
396
|
-
- 常见原因:`timpush-configs.json` 缺失或位置错误、厂商证书未添加、包名或 SHA256 指纹不匹配、厂商配置文件未放置、未使用云端证书制作自定义基座。
|
|
397
|
-
|
|
398
|
-
#### 步骤2:确认控制台能查到设备
|
|
399
|
-
|
|
400
|
-
在控制台 [排查工具](https://cloud.tencent.com/document/product/269/100629) 中输入 `registrationID` 或 `userID`:
|
|
401
|
-
- **能查到设备且状态正常**:进入第三步。
|
|
402
|
-
|
|
403
|
-
- **查不到设备**:`registerPush` 可能实际未成功,或使用了错误的标识。重新确认 `registrationID` / `userID` 值是否正确。
|
|
404
|
-
|
|
405
|
-
#### 步骤3:确认 App 状态
|
|
406
|
-
|
|
407
|
-
离线推送只在 App 处于后台或已杀进程时触发:
|
|
408
|
-
- **App 在前台**:将 App 切到后台或杀掉进程,重新发送测试消息。
|
|
409
|
-
|
|
410
|
-
- **App 已在后台**:进入第四步。
|
|
411
|
-
|
|
412
|
-
#### 步骤4:确认通知权限和通知渠道
|
|
413
|
-
- **Android 13 及以上**:确认 App 已获得通知权限(系统设置 > 应用 > 通知 > 允许通知)。
|
|
414
|
-
|
|
415
|
-
- **Android 8.0 及以上**:确认目标通知渠道的横幅、锁屏、声音开关已打开(系统设置 > 应用 > 通知 > 通知类别)。
|
|
416
|
-
|
|
417
|
-
- 通知总开关打开不代表所有 channel 都已开启;需要进入具体通知类别检查。
|
|
418
|
-
|
|
419
|
-
#### 步骤5:确认基座与打包配置
|
|
420
|
-
- 是否使用云端证书制作了自定义基座,并在自定义基座上运行(标准基座不包含厂商推送通道)。
|
|
421
|
-
|
|
422
|
-
- `config.json` 中的 `dependencies` / `plugins` 是否按目标厂商正确配置。
|
|
423
|
-
|
|
424
|
-
#### 步骤6:确认厂商通道配置
|
|
425
|
-
- 测试真机厂商是否与目标厂商通道一致(如不要在华为设备上测试荣耀配置)。
|
|
426
|
-
|
|
427
|
-
- 厂商平台应用包名是否与 uni-app 工程包名完全一致。
|
|
428
|
-
|
|
429
|
-
- 厂商证书是否已在 IM 控制台添加且未过期。
|
|
430
|
-
|
|
431
|
-
- 华为/荣耀:测试包签名的 SHA-256 必须已在厂商控制台「项目设置 > 常规 > SHA 证书指纹」中添加,指纹不一致会报 `6003: certificate fingerprint error`。
|
|
432
|
-
|
|
433
|
-
#### 步骤7:确认消息分类和厂商限制
|
|
434
|
-
- 是否超出厂商单日推送限额(如 vivo 运营消息每日限制、小米普通消息限额)。
|
|
355
|
+
## 推送结果回调
|
|
435
356
|
|
|
436
|
-
|
|
357
|
+
开启推送服务后,推送结果可以通过配置基础回调的方式,将结果转发给 App 后台,
|
|
358
|
+
- [普通推送结果回调](https://cloud.tencent.com/document/product/269/102567)
|
|
437
359
|
|
|
438
|
-
-
|
|
360
|
+
- [全员推送结果回调](https://cloud.tencent.com/document/product/269/102568)
|
|
439
361
|
|
|
440
|
-
|
|
362
|
+
## 设备通知栏设置
|
|
441
363
|
|
|
442
|
-
|
|
364
|
+
推送的直观表现就是通知栏提示,所以同其他通知一样受设备通知相关设置的影响,以华为为例:
|
|
365
|
+
- “手机设置 > 通知 > 锁屏通知 > 隐藏或者不显示通知”,会影响锁屏状态下推送通知显示。
|
|
443
366
|
|
|
444
|
-
|
|
445
|
-
- 检查系统通知类别中的「横幅通知」和「锁屏通知」开关。
|
|
367
|
+
- “手机设置 > 通知 > 更多通知设置 > 状态栏显示通知图标”,会影响状态栏下推送通知的图标显示。
|
|
446
368
|
|
|
447
|
-
-
|
|
369
|
+
- “手机设置 > 通知 > 应用的通知管理 > 允许通知”,打开关闭会直接影响推送通知显示。
|
|
448
370
|
|
|
449
|
-
-
|
|
371
|
+
- “手机设置 > 通知 > 应用的通知管理 > 通知铃声” 和 “手机设置 > 通知 > 应用的通知管理 > 静默通知”,会影响推送通知铃声的效果。
|
|
450
372
|
|
|
451
|
-
|
|
373
|
+
## 接入排查
|
|
452
374
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: TUIRoomKit Vue3 离开房间/结束会议时屏幕分享是否自动停止
|
|
3
|
+
product: room
|
|
4
|
+
frameworks: [vue, web]
|
|
5
|
+
scope: platform_specific
|
|
6
|
+
tags: [TUIRoomKit, 屏幕分享, stopScreenShare, startScreenShare, leaveRoom, endRoom, 离开房间, 结束会议, 关闭浏览器, useDeviceState, useRoomState, screenStatus, vue3, Atomicx]
|
|
7
|
+
version_range: ">=2.0.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# TUIRoomKit Vue3 离开房间/结束会议时屏幕分享是否自动停止
|
|
11
|
+
|
|
12
|
+
## 1. 核心结论
|
|
13
|
+
|
|
14
|
+
- 用户离开房间(`leaveRoom`)、结束会议(`endRoom`)、以及关闭浏览器 / 关闭网页等退出房间的操作,都会自动结束当前的屏幕分享,无需业务侧再手动调用 `stopScreenShare`。
|
|
15
|
+
- 屏幕分享是房间会话的一部分:退出房间即释放该用户的共享通道,屏幕分享随之停止。
|
|
16
|
+
- 无需为「退房时清理屏幕分享」编写额外收尾代码;仅在**会中主动关闭**屏幕分享(不退房)时,才需要显式调用 `stopScreenShare`。
|
|
17
|
+
- 该行为对无 UI 集成(`tuikit-atomicx-vue3`)与含 UI 集成(`@tencentcloud/roomkit-web-vue3`)一致。
|
|
18
|
+
|
|
19
|
+
## 2. 字段语义对照
|
|
20
|
+
|
|
21
|
+
| 字段/能力 | 作用 | 说明 |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `startScreenShare` | 开启屏幕分享 | `useDeviceState()` 提供,开启后共享给房间内其他成员 |
|
|
24
|
+
| `stopScreenShare` | 停止屏幕分享 | 仅在**会中主动停止且不退房**时需要显式调用 |
|
|
25
|
+
| `screenStatus` | 屏幕分享状态 | `useDeviceState()` 提供,`DeviceStatus.On` 表示分享中 |
|
|
26
|
+
| `leaveRoom` | 离开房间 | 成员退出房间;会自动结束该成员的屏幕分享 |
|
|
27
|
+
| `endRoom` | 结束会议 | 房主解散房间;会自动结束屏幕分享 |
|
|
28
|
+
| 关闭浏览器/网页 | 异常/正常退出 | 断开房间会话,屏幕分享随之结束 |
|
|
29
|
+
|
|
30
|
+
## 3. 机制/时序
|
|
31
|
+
|
|
32
|
+
用户在会中开启屏幕分享(`startScreenShare`,`screenStatus = On`) -> 触发退出房间的动作(`leaveRoom` / `endRoom` / 关闭浏览器或网页) -> 房间会话断开、该用户的共享通道被释放 -> 屏幕分享自动停止,房间内其他成员不再看到该共享画面。
|
|
33
|
+
|
|
34
|
+
## 4. 标准用法
|
|
35
|
+
|
|
36
|
+
1. 会中开启屏幕分享:调用 `useDeviceState()` 的 `startScreenShare`。
|
|
37
|
+
2. 需要在**不退房**的前提下停止分享时:显式调用 `stopScreenShare`。
|
|
38
|
+
3. 用户离开房间时:调用 `leaveRoom`(或房主 `endRoom`)即可,屏幕分享会自动结束,不必先调用 `stopScreenShare`。
|
|
39
|
+
4. 关闭浏览器 / 关闭网页等退出场景:无需额外处理,屏幕分享随房间会话断开而自动结束。
|
|
40
|
+
|
|
41
|
+
## 5. 结果判定
|
|
42
|
+
|
|
43
|
+
- 调用 `leaveRoom` / `endRoom` 后,该用户的屏幕分享停止,房间内其他成员的共享画面消失。
|
|
44
|
+
- 关闭浏览器或网页后,房间内其他成员不再收到该用户的屏幕共享流。
|
|
45
|
+
- 会中未退房、仅调用 `stopScreenShare` 时,屏幕分享停止而用户仍留在房间内。
|
|
46
|
+
|
|
47
|
+
## 6. 常见误区
|
|
48
|
+
|
|
49
|
+
- 误区 1:认为退房前必须先手动调用 `stopScreenShare`,否则屏幕分享会残留(退房会自动结束分享)。
|
|
50
|
+
- 误区 2:认为关闭浏览器/网页后屏幕分享仍在继续(房间会话断开后分享即结束)。
|
|
51
|
+
- 误区 3:把 `leaveRoom`/`endRoom` 与 `stopScreenShare` 的职责混为一谈(前者退房并自动清理,后者仅停分享、不退房)。
|
|
52
|
+
|
|
53
|
+
## 7. 问题定义(检索辅助,极简)
|
|
54
|
+
|
|
55
|
+
TUIRoomKit Vue3 中,用户 `leaveRoom`/`endRoom` 或关闭浏览器网页时,屏幕分享是否会自动停止。
|
|
56
|
+
|
|
57
|
+
## 8. 同义问法覆盖(检索召回,极简)
|
|
58
|
+
|
|
59
|
+
- leaveRoom / endRoom 时会自动 stopScreenShare 吗?
|
|
60
|
+
- 离开房间后屏幕分享还会继续吗?
|
|
61
|
+
- 关闭浏览器网页后屏幕共享会自动结束吗?
|
|
62
|
+
- 退房前需要手动停止屏幕分享吗?
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
视频会议 SDK 基于腾讯云即时通信 IM 与实时音视频 TRTC 提供服务,支持在内网 / 防火墙环境下统一配置 IM 与 TRTC 代理,适用于私有化部署、企业内网隔离等无法直连腾讯云服务的场景。
|
|
2
|
+
|
|
3
|
+
## 代理架构
|
|
4
|
+
|
|
5
|
+
|代理服务器|代理链路|
|
|
6
|
+
|---------|---------|
|
|
7
|
+
|IM 代理|代理 IM 登录、消息收发等信令通道(WebSocket),以及聊天图片、文件等资源的上传与下载。|
|
|
8
|
+
|TRTC WebSocket 代理(如 Nginx)|代理 TRTC 进房、控制等信令通道(WebSocket),负责房间管理与用户状态同步。|
|
|
9
|
+
|TRTC TURN Server|中继转发 TRTC 音视频媒体流。|
|
|
10
|
+
|
|
11
|
+
> **说明:**
|
|
12
|
+
> 代理服务器(IM 代理、Nginx、TURN)需自行部署,搭建方式参见 [TRTC Web SDK 应对防火墙受限](https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/zh-cn/tutorial-34-advanced-proxy.html)。
|
|
13
|
+
>
|
|
14
|
+
|
|
15
|
+
## 接口与参数
|
|
16
|
+
|
|
17
|
+
视频会议 SDK 支持用户在调用 `login()` 之前通过 `callExperimentalAPI` 接口统一配置内网代理:
|
|
18
|
+
``` typescript
|
|
19
|
+
callExperimentalAPI({
|
|
20
|
+
api: 'setNetworkProxy',
|
|
21
|
+
params: {
|
|
22
|
+
im?: { /* IM 代理参数 */ },
|
|
23
|
+
rtc?: { /* TRTC 代理参数 */ },
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### IM 代理参数
|
|
29
|
+
|
|
30
|
+
|参数|类型|说明|
|
|
31
|
+
|---------|---------|---------|
|
|
32
|
+
|`proxyServer`|String|IM 信令 WebSocket 代理地址。|
|
|
33
|
+
|`fileUploadProxy`|String|IM 文件上传代理地址。|
|
|
34
|
+
|`fileDownloadProxy`|String|IM 文件下载代理地址。|
|
|
35
|
+
|
|
36
|
+
### TRTC 代理参数
|
|
37
|
+
|
|
38
|
+
|参数|类型|说明|
|
|
39
|
+
|---------|---------|---------|
|
|
40
|
+
|`websocketProxy`|String|TRTC 信令 WebSocket 代理地址,如 `wss://proxy.example.com/ws/`。|
|
|
41
|
+
|`turnServer`|Array|TURN 服务器列表,每项含 `url` / `username` / `credential`。|
|
|
42
|
+
|`iceTransportPolicy`|`'relay' \| 'all'`|客户端 ICE 传输策略;内网环境建议设为 `'relay'`,强制连接 TURN server。|
|
|
43
|
+
|
|
44
|
+
## 示例代码
|
|
45
|
+
|
|
46
|
+
``` typescript
|
|
47
|
+
import { callExperimentalAPI } from 'tuikit-atomicx-react';
|
|
48
|
+
import { useLoginState, useRoomState } from 'tuikit-atomicx-react/room';
|
|
49
|
+
|
|
50
|
+
callExperimentalAPI({
|
|
51
|
+
api: 'setNetworkProxy',
|
|
52
|
+
params: {
|
|
53
|
+
im: {
|
|
54
|
+
proxyServer: 'wss://proxy.example.com:8080',
|
|
55
|
+
fileUploadProxy: 'https://proxy.example.com:8080',
|
|
56
|
+
fileDownloadProxy: 'https://proxy.example.com:8080',
|
|
57
|
+
},
|
|
58
|
+
rtc: {
|
|
59
|
+
websocketProxy: 'wss://proxy.example.com/ws/',
|
|
60
|
+
turnServer: [
|
|
61
|
+
{ url: '14.3.3.3:3478', username: 'turn', credential: 'turn' },
|
|
62
|
+
],
|
|
63
|
+
iceTransportPolicy: 'relay',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const { login } = useLoginState();
|
|
69
|
+
await login({ sdkAppId, userId, userSig });
|
|
70
|
+
|
|
71
|
+
const { createAndJoinRoom } = useRoomState();
|
|
72
|
+
await createAndJoinRoom({ roomId });
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 常见问题
|
|
76
|
+
|
|
77
|
+
### 用户在外网正常进会,但是内网无法进会?
|
|
78
|
+
|
|
79
|
+
检查是否在 `login()` 前调用了 `setNetworkProxy`;若已配置仍失败,排查 TURN 端口与代理服务器出站白名单。
|
|
80
|
+
|
|
81
|
+
### 用户能进会但看不到远端画面、听不到远端声音?
|
|
82
|
+
|
|
83
|
+
确认 `turnServer` 可达,内网环境将 `iceTransportPolicy` 设为 `'relay'`。
|
|
84
|
+
|