@tencentcloud/sdk-mcp 1.7.3 → 1.7.5
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 +23 -0
- package/README.md +22 -23
- package/knowledge/path-meta.js +23 -1
- package/package.json +1 -1
- 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 +8 -4
- package/resource/integration/callkit/preset/ios/integration.md +16 -15
- package/resource/integration/callkit/preset/react/integration.md +2 -2
- package/resource/integration/callkit/preset/vue/integration.md +9 -12
- package/resource/integration/chat/preset/android/integration.md +5 -147
- package/resource/integration/chat/preset/flutter/integration.md +22 -130
- package/resource/integration/chat/preset/ios/integration.md +12 -279
- 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/ios/prepare-integration.md +3 -3
- 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 +152 -652
- 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/android/answer-call.md +2 -2
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +5 -5
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +7 -7
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +10 -10
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -1
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +18 -16
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +16 -14
- 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 +2 -86
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +2 -104
- package/resource/knowledge/callkit/core-sdk/web/call-event.md +2 -2
- package/resource/knowledge/callkit/faq/android.md +4 -4
- package/resource/knowledge/callkit/faq/common.md +4 -4
- 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/preset/android-view/integration.md +54 -102
- package/resource/knowledge/chat/preset/ios/features/language.md +5 -5
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +194 -926
- 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/message-input.md +4 -4
- 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/android/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/uni-app/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +3 -170
- 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 +3 -3
- 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 +3 -3
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +3 -3
- 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 +3 -3
- 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 +13 -78
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +5 -70
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +10 -10
- 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 +4 -4
- 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 +4 -4
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +7 -7
- 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/donut.md +3 -3
- package/resource/knowledge/push/config/harmonyos.md +12 -12
- package/resource/knowledge/push/config/ios.md +2 -2
- package/resource/knowledge/push/integration/android.md +90 -1067
- package/resource/knowledge/push/integration/donut.md +11 -11
- package/resource/knowledge/push/integration/flutter.md +38 -24
- package/resource/knowledge/push/integration/harmonyos.md +1 -11
- package/resource/knowledge/push/integration/ios.md +29 -40
- package/resource/knowledge/push/integration/react-native.md +1 -1
- package/resource/knowledge/push/integration/uni-app.md +1 -1
- package/resource/knowledge/push/integration/unity.md +4 -4
- package/resource/knowledge/push/integration/unreal-engine.md +9 -9
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +6 -6
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +13 -13
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +5 -5
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -4
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +6 -6
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -4
- 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/recording.md +3 -3
- 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 +3 -6
- package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +0 -15
- package/resource/knowledge/roomkit/preset/android/integration.md +5 -202
- package/resource/knowledge/roomkit/preset/flutter/integration.md +17 -13
- package/resource/knowledge/roomkit/preset/harmonyos/integration.md +10 -2
- package/resource/knowledge/roomkit/preset/ios/integration.md +7 -204
- package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +244 -500
- package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
- package/server.js +1 -1
- package/utils/preflight-route.js +203 -185
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
## 前提条件
|
|
2
|
-
|
|
2
|
+
- 在 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/intro/) 中开启推送服务,默认支持在线推送。
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
- 如果您需要使用离线推送,请先完成对应原生平台的推送前提配置:请参见 [iOS 前提条件](https://cloud.tencent.com/document/product/269/100627#.E5.89.8D.E6.8F.90.E6.9D.A1.E4.BB.B6) 和 [Android 前提条件](https://cloud.tencent.com/document/product/269/100626#.E5.89.8D.E6.8F.90.E6.9D.A1.E4.BB.B6)。
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
- 微信开发者工具版本需 ≥ 1.06.2410152,您可进入 [下载地址](https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html) 进行版本下载。
|
|
7
7
|
|
|
8
8
|
## 操作步骤
|
|
9
9
|
|
|
@@ -60,18 +60,18 @@
|
|
|
60
60
|
1. 配置证书和描述文件。
|
|
61
61
|
|
|
62
62
|
请参见 [微信小程序多端框架配置文档](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/handbook/certificate/ios.html) 或 [腾讯云推送厂商配置文档](https://cloud.tencent.com/document/product/269/100624) 以生成 iOS 应用运行时所需的证书和 Provisioning Profile,这些文件将在后续配置中使用。您需要准备以下文件:
|
|
63
|
-
|
|
63
|
+
- **开发证书.p12**
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
- **主 App 描述文件.mobileprovision**
|
|
66
66
|
|
|
67
67
|
2. Apple Developer 平台 Bundle ID 配置。
|
|
68
68
|
|
|
69
69
|
请参见 [Apple Developer 平台 Bundle ID 配置指引](https://dev.weixin.qq.com/docs/miniapp/handbook/web/set-bundleid.html),配置时请勾选以下能力:
|
|
70
|
-
|
|
70
|
+
- **Push Notification**
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
- **App Group (按需配置:字段配置可参见** [生成 App GroupID](https://cloud.tencent.com/document/product/269/100624#778049b7-7ce0-4953-95fd-da523cca0bd4)**)**
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
- Donut 建议的权限:Access WiFi Information、Associated Domains、Hotspot、Wireless Accessory Configuration;如果使用苹果登录,还需开启 Sign In with Apple(更多其他权限开发者按需开启,并非越多越好哈)
|
|
75
75
|
|
|
76
76
|
3. 在 Donut 控制台里绑定移动应用的 Bundle ID。
|
|
77
77
|
|
|
@@ -106,11 +106,11 @@
|
|
|
106
106
|
>
|
|
107
107
|
|
|
108
108
|
您需要准备以下文件:
|
|
109
|
-
|
|
109
|
+
- **开发证书.p12 (之前步骤已经准备完毕)**
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
- **主 App 描述文件.mobileprovision (之前步骤已经准备完毕)**
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
- **Service Extension 的描述文件.mobileprovision(本次功能需要新增的描述文件)**
|
|
114
114
|
|
|
115
115
|
当您准备好以上文件后,可以按照描述填入相关信息:
|
|
116
116
|
|
|
@@ -2,45 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
## 前提条件
|
|
4
4
|
|
|
5
|
-
开始接入前,请先完成目标平台的推送前提配置,并准备好注册所需参数。按平台查看:
|
|
6
|
-
|
|
7
5
|
【Android】
|
|
8
6
|
|
|
9
|
-
请确认已 开通 Push 服务,并按需完成 Android 厂商配置(小米 / 华为 / OPPO / vivo / 荣耀 / 魅族 / Google FCM)。
|
|
10
|
-
|
|
11
|
-
|资源|用途|
|
|
12
|
-
|---------|---------|
|
|
13
|
-
|`SDKAppID`、客户端密钥(Push Key)|调用 `registerPush`|
|
|
14
|
-
|`timpush-configs.json`|放入 Android 应用模块 `assets`|
|
|
15
|
-
|目标厂商配置文件(如有)|华为、荣耀、Google FCM 等按厂商要求放入工程|
|
|
16
|
-
|工程 `applicationId`|与厂商平台应用包名一致|
|
|
17
|
-
|TIMPush 版本号 `VERSION`|厂商通道包依赖版本,见 更新日志|
|
|
18
|
-
|
|
19
|
-
完整资源清单与获取路径见 Android 前提条件。
|
|
7
|
+
请确认已 开通 Push 服务,并按需完成 Android 厂商配置(小米 / 华为 / OPPO / vivo / 荣耀 / 魅族 / Google FCM)。
|
|
20
8
|
|
|
21
9
|
【iOS】
|
|
22
10
|
|
|
23
|
-
请确认已 开通 Push 服务 并完成 iOS 厂商配置。
|
|
24
|
-
|
|
25
|
-
|资源|用途|
|
|
26
|
-
|---------|---------|
|
|
27
|
-
|`SDKAppID`、Push Key|调用 `registerPush`|
|
|
28
|
-
|证书 ID(`businessID` / `apnsCertificateID`)|腾讯云控制台上传 APNs 证书后生成,经 `registerPush` 传入|
|
|
29
|
-
|App Group ID(可选)|仅触达统计需要,经 `registerPush` 的 `applicationGroupID` 传入|
|
|
11
|
+
请确认已 开通 Push 服务 并完成 iOS 厂商配置。
|
|
30
12
|
|
|
31
|
-
|
|
13
|
+
【HarmonyOS】
|
|
32
14
|
|
|
33
|
-
|
|
15
|
+
请确认已 开通 Push 服务 并完成 [HarmonyOS 厂商配置](https://cloud.tencent.com/document/product/269/108856)。
|
|
34
16
|
|
|
35
17
|
## AI 集成
|
|
36
18
|
|
|
37
|
-
通过 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
|
|
19
|
+
通过 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 输入“集成 Flutter 离线推送”“帮我集成 Flutter TIMPush”等需求,AI 将根据项目类型引导您完成环境检测、厂商通道配置、凭据填写、代码接入和验证等步骤。详情可参考 AI Coding。
|
|
38
20
|
|
|
39
21
|
## 手动集成
|
|
40
22
|
|
|
41
23
|
### 步骤1:集成 TIMPush SDK
|
|
42
24
|
|
|
43
|
-
|
|
25
|
+
如果您想手动集成,请按顺序完成下述步骤。
|
|
44
26
|
|
|
45
27
|
#### 集成 Flutter 插件
|
|
46
28
|
|
|
@@ -209,6 +191,34 @@ import tencent_cloud_chat_push
|
|
|
209
191
|
}
|
|
210
192
|
```
|
|
211
193
|
|
|
194
|
+
【HarmonyOS】
|
|
195
|
+
1. 参考 [鸿蒙 Flutter 仓库文档](https://gitcode.com/CPF-Flutter/flutter_flutter/tree/oh-3.35.7-release) 的开发指南搭建环境。
|
|
196
|
+
|
|
197
|
+
2. 在您项目的 pubspec.yaml 中依赖重写(dependency_overrides)鸿蒙适配的第三方库:
|
|
198
|
+
|
|
199
|
+
``` java
|
|
200
|
+
dependency_overrides:
|
|
201
|
+
# ... 已有的 override 保持不变 ...
|
|
202
|
+
# HarmonyOS 专用(仅在使用 Flutter-OH 构建时启用,构建 Android/iOS 时请注释掉)
|
|
203
|
+
path_provider:
|
|
204
|
+
git:
|
|
205
|
+
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
|
|
206
|
+
path: "packages/path_provider/path_provider"
|
|
207
|
+
ref: "provider-v2.1.5-ohos-1.0.0"
|
|
208
|
+
shared_preferences:
|
|
209
|
+
git:
|
|
210
|
+
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
|
|
211
|
+
path: "packages/shared_preferences/shared_preferences"
|
|
212
|
+
ref: "shared_preferences-v2.5.4-ohos-1.0.0"
|
|
213
|
+
```
|
|
214
|
+
3. 添加 `timpush-configs.json` 文件到您项目中 `ohos/entry/src/main/resources/rawfile/timpush-configs.json`,文件内容中的 `businessID` 值是在厂商配置中 [腾讯云 IM 控制台配置](https://cloud.tencent.com/document/product/269/108856#e87ea0c0-b307-4ce1-b8d3-aed8e9aed5ce) 得到的证书 ID。
|
|
215
|
+
|
|
216
|
+
``` java
|
|
217
|
+
{
|
|
218
|
+
"businessID": "替换成您的证书 ID"
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
212
222
|
### 步骤2:注册推送服务
|
|
213
223
|
|
|
214
224
|
registerPush 用于向 TIMPush 注册当前设备的推送 token。注册成功后,TIMPush 会为当前设备建立一个推送目标标识 `registrationID`;服务端、控制台接入测试和排查工具可以使用该标识向这台设备下发离线推送。若 App 同时接入 IM 并完成登录,也可以使用 `userID` 向该用户已建立推送关系的设备下发离线推送。
|
|
@@ -338,6 +348,10 @@ Flutter 额外确认两点:
|
|
|
338
348
|
|
|
339
349
|
2. `ios/Runner/AppDelegate.swift` 中已实现 `applicationGroupID()`。
|
|
340
350
|
|
|
351
|
+
【HarmonyOS】
|
|
352
|
+
|
|
353
|
+
请按 [HarmonyOS 配置消息触达统计](https://cloud.tencent.com/document/product/269/108892#daa658b0-1ac0-44a8-8a47-7ec8822ebe82) 完成配置。Flutter 侧无额外 Dart 代码。
|
|
354
|
+
|
|
341
355
|
### 步骤4:测试推送链路
|
|
342
356
|
|
|
343
357
|
完成上述集成步骤后,需要通过发送测试消息验证链路是否打通。
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
## 前提条件
|
|
2
2
|
|
|
3
|
-
请确认已 开通 Push 服务 并完成
|
|
4
|
-
|
|
5
|
-
|资源|获取位置|用途|
|
|
6
|
-
|---------|---------|---------|
|
|
7
|
-
|`SDKAppID`|腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **概览**|调用 `registerPush`。创建 Push 应用后,腾讯云控制台会自动创建相同 `SDKAppID` 的 Chat 应用。|
|
|
8
|
-
|Push Key|腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **概览** > **客户端密钥**|独立 Push 场景下,作为 `registerPush` 的 `appKey` 参数。|
|
|
9
|
-
|Chat Key|腾讯云控制台 > 即时通信 IM > **消息服务 Chat** > **概览** > **密钥**|Chat 登录使用。不要把 Chat Key 当作 `registerPush` 的 `appKey` 传入。|
|
|
10
|
-
|Push 服务开通状态|腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **概览**|创建 Push 应用不等于已开通 Push 服务,请确认 Push 服务已开通。|
|
|
11
|
-
|TIMPush iOS `VERSION`|更新日志|`VERSION` 是 Podfile 中 TIMPush 依赖的版本号占位符,例如 `8.9.7537`、`8.8.7357`、`8.7.7201` 等,请以实际接入版本为准。|
|
|
12
|
-
|
|
13
|
-
本文示例中的 `VERSION`、`SDKAppID`、`appKey`均为占位符,请勿在代码仓库中提交真实密钥。
|
|
3
|
+
请确认已 开通 Push 服务 并完成 厂商配置。
|
|
14
4
|
|
|
15
5
|
## AI 集成
|
|
16
6
|
|
|
@@ -2,30 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## 前提条件
|
|
4
4
|
|
|
5
|
-
请确认已 开通 Push 服务 并完成 iOS
|
|
5
|
+
请确认已 开通 Push 服务 并完成 iOS 厂商配置。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|---------|---------|---------|
|
|
9
|
-
|`SDKAppID`|腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **概览**|调用 `registerPush`。创建 Push 应用后,腾讯云控制台会自动创建相同 `SDKAppID` 的 Chat 应用。|
|
|
10
|
-
|Push Key|腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **概览** > **客户端密钥**|独立 Push 场景下,作为 `registerPush` 的 `appKey` 参数。|
|
|
11
|
-
|Chat Key|腾讯云控制台 > 即时通信 IM > **消息服务 Chat** > **概览** > **密钥**|Chat 登录使用。不要把 Chat Key 当作 `registerPush` 的 `appKey` 传入。|
|
|
12
|
-
|证书 ID|腾讯云控制台上传 APNs 证书后生成|证书 ID 即 `businessID`,在 AppDelegate 中返回给 TIMPush。|
|
|
13
|
-
|App Group ID|Apple Developer Center / **Xcode Capabilities**|仅在需要推送触达统计时使用。|
|
|
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`等,请以实际接入版本为准。|
|
|
16
|
-
|
|
17
|
-
本文示例中的 `VERSION`、`SDKAppID`、`AppKey`、`businessID`、App Group ID 均为占位符,请勿在代码仓库中提交真实密钥。
|
|
18
|
-
|
|
19
|
-
## AI 集成
|
|
7
|
+
## 方式1:AI 集成
|
|
20
8
|
|
|
21
9
|
通过 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
10
|
|
|
23
|
-
##
|
|
11
|
+
## 方式2:手动集成
|
|
24
12
|
|
|
25
13
|
### 步骤1:集成 TIMPush SDK
|
|
26
14
|
|
|
27
|
-
如果你想手动集成,请按顺序完成下文配置。
|
|
28
|
-
|
|
29
15
|
#### 在主 App target 中集成 TIMPush
|
|
30
16
|
|
|
31
17
|
TIMPush 通过 CocoaPods 集成。请在 `Podfile` 中为主 App target 添加 TIMPush 依赖。Podfile 示例:
|
|
@@ -54,7 +40,7 @@ end
|
|
|
54
40
|
pod install
|
|
55
41
|
```
|
|
56
42
|
|
|
57
|
-
如果无法安装 TIMPush 最新版本,可先执行 `pod repo update` 更新本地 CocoaPods 仓库列表后再 `pod install
|
|
43
|
+
如果无法安装 TIMPush 最新版本,可先执行 `pod repo update` 更新本地 CocoaPods 仓库列表后再 `pod install`。
|
|
58
44
|
|
|
59
45
|
> **注意:**
|
|
60
46
|
> 无论 Swift 还是 Objective-C 项目,都请集成 TXIMSDK_Plus_iOS_XCFramework。
|
|
@@ -117,8 +103,6 @@ import TIMPush
|
|
|
117
103
|
}
|
|
118
104
|
```
|
|
119
105
|
|
|
120
|
-
**验证**:在 Apple Developer Center 和 Xcode 中确认主 App 与 Notification Service Extension 已绑定到同一个 App Group ID,且 AppDelegate 返回的 `group.<#YOUR_APP_GROUP_ID#>` 与之一致。
|
|
121
|
-
|
|
122
106
|
### 步骤2:注册推送服务
|
|
123
107
|
|
|
124
108
|
#### 调用 registerPush
|
|
@@ -145,7 +129,7 @@ registerPush 用于向 TIMPush 注册当前设备的推送 token。注册成功
|
|
|
145
129
|
|
|
146
130
|
【App 冷启动注册 TIMPush(appKey 传 Push Key)】
|
|
147
131
|
|
|
148
|
-
App 冷启动、用户同意隐私政策后调用 `registerPush(appKey = Push Key)
|
|
132
|
+
App 冷启动、用户同意隐私政策后调用 `registerPush(appKey = Push Key)`。建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
149
133
|
|
|
150
134
|
【Swift】
|
|
151
135
|
``` swift
|
|
@@ -159,6 +143,10 @@ func registerTIMPush() {
|
|
|
159
143
|
|
|
160
144
|
TIMPushManager.registerPush(sdkAppID, appKey: appKey, succ: { deviceToken in
|
|
161
145
|
print(">>>>> TIMPush register success")
|
|
146
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
147
|
+
TIMPushManager.getRegistrationID { registrationID in
|
|
148
|
+
print(">>>>> TIMPush registrationID: \(registrationID)")
|
|
149
|
+
}
|
|
162
150
|
}, fail: { code, desc in
|
|
163
151
|
print(">>>>> TIMPush register failed, code:\(code), desc:\(desc)")
|
|
164
152
|
})
|
|
@@ -174,11 +162,14 @@ func registerTIMPush() {
|
|
|
174
162
|
int sdkAppID = 0;
|
|
175
163
|
// TODO: Replace @"<#YOUR_PUSH_KEY#>" with your Push Key.
|
|
176
164
|
NSString *appKey = @"<#YOUR_PUSH_KEY#>";
|
|
177
|
-
|
|
178
165
|
[TIMPushManager registerPush:sdkAppID
|
|
179
166
|
appKey:appKey
|
|
180
167
|
succ:^(NSData * _Nonnull deviceToken) {
|
|
181
168
|
NSLog(@">>>>> TIMPush register success");
|
|
169
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
170
|
+
[TIMPushManager getRegistrationID:^(NSString * _Nonnull registrationID) {
|
|
171
|
+
NSLog(@">>>>> TIMPush registrationID: %@", registrationID);
|
|
172
|
+
}];
|
|
182
173
|
} fail:^(int code, NSString * _Nonnull desc) {
|
|
183
174
|
NSLog(@">>>>> TIMPush register failed, code:%d, desc:%@", code, desc);
|
|
184
175
|
}];
|
|
@@ -188,7 +179,7 @@ func registerTIMPush() {
|
|
|
188
179
|
|
|
189
180
|
【IM 登录后注册推送(appKey 传 null)】
|
|
190
181
|
|
|
191
|
-
请在 IM `login` 成功回调中调用 `registerPush(appKey = nil)
|
|
182
|
+
请在 IM `login` 成功回调中调用 `registerPush(appKey = nil)`。建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
192
183
|
|
|
193
184
|
【Swift】
|
|
194
185
|
``` swift
|
|
@@ -210,6 +201,10 @@ func loginIMAndRegisterPush() {
|
|
|
210
201
|
V2TIMManager.sharedInstance().login(userID: userID, userSig: userSig) {
|
|
211
202
|
TIMPushManager.registerPush(sdkAppID, appKey: "", succ: { deviceToken in
|
|
212
203
|
print(">>>>> TIMPush register success")
|
|
204
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
205
|
+
TIMPushManager.getRegistrationID { registrationID in
|
|
206
|
+
print(">>>>> TIMPush registrationID: \(registrationID)")
|
|
207
|
+
}
|
|
213
208
|
}, fail: { code, desc in
|
|
214
209
|
print(">>>>> TIMPush register failed, code:\(code), desc:\(desc)")
|
|
215
210
|
})
|
|
@@ -242,6 +237,10 @@ func loginIMAndRegisterPush() {
|
|
|
242
237
|
appKey:nil
|
|
243
238
|
succ:^(NSData * _Nonnull deviceToken) {
|
|
244
239
|
NSLog(@">>>>> TIMPush register success");
|
|
240
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
241
|
+
[TIMPushManager getRegistrationID:^(NSString * _Nonnull registrationID) {
|
|
242
|
+
NSLog(@">>>>> TIMPush registrationID: %@", registrationID);
|
|
243
|
+
}];
|
|
245
244
|
} fail:^(int code, NSString * _Nonnull desc) {
|
|
246
245
|
NSLog(@">>>>> TIMPush register failed, code:%d, desc:%@", code, desc);
|
|
247
246
|
}];
|
|
@@ -253,16 +252,10 @@ func loginIMAndRegisterPush() {
|
|
|
253
252
|
|
|
254
253
|
> **警告:**
|
|
255
254
|
>
|
|
256
|
-
>
|
|
255
|
+
> 如果您的业务仅使用即时通信 IM 聊天能力,请勿在 IM 登录前先调用 `registerPush`。否则 SDK 可能会按独立推送场景注册 Push 类型账号,并产生对应的 Push DAU。Push DAU 超出套餐额度后,可能会产生额外费用。
|
|
257
256
|
>
|
|
258
257
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
1. `registerPush` 的 `onSuccess` 回调被触发。
|
|
262
|
-
|
|
263
|
-
2. 登录腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **推送排查**,按当前场景输入 `registrationID` 或 `userID`,确认 token 已上传。
|
|
264
|
-
|
|
265
|
-
3. 如触发 `onError`,可按 错误码 查询 `code` 含义。
|
|
258
|
+
**验证**:`registerPush` 的 `onSuccess` 回调被触发。如触发 `onError`,可按 错误码 查询 `code` 含义。
|
|
266
259
|
|
|
267
260
|
#### 自定义 registrationID(可选)
|
|
268
261
|
|
|
@@ -322,7 +315,7 @@ func loginIMAndRegisterPush() {
|
|
|
322
315
|
|
|
323
316
|
#### 在 Extension 中处理通知
|
|
324
317
|
|
|
325
|
-
请将 `group.<#YOUR_APP_GROUP_ID#>` 替换为您在 Apple Developer Center 和 Xcode 中配置的 App Group ID。主 App 和 Extension 必须使用同一个 App Group ID
|
|
318
|
+
请将 `group.<#YOUR_APP_GROUP_ID#>` 替换为您在 Apple Developer Center 和 Xcode 中配置的 App Group ID。主 App 和 Extension 必须使用同一个 App Group ID。
|
|
326
319
|
|
|
327
320
|
【Swift】
|
|
328
321
|
``` swift
|
|
@@ -469,7 +462,7 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
469
462
|
|
|
470
463
|
在腾讯云控制台选择「打开应用内指定页面」。操作路径:腾讯云控制台 > 即时通信 IM > **推送服务 Push** > **推送设置** > **厂商配置** > **iOS** > **对应 APNs 证书** > **编辑** > 点击后续动作 > 打开应用内指定页面。
|
|
471
464
|
|
|
472
|
-
####
|
|
465
|
+
#### **发送推送时携带**跳转参数
|
|
473
466
|
|
|
474
467
|
发送离线推送时,通过 `ext` 字段携带跳转所需的业务信息(如目标页面、会话 ID 等)。`ext` 是一个字符串,结构由业务自定义,推荐使用 JSON 格式便于客户端解析。下文示例统一使用如下结构演示:
|
|
475
468
|
``` json
|
|
@@ -498,7 +491,7 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
498
491
|
|
|
499
492
|
通过 [`V2TIMOfflinePushInfo`](https://im.sdk.qcloud.com/doc/zh-cn/interfaceV2TIMOfflinePushInfo.html) 的 `ext` 属性携带跳转参数,再随消息一起发送。
|
|
500
493
|
|
|
501
|
-
|
|
494
|
+
如果您接入了 TUIKit,TUIKit 内置的消息发送链路会自动用 `OfflinePushExtInfo` 组装 `ext`,无需手动设置。下方示例适用于自行调用 IM SDK 发送消息的场景。
|
|
502
495
|
|
|
503
496
|
【Swift】
|
|
504
497
|
``` swift
|
|
@@ -553,11 +546,9 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
553
546
|
}];
|
|
554
547
|
```
|
|
555
548
|
|
|
556
|
-
####
|
|
557
|
-
|
|
558
|
-
请在 AppDelegate 中遵循 TIMPushListener 协议,在 `didFinishLaunchingWithOptions` 中调用 addPushListener 注册监听器,并在 onNotificationClicked 中解析 `ext` 后跳转到业务页面。
|
|
549
|
+
#### **客户端注册监听并解析**跳转参数
|
|
559
550
|
|
|
560
|
-
|
|
551
|
+
请在 AppDelegate 中遵循 TIMPushListener 协议,在 `didFinishLaunchingWithOptions` 中调用 addPushListener 注册监听器,并在 onNotificationClicked 中解析 `ext` 后跳转到业务页面。如果您接入了 TUIKit 并使用 `OfflinePushExtInfo` 组装的 `ext`,可改为 `OfflinePushExtInfo.create(withExtString:)` 解析后再跳转。
|
|
561
552
|
|
|
562
553
|
【Swift】
|
|
563
554
|
``` swift
|
|
@@ -648,7 +639,5 @@ class AppDelegate: UIResponder, UIApplicationDelegate, TIMPushListener {
|
|
|
648
639
|
@end
|
|
649
640
|
```
|
|
650
641
|
|
|
651
|
-
**验证**:点击通知后 `onNotificationClicked` 被调用,且 `ext` 内容与发送时设置的一致。如果回调未触发,请检查:控制台点击动作是否选择了**打开应用内指定页面**、监听器是否在 `didFinishLaunchingWithOptions` 中注册、发送消息时是否设置了 `ext`。
|
|
652
|
-
|
|
653
642
|
## 接入排查
|
|
654
643
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
### 步骤1:集成 TencentCloud-Push
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
如果您想手动集成,请按下述步骤依次完成下载插件并导入 HBuilderX、配置离线推送文件。
|
|
22
22
|
|
|
23
23
|
#### 下载插件并导入 HBuilderX
|
|
24
24
|
1. 完成上述「前提条件」中目标平台的厂商配置后,打开 [uni-app 腾讯云推送服务(Push)](https://ext.dcloud.net.cn/plugin),单击**下载插件并导入 HBuilderX**,将插件导入 HBuilderX 工程中。
|
|
@@ -112,7 +112,7 @@ android {
|
|
|
112
112
|
> 以下荣耀的适配仅 7.7.5283 及以上版本需要配置。
|
|
113
113
|
>
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
1. 下载配置文件添加到工程根目录 **Assets/Plugins/Android/JsonConfigs** 目录下,**该目录需要手动创建**。
|
|
116
116
|
|
|
117
117
|
【华为】
|
|
118
118
|
|
|
@@ -128,7 +128,7 @@ android {
|
|
|
128
128
|
|
|
129
129
|
配置文件的放置位置如下所示:
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
2. 在 **Assets/Plugins/Android/baseProjectTemplate.gradle** 文件中 **buildscript** > **dependencies** 下添加以下配置(如果是需要新增 `buildscript` 建议放在文件最上面):
|
|
132
132
|
|
|
133
133
|
【Gradle 7.1 及以上版本】
|
|
134
134
|
|
|
@@ -233,7 +233,7 @@ allprojects {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
```
|
|
236
|
-
|
|
236
|
+
3. 在 **Assets/Plugins/Android/launcherTemplate.gradle** 文件中添加下方配置:
|
|
237
237
|
|
|
238
238
|
``` java
|
|
239
239
|
apply plugin: 'com.google.gms.google-services'
|
|
@@ -280,7 +280,7 @@ PushManager.RegisterPush(sdkAppId: 您的sdkAppId, appKey: "客户端密钥", ne
|
|
|
280
280
|
|
|
281
281
|
### 步骤6:消息推送触达统计
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
如果您需要统计设备触达数据,请按照 华为/荣耀/vivo/魅族/iOS 完成配置。其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
|
|
284
284
|
|
|
285
285
|
## 接入排查
|
|
286
286
|
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
|
|
21
21
|
3. 开启远程推送能力。完成证书 ID 配置之后,您需要开启应用的 Push Notifications 能力:
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
- 如果您的 UE 引擎是从源代码自行编译构建的,您可以通过 “项目设置 > iOS 中勾选 Enable Remote Notifications Support” 来开启对应能力;
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
- 如果您的 UE 引擎是从 Epic Game 下载的,您可以通过打开 “`<proj_dir>/Config/DefaultEngine.ini`” ,在脚本的 `IOSRuntimeSettings` 中添加:
|
|
26
26
|
|
|
27
27
|
``` plaintext
|
|
28
28
|
// Some code
|
|
29
29
|
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
|
|
30
30
|
bEnableRemoteNotificationsSupport=True
|
|
31
31
|
```
|
|
32
|
-
|
|
32
|
+
- 或者,您也可以选择在项目根目录中使用 Xcode 打开 UE 生成的 YourProject.xcworkspace,在 Project > Target 中,点击 Signing & Capabilities 选项,点击左上角 Capability,搜索添加 Push Notifications 能力到您的项目中
|
|
33
33
|
|
|
34
34
|
【Android】
|
|
35
35
|
|
|
@@ -258,17 +258,17 @@ 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
|
|
|
267
|
-
|
|
267
|
+
2. 参考 iOS 配置消息触达统计 完成 App Group ID、Notification Service Extension 和 mutable-content 配置。
|
|
268
268
|
|
|
269
|
-
|
|
269
|
+
3. 将项目根目录的 Plugins-TIMPush-Source-ThirdParty-TIMPushLibrary-iOS 路径中的两个 framework 压缩包解压缩,并在 Xcode 项目中将内部的 .framework 文件夹添加到您的 pushservice target 之中。
|
|
270
270
|
|
|
271
|
-
|
|
271
|
+
4. 在 Notification Service Extension 的 -didReceiveNotificationRequest:withContentHandler: 方法中调用推送抵达率统计函数:
|
|
272
272
|
|
|
273
273
|
``` objectivec
|
|
274
274
|
@implementation NotificationService
|
|
@@ -79,7 +79,7 @@ fun createAndJoinRoom() {
|
|
|
79
79
|
| --- | --- | --- | --- |
|
|
80
80
|
| <code>roomID</code> | <code>String</code> | 是 | - 字符串类型的房间唯一标识符。<br>- 限制长度为 0-48 字节。<br>- 建议仅包含数字、英文字母(区分大小写)、下划线(_)和连字符(-)。避免使用空格和中文字符。 |
|
|
81
81
|
| <code>roomType</code> | <code>RoomType</code> | 是 | 房间类型<br>- <code>STANDARD</code>:标准房间(默认值)。<br>- <code>WEBINAR</code>:大型研讨会房间。<br>多人会议场景这里填写 <code>STANDARD</code> 房间类型。 |
|
|
82
|
-
| <code>options</code> | <code>CreateRoomOptions</code> | 是 | - 创建房间配置对象。<br>-
|
|
82
|
+
| <code>options</code> | <code>CreateRoomOptions</code> | 是 | - 创建房间配置对象。<br>- 详细用法请参考:<a href="#a065626d-21a2-476e-bbaf-65bca29b44d2">CreateRoomOptions 结构体详细说明</a> |
|
|
83
83
|
| <code>completion</code> | <code>CompletionHandler</code> | 否 | 操作完成回调,用于返回创建和加入房间的结果。若创建失败则会返回错误码和错误信息。 |
|
|
84
84
|
|
|
85
85
|
##### CreateRoomOptions 结构体详细说明
|
|
@@ -225,8 +225,8 @@ fun updateRoomInfo() {
|
|
|
225
225
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
226
226
|
| --- | --- | --- | --- |
|
|
227
227
|
| <code>roomID</code> | <code>String</code> | 是 | - 字符串类型的房间唯一标识符。<br>- 限制长度为 0-48 字节。<br>- 建议仅包含数字、英文字母(区分大小写)、下划线(_)和连字符(-)。避免使用空格和中文字符。 |
|
|
228
|
-
| <code>options</code> | <code>UpdateRoomOptions</code> | 是 | - 更新房间属性配置对象。<br>-
|
|
229
|
-
| <code>modifyFlagList</code> | <code>List<UpdateRoomOptions.ModifyFlag></code> | 是 | - 更新房间属性修改标志位。目前支持更新<strong>房间名称</strong>、<strong>房间密码</strong>。<br>-
|
|
228
|
+
| <code>options</code> | <code>UpdateRoomOptions</code> | 是 | - 更新房间属性配置对象。<br>- 详细用法请参考:<a href="#UpdateRoomOptionsStruct">UpdateRoomOptions 结构体详细说明</a> |
|
|
229
|
+
| <code>modifyFlagList</code> | <code>List<UpdateRoomOptions.ModifyFlag></code> | 是 | - 更新房间属性修改标志位。目前支持更新<strong>房间名称</strong>、<strong>房间密码</strong>。<br>- 详细用法请参考:<a href="#UpdateRoomOptions.ModifyFlag">UpdateRoomOptions.ModifyFlag 详细说明</a>。 |
|
|
230
230
|
| <code>completion</code> | <code>CompletionHandler</code> | 否 | 操作完成回调,用于返回更新房间信息的结果。若更新失败则会返回错误码和错误信息。 |
|
|
231
231
|
|
|
232
232
|
**UpdateRoomOptions 结构体详细说明**
|
|
@@ -346,11 +346,11 @@ private fun subscribeCurrentRoomState() {
|
|
|
346
346
|
|
|
347
347
|
- **更新机制与频率控制:**
|
|
348
348
|
|
|
349
|
-
|
|
349
|
+
- 无论是即时触发还是延迟触发,所有的人数变更通知都是以消息的形式在房间内广播的。
|
|
350
350
|
|
|
351
|
-
|
|
351
|
+
- 房间内每秒的消息总量有上限,单房间消息频控是**每秒 40 条消息**。
|
|
352
352
|
|
|
353
|
-
|
|
353
|
+
- **关键点:**在“弹幕风暴”消息流量极高的场景下,如果房间内的消息速率超过了 40条/秒 的阈值,为了保证核心消息(例如弹幕)的送达,**人数变更的消息可能会被频控策略丢弃**。
|
|
354
354
|
|
|
355
355
|
**这对开发者意味着什么?**
|
|
356
356
|
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
#### **1. 预定房间**
|
|
32
32
|
|
|
33
33
|
##### 实现方式:
|
|
34
|
-
|
|
34
|
+
1. **配置预定房间初始化参数:**初始化`ScheduleRoomOptions`预定房间配置项设置房间命名,房间密码、开始时间、结束时间、参与者、房间信息等。
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
2. **房间权限预设:**设置房间内全场成员权限,例如全体静音,全体禁画等。
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
3. **预定房间:**调用`RoomStore`的`scheduleRoom`接口执行核心操作。
|
|
39
39
|
|
|
40
40
|
##### 示例代码:
|
|
41
41
|
``` java
|
|
@@ -78,7 +78,7 @@ fun scheduleRoom() {
|
|
|
78
78
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
79
79
|
| --- | --- | --- | --- |
|
|
80
80
|
| <code>roomID</code> | <code>String</code> | 是 | - 字符串类型的房间唯一标识符。<br>- 限制长度为 0-48 字节。<br>- 建议仅包含数字、英文字母(区分大小写)、下划线(_)和连字符(-)。避免使用空格和中文字符。 |
|
|
81
|
-
| <code>options</code> | <code>ScheduleRoomOptions</code> | 是 | - 创建房间配置对象。<br>-
|
|
81
|
+
| <code>options</code> | <code>ScheduleRoomOptions</code> | 是 | - 创建房间配置对象。<br>- 详细用法请参考:<a href="#a065626d-21a2-476e-bbaf-65bca29b44d2">ScheduleRoomOptions 结构体详细说明</a>。 |
|
|
82
82
|
| <code>completion</code> | <code>CompletionHandler</code> | 否 | 操作完成回调,用于返回预定房间的结果。若预定失败则会返回错误码和错误信息。 |
|
|
83
83
|
|
|
84
84
|
##### ScheduleRoomOptions 结构体详细说明
|
|
@@ -89,7 +89,7 @@ fun scheduleRoom() {
|
|
|
89
89
|
| <code>scheduleStartTime</code> | <code>Long</code> | 是 | - 预定的房间开始时间(Unix 时间戳,单位:秒)。<br>- 取值必须大于当前时间。<br>- 推荐设置为未来的整分时间。例如:1736164800(代表 2025-01-06 20:00:00)。 |
|
|
90
90
|
| <code>scheduleEndTime</code> | <code>Long</code> | 是 | - 预定的房间结束时间(Unix 时间戳,单位:秒)。<br>- 取值必须大于 <code>scheduleStartTime</code>。<br>- 建议根据预期时长设置。例如:<code>scheduleStartTime</code> + 3600(预定 1 小时时长的房间)。 |
|
|
91
91
|
| <code>reminderSecondsBeforeStart</code> | <code>Int</code> | 否 | - 房间开始前的提醒时间(单位:秒)。用于系统触发开始提醒。<br>- 推荐设置为 300(5分钟)或 900(15分钟),用于在 App 端触发本地通知。 |
|
|
92
|
-
| <code>scheduleAttendees</code> | <code>List<String></code> | 否 | - 预定参与者的用户 ID 列表,在预定房间时设置,系统将向这些用户发送预定邀请。<br>-
|
|
92
|
+
| <code>scheduleAttendees</code> | <code>List<String></code> | 否 | - 预定参与者的用户 ID 列表,在预定房间时设置,系统将向这些用户发送预定邀请。<br>- 获取方式请参考 <a href="#88039583-8ee8-4662-bf73-d71c3af652fe">获取指定预定房间的参与成员列表</a>。 |
|
|
93
93
|
| <code>isAllMicrophoneDisabled</code> | <code>Boolean</code> | 否 | 是否全员禁止打开麦克风。开启后,除房主/管理员外,普通参与者默认禁止打开麦克风。<br>- true : 禁止。<br>- false :取消禁止 (默认值)。 |
|
|
94
94
|
| <code>isAllCameraDisabled</code> | <code>Boolean</code> | 否 | 是否全员禁止打开摄像头。开启后,除房主/管理员外,普通参与者默认禁止打开摄像头。<br>- true : 禁止。<br>- false :取消禁止(默认值)。 |
|
|
95
95
|
| <code>isAllScreenShareDisabled</code> | <code>Boolean</code> | 否 | 是否全员禁止发起屏幕共享。开启后,仅房主/管理员可进行屏幕共享。<br>- true : 禁止。<br>- false :取消禁止(默认值)。 |
|
|
@@ -159,8 +159,8 @@ fun updateScheduledRoom() {
|
|
|
159
159
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
160
160
|
| --- | --- | --- | --- |
|
|
161
161
|
| <code>roomID</code> | <code>String</code> | 是 | 字符串类型的房间唯一标识符。<br>限制长度为 0-48 字节。<br>建议仅包含数字、英文字母(区分大小写)、下划线(_)和连字符(-)。避免使用空格和中文字符。 |
|
|
162
|
-
| <code>options</code> | <code>ScheduleRoomOptions</code> | 是 | 预定房间配置对象。<br
|
|
163
|
-
| <code>modifyFlagList</code> | <code>List<ScheduleRoomOptions.ModifyFlag></code> | 是 | 更新房间属性修改标志位。目前支持更新<strong>房间名称</strong>、<strong>开始时间</strong>、<strong>结束时间。</strong><br
|
|
162
|
+
| <code>options</code> | <code>ScheduleRoomOptions</code> | 是 | 预定房间配置对象。<br>详细用法请参考:<a href="#a065626d-21a2-476e-bbaf-65bca29b44d2">ScheduleRoomOptions 结构体详细说明</a>。 |
|
|
163
|
+
| <code>modifyFlagList</code> | <code>List<ScheduleRoomOptions.ModifyFlag></code> | 是 | 更新房间属性修改标志位。目前支持更新<strong>房间名称</strong>、<strong>开始时间</strong>、<strong>结束时间。</strong><br>详细用法请参考:<a href="#ScheduleRoomOptions.ModifyFlag">ScheduleRoomOptions.ModifyFlag 详细说明</a>。 |
|
|
164
164
|
| <code>completion</code> | <code>CompletionHandler</code> | 否 | 操作完成回调,用于返回更新预定房间的结果。若更新失败则会返回错误码和错误信息。 |
|
|
165
165
|
|
|
166
166
|
**ScheduleRoomOptions.ModifyFlag 详细说明**
|
|
@@ -320,17 +320,17 @@ private fun subscribeParticipantState() {
|
|
|
320
320
|
如果您在预定房间后未收到即将开始的事件通知,请按照以下两个核心要点进行检查:
|
|
321
321
|
1. **检查提醒参数配置** (`reminderSecondsBeforeStart`)
|
|
322
322
|
|
|
323
|
-
|
|
323
|
+
- 触发机制:`onScheduledRoomStartingSoon` 事件的触发高度依赖于预定配置类 `ScheduleRoomOptions` 中的 `reminderSecondsBeforeStart` 属性。
|
|
324
324
|
|
|
325
|
-
|
|
325
|
+
- 默认行为:该属性的默认值为 0,代表“不开启提醒”。
|
|
326
326
|
|
|
327
|
-
|
|
327
|
+
- 解决建议:请确保在预定房间时明确设置该参数。该参数单位为**秒**,表示在房间开始前多少秒推送事件通知。
|
|
328
328
|
|
|
329
329
|
2. **验证预定时间逻辑**
|
|
330
330
|
|
|
331
|
-
|
|
331
|
+
- 计算公式:系统触发提醒的前提是:预定开始时间 (`scheduleStartTime`) - 当前时间 > 提醒偏移量 (`reminderSecondsBeforeStart`)。
|
|
332
332
|
|
|
333
|
-
|
|
333
|
+
- 场景说明:如果您的房间开始时间设置得过近(例如 5 分钟后开始),而提醒时间设置得过大(例如设置 10 分钟前提醒),系统将无法捕捉到触发时机,从而导致事件丢失。
|
|
334
334
|
|
|
335
|
-
|
|
335
|
+
- 解决建议:请确保预定的开始时间距离当前时刻,大于您所设置的提醒秒数。
|
|
336
336
|
|
|
@@ -205,8 +205,8 @@ Future<void> updateRoomInfo() async {
|
|
|
205
205
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
206
206
|
| --- | --- | --- | --- |
|
|
207
207
|
| <code>roomID</code> | <code>String</code> | 是 | - 字符串类型的房间唯一标识符。<br>- 限制长度为 0-48 字节。<br>- 建议仅包含数字、英文字母(区分大小写)、下划线(_)和连字符(-)。避免使用空格和中文字符。 |
|
|
208
|
-
| <code>options</code> | <code>UpdateRoomOptions</code> | 是 | - 更新房间属性配置对象。<br>-
|
|
209
|
-
| <code>modifyFlag</code> | <code>UpdateRoomOptionsModifyFlag</code> | 是 | - 更新房间属性修改标志位。目前支持更新<strong>房间名称</strong>、<strong>房间密码</strong>。<br>-
|
|
208
|
+
| <code>options</code> | <code>UpdateRoomOptions</code> | 是 | - 更新房间属性配置对象。<br>- 详细用法请参考:<a href="#UpdateRoomOptionsStruct">UpdateRoomOptions 结构体详细说明</a> |
|
|
209
|
+
| <code>modifyFlag</code> | <code>UpdateRoomOptionsModifyFlag</code> | 是 | - 更新房间属性修改标志位。目前支持更新<strong>房间名称</strong>、<strong>房间密码</strong>。<br>- 详细用法请参考:<a href="#UpdateRoomOptions.ModifyFlag">UpdateRoomOptionsModifyFlag 详细说明</a>。 |
|
|
210
210
|
|
|
211
211
|
**UpdateRoomOptions 结构体详细说明**
|
|
212
212
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
@@ -312,11 +312,11 @@ ValueListenableBuilder(
|
|
|
312
312
|
|
|
313
313
|
- **更新机制与频率控制:**
|
|
314
314
|
|
|
315
|
-
|
|
315
|
+
- 无论是即时触发还是延迟触发,所有的人数变更通知都是以消息的形式在房间内广播的。
|
|
316
316
|
|
|
317
|
-
|
|
317
|
+
- 房间内每秒的消息总量有上限,单房间消息频控是**每秒 40 条消息**。
|
|
318
318
|
|
|
319
|
-
|
|
319
|
+
- **关键点:**在“弹幕风暴”消息流量极高的场景下,如果房间内的消息速率超过了 40条/秒 的阈值,为了保证核心消息(例如弹幕)的送达,**人数变更的消息可能会被频控策略丢弃**。
|
|
320
320
|
|
|
321
321
|
**这对开发者意味着什么?**
|
|
322
322
|
|