@tencentcloud/sdk-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.
- package/CHANGELOG.md +26 -0
- package/README.md +25 -17
- package/knowledge/bm25.js +20 -11
- package/knowledge/path-meta.js +23 -1
- 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/callkit/preset/android/integration.md +4 -0
- package/resource/integration/callkit/preset/flutter/integration.md +4 -0
- package/resource/integration/callkit/preset/ios/integration.md +14 -13
- package/resource/integration/callkit/preset/vue/integration.md +0 -3
- package/resource/integration/chat/preset/android/integration.md +35 -173
- package/resource/integration/chat/preset/flutter/integration.md +113 -220
- package/resource/integration/chat/preset/ios/integration.md +2 -269
- package/resource/integration/chat/preset/react/integration.md +27 -1
- package/resource/integration/chat/preset/uni-app/integration.md +5 -1
- package/resource/integration/chat/preset/vue/integration.md +21 -31
- package/resource/integration/livekit/preset/live/android/live-host-integration.md +4 -0
- package/resource/integration/livekit/preset/live/ios/live-host-integration.md +4 -0
- package/resource/integration/livekit/preset/live/vue/live-list-integration.md +3 -4
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -1
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -1
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +4 -9
- package/resource/integration/roomkit/preset/vue/integration.md +0 -213
- package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +490 -0
- package/resource/knowledge/callkit/best-practice/flutter/android-keep-call-alive-background.md +79 -0
- package/resource/knowledge/callkit/best-practice/flutter/background-incoming-call-no-notification.md +99 -0
- package/resource/knowledge/callkit/best-practice/flutter/ios-keep-call-alive-background.md +93 -0
- package/resource/knowledge/callkit/best-practice/flutter/ios-startup-crash-version-voip.md +68 -0
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -1
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +9 -7
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +10 -7
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +1 -1
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +19 -19
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +16 -16
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -84
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -102
- package/resource/knowledge/callkit/core-sdk/web/call-event.md +2 -2
- package/resource/knowledge/callkit/faq/error-code.md +62 -36
- package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +1 -1
- package/resource/knowledge/callkit/preset/android/api.md +10 -10
- package/resource/knowledge/callkit/preset/harmonyos/api.md +362 -0
- package/resource/knowledge/callkit/preset/harmonyos/integration.md +322 -0
- package/resource/knowledge/callkit/preset/ios/api.md +9 -9
- package/resource/knowledge/callkit/preset/miniprogram/api-uniapp.md +293 -0
- package/resource/knowledge/callkit/preset/miniprogram/api.md +19 -19
- package/resource/knowledge/callkit/preset/miniprogram/integration.md +292 -0
- package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +521 -0
- package/resource/knowledge/callkit/preset/uni-app/api.md +49 -0
- package/resource/knowledge/callkit/preset/uni-app/integration.md +353 -0
- 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 +84 -124
- package/resource/knowledge/chat/preset/ios/features/language.md +5 -5
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +184 -923
- package/resource/knowledge/chat/preset/react/features/search.md +9 -214
- package/resource/knowledge/chat/preset/react/h5/integration.md +965 -0
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +0 -36
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +0 -34
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +0 -39
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +0 -74
- package/resource/knowledge/chat/preset/vue/features/search.md +9 -790
- package/resource/knowledge/chat/preset/vue/h5/integration.md +724 -0
- package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +0 -167
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +2 -2
- package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +1 -66
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +1 -66
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +1 -1
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +2 -2
- package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +2 -2
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +2 -2
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +1 -24
- package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +0 -3
- package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -5
- package/resource/knowledge/push/api-reference/harmonyos.md +9 -9
- package/resource/knowledge/push/api-reference/unity.md +10 -10
- package/resource/knowledge/push/api-reference/unreal-engine.md +11 -11
- package/resource/knowledge/push/config/android/fcm.md +2 -6
- package/resource/knowledge/push/integration/android.md +824 -428
- package/resource/knowledge/push/integration/donut.md +57 -74
- package/resource/knowledge/push/integration/flutter.md +208 -63
- package/resource/knowledge/push/integration/harmonyos.md +6 -11
- package/resource/knowledge/push/integration/ios.md +44 -99
- package/resource/knowledge/push/integration/react-native.md +3 -2
- package/resource/knowledge/push/integration/uni-app.md +29 -107
- package/resource/knowledge/push/integration/unity.md +3 -2
- package/resource/knowledge/push/integration/unreal-engine.md +4 -3
- package/resource/knowledge/roomkit/best-practice/vue/screen-share-auto-stop-on-leave.md +62 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +3 -3
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +4 -4
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +2 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -4
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +3 -3
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -4
- package/resource/knowledge/roomkit/core-sdk/react/network-proxy.md +84 -0
- package/resource/knowledge/roomkit/core-sdk/vue/device-detection.md +0 -9
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
- 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/room-chat.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -16
- package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +181 -0
- package/resource/knowledge/roomkit/faq/error-code.md +103 -0
- package/resource/knowledge/roomkit/preset/android/integration.md +1 -202
- package/resource/knowledge/roomkit/preset/flutter/integration.md +13 -13
- package/resource/knowledge/roomkit/preset/harmonyos/integration.md +465 -0
- package/resource/knowledge/roomkit/preset/ios/integration.md +0 -201
- package/resource/knowledge/roomkit/preset/react/features/network-proxy.md +80 -0
- package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +279 -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/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
- 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** > **概览**中的客户端密钥。
|
|
@@ -151,7 +145,7 @@ registerPush 用于向 TIMPush 注册当前设备的推送 token。推送 token
|
|
|
151
145
|
|
|
152
146
|
【App 冷启动注册 TIMPush(appKey 传 Push Key)】
|
|
153
147
|
|
|
154
|
-
App 冷启动、用户同意隐私政策后调用 `registerPush(appKey = Push Key)
|
|
148
|
+
App 冷启动、用户同意隐私政策后调用 `registerPush(appKey = Push Key)`。建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
155
149
|
|
|
156
150
|
【Swift】
|
|
157
151
|
``` swift
|
|
@@ -165,6 +159,10 @@ func registerTIMPush() {
|
|
|
165
159
|
|
|
166
160
|
TIMPushManager.registerPush(sdkAppID, appKey: appKey, succ: { deviceToken in
|
|
167
161
|
print(">>>>> TIMPush register success")
|
|
162
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
163
|
+
TIMPushManager.getRegistrationID { registrationID in
|
|
164
|
+
print(">>>>> TIMPush registrationID: \(registrationID)")
|
|
165
|
+
}
|
|
168
166
|
}, fail: { code, desc in
|
|
169
167
|
print(">>>>> TIMPush register failed, code:\(code), desc:\(desc)")
|
|
170
168
|
})
|
|
@@ -180,11 +178,14 @@ func registerTIMPush() {
|
|
|
180
178
|
int sdkAppID = 0;
|
|
181
179
|
// TODO: Replace @"<#YOUR_PUSH_KEY#>" with your Push Key.
|
|
182
180
|
NSString *appKey = @"<#YOUR_PUSH_KEY#>";
|
|
183
|
-
|
|
184
181
|
[TIMPushManager registerPush:sdkAppID
|
|
185
182
|
appKey:appKey
|
|
186
183
|
succ:^(NSData * _Nonnull deviceToken) {
|
|
187
184
|
NSLog(@">>>>> TIMPush register success");
|
|
185
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
186
|
+
[TIMPushManager getRegistrationID:^(NSString * _Nonnull registrationID) {
|
|
187
|
+
NSLog(@">>>>> TIMPush registrationID: %@", registrationID);
|
|
188
|
+
}];
|
|
188
189
|
} fail:^(int code, NSString * _Nonnull desc) {
|
|
189
190
|
NSLog(@">>>>> TIMPush register failed, code:%d, desc:%@", code, desc);
|
|
190
191
|
}];
|
|
@@ -194,7 +195,7 @@ func registerTIMPush() {
|
|
|
194
195
|
|
|
195
196
|
【IM 登录后注册推送(appKey 传 null)】
|
|
196
197
|
|
|
197
|
-
请在 IM `login` 成功回调中调用 `registerPush(appKey = nil)
|
|
198
|
+
请在 IM `login` 成功回调中调用 `registerPush(appKey = nil)`。建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
198
199
|
|
|
199
200
|
【Swift】
|
|
200
201
|
``` swift
|
|
@@ -216,6 +217,10 @@ func loginIMAndRegisterPush() {
|
|
|
216
217
|
V2TIMManager.sharedInstance().login(userID: userID, userSig: userSig) {
|
|
217
218
|
TIMPushManager.registerPush(sdkAppID, appKey: "", succ: { deviceToken in
|
|
218
219
|
print(">>>>> TIMPush register success")
|
|
220
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
221
|
+
TIMPushManager.getRegistrationID { registrationID in
|
|
222
|
+
print(">>>>> TIMPush registrationID: \(registrationID)")
|
|
223
|
+
}
|
|
219
224
|
}, fail: { code, desc in
|
|
220
225
|
print(">>>>> TIMPush register failed, code:\(code), desc:\(desc)")
|
|
221
226
|
})
|
|
@@ -248,6 +253,10 @@ func loginIMAndRegisterPush() {
|
|
|
248
253
|
appKey:nil
|
|
249
254
|
succ:^(NSData * _Nonnull deviceToken) {
|
|
250
255
|
NSLog(@">>>>> TIMPush register success");
|
|
256
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
257
|
+
[TIMPushManager getRegistrationID:^(NSString * _Nonnull registrationID) {
|
|
258
|
+
NSLog(@">>>>> TIMPush registrationID: %@", registrationID);
|
|
259
|
+
}];
|
|
251
260
|
} fail:^(int code, NSString * _Nonnull desc) {
|
|
252
261
|
NSLog(@">>>>> TIMPush register failed, code:%d, desc:%@", code, desc);
|
|
253
262
|
}];
|
|
@@ -259,7 +268,7 @@ func loginIMAndRegisterPush() {
|
|
|
259
268
|
|
|
260
269
|
> **警告:**
|
|
261
270
|
>
|
|
262
|
-
>
|
|
271
|
+
> 如果您的业务仅使用即时通信 IM 聊天能力,请勿在 IM 登录前先调用 `registerPush`。否则 SDK 可能会按独立推送场景注册 Push 类型账号,并产生对应的 Push DAU。Push DAU 超出套餐额度后,可能会产生额外费用。
|
|
263
272
|
>
|
|
264
273
|
|
|
265
274
|
**验证**:
|
|
@@ -270,7 +279,7 @@ func loginIMAndRegisterPush() {
|
|
|
270
279
|
|
|
271
280
|
3. 如触发 `onError`,可按 错误码 查询 `code` 含义。
|
|
272
281
|
|
|
273
|
-
|
|
282
|
+
#### 自定义 registrationID(可选)
|
|
274
283
|
|
|
275
284
|
如需自定义推送标识(如使用业务侧用户 ID),可在 `registerPush` **前**调用 setRegistrationID。
|
|
276
285
|
|
|
@@ -278,7 +287,7 @@ func loginIMAndRegisterPush() {
|
|
|
278
287
|
> 混用场景下,自定义 `registrationID` 必须与 IM 登录使用的 `userID` 完全一致,否则会产生账号互踢导致推送丢失。
|
|
279
288
|
>
|
|
280
289
|
|
|
281
|
-
|
|
290
|
+
### 步骤3:配置消息触达统计(可选)
|
|
282
291
|
|
|
283
292
|
仅当您需要统计推送触达率时,才需要完成本节配置;如果只需要接收普通离线推送,可跳过本节。
|
|
284
293
|
|
|
@@ -289,7 +298,7 @@ func loginIMAndRegisterPush() {
|
|
|
289
298
|
|
|
290
299
|
3. 在 Extension 中调用 TIMPush 处理通知。
|
|
291
300
|
|
|
292
|
-
|
|
301
|
+
#### 创建并配置 Notification Service Extension target
|
|
293
302
|
1. 在 Xcode 中选择 **File** > **New** > **Target**。
|
|
294
303
|
|
|
295
304
|
2. 选择 **Notification Service Extension**。
|
|
@@ -317,7 +326,7 @@ func loginIMAndRegisterPush() {
|
|
|
317
326
|
> Extension target 是独立 target,不能复用主 App target 的 Pod 依赖。若未在 Extension target 中添加 `TIMPush`,在 `NotificationService` 中 `import TIMPush` 或 `#import <TIMPush/TIMPushManager.h>` 会失败。
|
|
318
327
|
>
|
|
319
328
|
|
|
320
|
-
|
|
329
|
+
#### 开启 `mutable-content`
|
|
321
330
|
|
|
322
331
|
`mutable-content` 是 APNs payload 字段,由发送方在推送内容中设置。只有 payload 中开启 `mutable-content`,iOS 10 及以上系统才会在送达前调用 Notification Service Extension,触达统计才能生效。请确保通过以下任一方式开启 `mutable-content`:
|
|
323
332
|
- **腾讯云控制台推送**:在控制台页面,勾选 `mutable-content` 。页面路径:控制台 > 推送服务 Push > 推送设置 > 厂商配置 > iOS > 添加/编辑证书 > 开启 mutable-content。示例图如下:
|
|
@@ -326,7 +335,7 @@ func loginIMAndRegisterPush() {
|
|
|
326
335
|
|
|
327
336
|
- **Chat SDK 发送**:以 Chat SDK 离线推送配置文档为准。
|
|
328
337
|
|
|
329
|
-
|
|
338
|
+
#### 在 Extension 中处理通知
|
|
330
339
|
|
|
331
340
|
请将 `group.<#YOUR_APP_GROUP_ID#>` 替换为您在 Apple Developer Center 和 Xcode 中配置的 App Group ID。主 App 和 Extension 必须使用同一个 App Group ID。以下 Swift 写法基于 OC 接口自动桥接,参数命名可能随 SDK 版本调整,请以 SDK 头文件 `TIMPushManager.h` 为准。
|
|
332
341
|
|
|
@@ -389,9 +398,7 @@ class NotificationService: UNNotificationServiceExtension {
|
|
|
389
398
|
@end
|
|
390
399
|
```
|
|
391
400
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
## 测试推送
|
|
401
|
+
### 步骤4:测试推送链路
|
|
395
402
|
|
|
396
403
|
完成上述集成步骤后,需要通过发送测试消息验证整体链路是否打通。发送消息前请确认:
|
|
397
404
|
1. App 已获得系统通知权限;
|
|
@@ -469,19 +476,15 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
469
476
|
|
|
470
477
|
`sendMessage` 属于 IMSDK 消息发送能力。仅集成 TIMPush 的用户不需要为了验证离线推送而额外接入完整 Chat 初始化、登录和消息发送流程。
|
|
471
478
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
## 处理通知点击跳转
|
|
479
|
+
### 步骤5:处理通知点击跳转
|
|
475
480
|
|
|
476
481
|
通知点击跳转需要三步配合完成:控制台配置点击动作、发送推送时携带跳转参数、客户端注册监听并解析参数。三步缺一则跳转不生效。
|
|
477
482
|
|
|
478
|
-
|
|
483
|
+
#### **配置控制台点击动作**
|
|
479
484
|
|
|
480
|
-
|
|
485
|
+
在腾讯云控制台选择「打开应用内指定页面」。操作路径:腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **推送设置** > **厂商配置** > **iOS** > **对应 APNs 证书** > **编辑** > 点击后续动作 > 打开应用内指定页面。
|
|
481
486
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
### 发送推送时携带 `ext`
|
|
487
|
+
#### **发送推送时携带** `ext`
|
|
485
488
|
|
|
486
489
|
发送离线推送时,通过 `ext` 字段携带跳转所需的业务信息(如目标页面、会话 ID 等)。`ext` 是一个字符串,结构由业务自定义,推荐使用 JSON 格式便于客户端解析。下文示例统一使用如下结构演示:
|
|
487
490
|
``` json
|
|
@@ -510,7 +513,7 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
510
513
|
|
|
511
514
|
通过 [`V2TIMOfflinePushInfo`](https://im.sdk.qcloud.com/doc/zh-cn/interfaceV2TIMOfflinePushInfo.html) 的 `ext` 属性携带跳转参数,再随消息一起发送。
|
|
512
515
|
|
|
513
|
-
|
|
516
|
+
如果您接入了 TUIKit,TUIKit 内置的消息发送链路会自动用 `OfflinePushExtInfo` 组装 `ext`,无需手动设置。下方示例适用于自行调用 IM SDK 发送消息的场景。
|
|
514
517
|
|
|
515
518
|
【Swift】
|
|
516
519
|
``` swift
|
|
@@ -565,7 +568,7 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
565
568
|
}];
|
|
566
569
|
```
|
|
567
570
|
|
|
568
|
-
|
|
571
|
+
#### **客户端注册监听并解析** `ext`
|
|
569
572
|
|
|
570
573
|
请在 AppDelegate 中遵循 TIMPushListener 协议,在 `didFinishLaunchingWithOptions` 中调用 addPushListener 注册监听器,并在 onNotificationClicked 中解析 `ext` 后跳转到业务页面。
|
|
571
574
|
|
|
@@ -662,63 +665,5 @@ class AppDelegate: UIResponder, UIApplicationDelegate, TIMPushListener {
|
|
|
662
665
|
|
|
663
666
|
**验证**:点击通知后 `onNotificationClicked` 被调用,且 `ext` 内容与发送时设置的一致。如果回调未触发,请检查:控制台点击动作是否选择了**打开应用内指定页面**、监听器是否在 `didFinishLaunchingWithOptions` 中注册、发送消息时是否设置了 `ext`。
|
|
664
667
|
|
|
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
|
-
### 仍无法解决
|
|
668
|
+
## 接入排查
|
|
724
669
|
|
|
@@ -278,6 +278,7 @@ npm run ios
|
|
|
278
278
|
|
|
279
279
|
### 步骤7:消息推送触达统计
|
|
280
280
|
|
|
281
|
-
|
|
281
|
+
如果您需要统计设备触达数据,请按照 华为/荣耀/vivo/魅族/iOS 步骤完成配置。其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
|
|
282
|
+
|
|
283
|
+
## 接入排查
|
|
282
284
|
|
|
283
|
-
如果接入完成收不到推送,请使用 [排查工具](https://cloud.tencent.com/document/product/269/100629) 查看具体原因。
|
|
@@ -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
|
|
|
@@ -280,6 +280,7 @@ PushManager.RegisterPush(sdkAppId: 您的sdkAppId, appKey: "客户端密钥", ne
|
|
|
280
280
|
|
|
281
281
|
### 步骤6:消息推送触达统计
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
如果您需要统计设备触达数据,请按照 华为/荣耀/vivo/魅族/iOS 完成配置。其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
|
|
284
|
+
|
|
285
|
+
## 接入排查
|
|
284
286
|
|
|
285
|
-
接入完成收不到推送,请使用 [排查工具](https://cloud.tencent.com/document/product/269/100629) 查看具体原因。
|
|
@@ -258,9 +258,9 @@ PushManager::GetInstance()->RegisterPush(您的 sdkAppId, "您的 appKey", callb
|
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
### 步骤6:消息推送触达统计
|
|
261
|
-
-
|
|
261
|
+
- 如果您需要统计 Android 设备触达数据,请按照 华为/荣耀/vivo/魅族 配置。
|
|
262
262
|
|
|
263
|
-
-
|
|
263
|
+
- 如果您需要统计 iOS 设备触达数据,
|
|
264
264
|
|
|
265
265
|
1. 在上文的推送参数配置章节中,将“YourGroupID”修改为自己的 App Group ID。
|
|
266
266
|
|
|
@@ -291,4 +291,5 @@ PushManager::GetInstance()->RegisterPush(您的 sdkAppId, "您的 appKey", callb
|
|
|
291
291
|
```
|
|
292
292
|
- 其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
|
|
293
293
|
|
|
294
|
-
|
|
294
|
+
## 接入排查
|
|
295
|
+
|
|
@@ -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
|
+
- 退房前需要手动停止屏幕分享吗?
|