@tencentcloud/sdk-mcp 1.7.3 → 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 +13 -0
- package/README.md +13 -13
- 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 +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 +3 -145
- package/resource/integration/chat/preset/flutter/integration.md +20 -128
- 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/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/preset/android-view/integration.md +52 -100
- 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/integration/android.md +57 -13
- package/resource/knowledge/push/integration/donut.md +3 -3
- 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 +21 -6
- 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 +1 -1
- package/resource/knowledge/push/integration/unreal-engine.md +2 -2
- 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/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/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 +0 -15
- 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 +6 -2
- package/resource/knowledge/roomkit/preset/ios/integration.md +0 -201
- package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +207 -509
- package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
- package/server.js +1 -1
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -46,7 +46,6 @@ LiveView 提供以下插槽,用于自定义视频流上层的 UI 内容。
|
|
|
46
46
|
</template>
|
|
47
47
|
</LiveView>
|
|
48
48
|
|
|
49
|
-
<style scoped>.watermark-container{position:absolute;inset:0;overflow:hidden;pointer-events:none;user-select:none}.watermark-grid{position:absolute;top:-50%;left:-50%;width:200%;height:200%;display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:60px 80px;transform:rotate(-30deg)}.watermark-item{color:rgba(255,255,255,.15);font-size:18px;font-weight:700;letter-spacing:2px;white-space:nowrap}</style>
|
|
50
49
|
```
|
|
51
50
|
|
|
52
51
|
##### 自定义刷新 Loading 示例
|
|
@@ -81,7 +80,6 @@ async function handleRefresh() {
|
|
|
81
80
|
}
|
|
82
81
|
</script>
|
|
83
82
|
|
|
84
|
-
<style scoped>.refresh-overlay{display:flex;flex-direction:column;align-items:center;gap:12px;pointer-events:none}.refresh-logo{width:40px;height:40px;object-fit:contain}.refresh-spinner{width:32px;height:32px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.refresh-text{color:rgba(255,255,255,.8);font-size:14px}.watermark{color:rgba(255,255,255,.3);font-size:24px;font-weight:700;letter-spacing:2px;pointer-events:none;user-select:none;text-shadow:0 2px 8px rgba(0,0,0,.3)}</style>
|
|
85
83
|
```
|
|
86
84
|
|
|
87
85
|
#### streamViewUI 插槽
|
|
@@ -109,7 +107,6 @@ const handleApplyForSeat = (seatIndex: number) => {
|
|
|
109
107
|
};
|
|
110
108
|
</script>
|
|
111
109
|
|
|
112
|
-
<style scoped>.custom-stream-ui{position:absolute;bottom:0;left:0;right:0;padding:8px 12px;background:linear-gradient(transparent,rgba(0,0,0,.6));pointer-events:none}.custom-stream-ui .user-name{color:#fff;font-size:14px;font-weight:500}</style>
|
|
113
110
|
```
|
|
114
111
|
|
|
115
112
|
##### 自定义连麦 UI 示例
|
|
@@ -174,7 +171,6 @@ const isCameraOn = (userInfo: SeatUserInfo) => {
|
|
|
174
171
|
};
|
|
175
172
|
</script>
|
|
176
173
|
|
|
177
|
-
<style scoped>.stream-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;box-sizing:border-box;border-radius:6px;overflow:hidden}.top-bar{position:absolute;top:6px;left:6px;z-index:2}.role-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:500;line-height:16px;background:rgba(0,0,0,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:rgba(255,255,255,.85)}.anchor-badge{background:linear-gradient(135deg,#ff6b35,#e8461e);color:#fff}.badge-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.anchor-badge .badge-dot{background:#fff;animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.4}}.bottom-bar{position:absolute;bottom:0;left:0;right:0;z-index:2;display:flex;align-items:flex-end;justify-content:space-between;padding:28px 8px 6px;background:linear-gradient(to top,rgba(0,0,0,.6) 0%,rgba(0,0,0,.2) 50%,transparent 100%)}.user-info{flex:1;min-width:0}.user-name-text{display:block;color:#fff;font-size:11px;font-weight:500;line-height:16px;text-shadow:0 1px 3px rgba(0,0,0,.7);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-icons{display:flex;align-items:center;gap:3px;flex-shrink:0;margin-left:6px}.icon-wrapper{position:relative;width:16px;height:16px;color:rgba(255,255,255,.9);transition:color .2s ease}.icon-wrapper.off{color:rgba(255,255,255,.3)}.icon-wrapper svg{position:absolute;top:0;left:0;width:100%;height:100%}.icon-wrapper .slash-line{z-index:1}</style>
|
|
178
174
|
```
|
|
179
175
|
|
|
180
176
|
### 自定义控制栏操作按钮
|
|
@@ -367,7 +363,6 @@ function startAutoHide() {
|
|
|
367
363
|
}
|
|
368
364
|
</script>
|
|
369
365
|
|
|
370
|
-
<style scoped>.my-player{position:relative;width:100%;height:100%}.my-controls{position:absolute;bottom:0;left:0;right:0;z-index:20;pointer-events:auto;display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:linear-gradient(to top,rgba(0,0,0,.75) 0%,rgba(0,0,0,.3) 70%,transparent 100%);transition:opacity .3s ease,transform .3s ease}.my-controls.hidden{opacity:0;transform:translateY(8px);pointer-events:none}.controls-left,.controls-right{display:flex;align-items:center;gap:4px}.ctrl-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:6px;background:transparent;color:rgba(255,255,255,.85);cursor:pointer;transition:background .15s ease,color .15s ease}.ctrl-btn:hover{background:rgba(255,255,255,.12);color:#fff}.ctrl-btn:active{background:rgba(255,255,255,.2)}.ctrl-btn svg{width:18px;height:18px}.volume-group{display:flex;align-items:center;gap:2px}.volume-slider{width:70px;height:3px;-webkit-appearance:none;appearance:none;background:rgba(255,255,255,.25);border-radius:2px;outline:none;cursor:pointer}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:10px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 0 4px rgba(0,0,0,.3)}.resolution-select{height:28px;padding:0 8px;border:1px solid rgba(255,255,255,.15);border-radius:6px;background:rgba(0,0,0,.4);color:rgba(255,255,255,.85);font-size:11px;cursor:pointer;outline:none}.resolution-select:hover{border-color:rgba(255,255,255,.35)}.resolution-select option{background:#1a1a1a;color:#fff}</style>
|
|
371
366
|
```
|
|
372
367
|
|
|
373
368
|
### 播放控制 API 汇总
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
|API|描述|
|
|
4
4
|
|---------|---------|
|
|
5
|
-
|registerPush|注册推送服务, (必须在 App 用户同意了隐私政策后,再调用该接口使用推送服务)。|
|
|
6
|
-
|unRegisterPush|反注册关闭推送服务。|
|
|
7
|
-
|setRegistrationID|RegistrationID 是推送接收设备的唯一标识 ID。默认情况下,注册推送服务成功时自动生成该 ID,同时也支持您自定义设置。您可根据 RegistrationID 向指定设备推送消息。需要注意的是,卸载并重新安装设备会更改 RegistrationID,因此需要在注册推送服务之前调用 setRegistrationID 接口。|
|
|
8
|
-
|getRegistrationID|在成功注册推送服务后,调用此接口可获取推送接收设备的唯一标识 ID,即 RegistrationID。|
|
|
9
|
-
|addPushListener|添加 Push 监听器。|
|
|
10
|
-
|removePushListener|移除 Push 监听器。|
|
|
11
|
-
|disablePostNotificationInForeground|应用在前台时,开/关通知栏通知(默认开)。|
|
|
5
|
+
|[registerPush](#c624c0f8-1505-4d15-8a44-dcacbaaac784)|注册推送服务, (必须在 App 用户同意了隐私政策后,再调用该接口使用推送服务)。|
|
|
6
|
+
|[unRegisterPush](#a6df0ca4-f85e-4678-8db4-1498fb67606b)|反注册关闭推送服务。|
|
|
7
|
+
|[setRegistrationID](#e54d1228-3bc5-4053-bb2a-c72d3320c7db)|RegistrationID 是推送接收设备的唯一标识 ID。默认情况下,注册推送服务成功时自动生成该 ID,同时也支持您自定义设置。您可根据 RegistrationID 向指定设备推送消息。需要注意的是,卸载并重新安装设备会更改 RegistrationID,因此需要在注册推送服务之前调用 setRegistrationID 接口。|
|
|
8
|
+
|[getRegistrationID](#2557dabd-b043-4f66-bb82-34315459c8b7)|在成功注册推送服务后,调用此接口可获取推送接收设备的唯一标识 ID,即 RegistrationID。|
|
|
9
|
+
|[addPushListener](#8efda8f7-f11e-40d3-a9ee-9c2fbad7f63e)|添加 Push 监听器。|
|
|
10
|
+
|[removePushListener](#4ee794ce-67d1-4b96-b7a5-bffe18f6d521)|移除 Push 监听器。|
|
|
11
|
+
|[disablePostNotificationInForeground](#f8fe8ed3-ce77-4241-9eb1-3fe7e0ba16d2)|应用在前台时,开/关通知栏通知(默认开)。|
|
|
12
12
|
|
|
13
13
|
## 接口详情
|
|
14
14
|
|
|
@@ -78,7 +78,7 @@ addPushListener(listener: TIMPushListener): void;
|
|
|
78
78
|
|
|
79
79
|
|参数|类型|说明|
|
|
80
80
|
|---------|---------|---------|
|
|
81
|
-
|listener|TIMPushListener|推送事件处理方法。|
|
|
81
|
+
|listener|[TIMPushListener](#cff83260-e519-4071-b968-e427b2517ff1)|推送事件处理方法。|
|
|
82
82
|
|
|
83
83
|
### 移除 Push 监听器
|
|
84
84
|
|
|
@@ -91,7 +91,7 @@ removePushListener(listener: TIMPushListener): void;
|
|
|
91
91
|
|
|
92
92
|
|参数|类型|说明|
|
|
93
93
|
|---------|---------|---------|
|
|
94
|
-
|listener|TIMPushListener|推送事件处理方法。|
|
|
94
|
+
|listener|[TIMPushListener](#cff83260-e519-4071-b968-e427b2517ff1)|推送事件处理方法。|
|
|
95
95
|
|
|
96
96
|
### 应用在前台时,开/关通知栏通知
|
|
97
97
|
|
|
@@ -8,24 +8,24 @@ public class PushManager:推送插件接口类。
|
|
|
8
8
|
|
|
9
9
|
|API|描述|
|
|
10
10
|
|---------|---------|
|
|
11
|
-
|RegisterPush|注册推送服务(必须在 App 用户同意了隐私政策后,再调用该接口使用推送服务)。|
|
|
12
|
-
|UnRegisterPush|关闭推送服务。|
|
|
13
|
-
|SetRegistrationID|RegistrationID 是推送接收设备的唯一标识 ID。默认情况下,注册推送服务成功时自动生成该 ID,同时也支持您自定义设置。您可根据 RegistrationID 向指定设备推送消息。需要注意的是,卸载并重新安装设备会更改 RegistrationID,因此需要在注册推送服务之前调用 setRegistrationID 接口。|
|
|
14
|
-
|GetRegistrationID|在成功注册推送服务后,可通过调用 getRegistrationID 接口获取推送接收设备的唯一标识 ID,即RegistrationID。您可根据 RegistrationID 向指定设备推送消息。|
|
|
11
|
+
|[RegisterPush](#RegisterPush)|注册推送服务(必须在 App 用户同意了隐私政策后,再调用该接口使用推送服务)。|
|
|
12
|
+
|[UnRegisterPush](#UnRegisterPush)|关闭推送服务。|
|
|
13
|
+
|[SetRegistrationID](#SetRegistrationID)|RegistrationID 是推送接收设备的唯一标识 ID。默认情况下,注册推送服务成功时自动生成该 ID,同时也支持您自定义设置。您可根据 RegistrationID 向指定设备推送消息。需要注意的是,卸载并重新安装设备会更改 RegistrationID,因此需要在注册推送服务之前调用 setRegistrationID 接口。|
|
|
14
|
+
|[GetRegistrationID](#GetRegistrationID)|在成功注册推送服务后,可通过调用 getRegistrationID 接口获取推送接收设备的唯一标识 ID,即RegistrationID。您可根据 RegistrationID 向指定设备推送消息。|
|
|
15
15
|
|
|
16
16
|
#### Push 全局监听接口
|
|
17
17
|
|
|
18
18
|
|API|描述|
|
|
19
19
|
|---------|---------|
|
|
20
|
-
|AddPushListener|添加 Push 监听器。|
|
|
21
|
-
|RemovePushListener|移除 Push 监听器。|
|
|
20
|
+
|[AddPushListener](#AddPushListener)|添加 Push 监听器。|
|
|
21
|
+
|[RemovePushListener](#RemovePushListener)|移除 Push 监听器。|
|
|
22
22
|
|
|
23
23
|
#### 自定义配置接口
|
|
24
24
|
|
|
25
25
|
|API|描述|
|
|
26
26
|
|---------|---------|
|
|
27
|
-
|ForceUseFCMPushChannel|指定设备离线推送使用 FCM 通道,需要在注册推送服务之前调用。|
|
|
28
|
-
|DisablePostNotificationInForeground|关闭 App 在前台时弹出通知栏。|
|
|
27
|
+
|[ForceUseFCMPushChannel](#ForceUseFCMPushChannel)|指定设备离线推送使用 FCM 通道,需要在注册推送服务之前调用。|
|
|
28
|
+
|[DisablePostNotificationInForeground](#DisablePostNotificationInForeground)|关闭 App 在前台时弹出通知栏。|
|
|
29
29
|
|
|
30
30
|
### 接口详情
|
|
31
31
|
|
|
@@ -59,11 +59,11 @@ public class PushManager:推送插件接口类。
|
|
|
59
59
|
|
|
60
60
|
注册推送服务成功后,获取推送 ID 标识,即 RegistrationID。
|
|
61
61
|
|
|
62
|
-
##### abstract void AddPushListener(PushListener listener)
|
|
62
|
+
##### abstract void AddPushListener([PushListener](#PushListener) listener)
|
|
63
63
|
|
|
64
64
|
添加 Push 监听器
|
|
65
65
|
|
|
66
|
-
##### abstract void RemovePushListener(PushListener listener)
|
|
66
|
+
##### abstract void RemovePushListener([PushListener](#PushListener) listener)
|
|
67
67
|
|
|
68
68
|
移除 Push 监听器
|
|
69
69
|
|
|
@@ -8,24 +8,24 @@ class PushManager:推送插件接口类。
|
|
|
8
8
|
|
|
9
9
|
|API|描述|
|
|
10
10
|
|---------|---------|
|
|
11
|
-
|RegisterPush|注册推送服务(必须在 App 用户同意了隐私政策后,再调用该接口使用推送服务)。|
|
|
12
|
-
|UnRegisterPush|关闭推送服务。|
|
|
13
|
-
|SetRegistrationID|RegistrationID 是推送接收设备的唯一标识 ID。默认情况下,注册推送服务成功时自动生成该 ID,同时也支持您自定义设置。您可根据 RegistrationID 向指定设备推送消息。需要注意的是,卸载并重新安装设备会更改 RegistrationID,因此需要在注册推送服务之前调用 setRegistrationID 接口。|
|
|
14
|
-
|GetRegistrationID|在成功注册推送服务后,可通过调用 getRegistrationID 接口获取推送接收设备的唯一标识 ID,即RegistrationID。您可根据 RegistrationID 向指定设备推送消息。|
|
|
11
|
+
|[RegisterPush](#RegisterPush)|注册推送服务(必须在 App 用户同意了隐私政策后,再调用该接口使用推送服务)。|
|
|
12
|
+
|[UnRegisterPush](#UnRegisterPush)|关闭推送服务。|
|
|
13
|
+
|[SetRegistrationID](#SetRegistrationID)|RegistrationID 是推送接收设备的唯一标识 ID。默认情况下,注册推送服务成功时自动生成该 ID,同时也支持您自定义设置。您可根据 RegistrationID 向指定设备推送消息。需要注意的是,卸载并重新安装设备会更改 RegistrationID,因此需要在注册推送服务之前调用 setRegistrationID 接口。|
|
|
14
|
+
|[GetRegistrationID](#GetRegistrationID)|在成功注册推送服务后,可通过调用 getRegistrationID 接口获取推送接收设备的唯一标识 ID,即RegistrationID。您可根据 RegistrationID 向指定设备推送消息。|
|
|
15
15
|
|
|
16
16
|
#### Push 全局监听接口
|
|
17
17
|
|
|
18
18
|
|API|描述|
|
|
19
19
|
|---------|---------|
|
|
20
|
-
|AddPushListener|添加 Push 监听器。|
|
|
21
|
-
|RemovePushListener|移除 Push 监听器。|
|
|
20
|
+
|[AddPushListener](#addPushListener)|添加 Push 监听器。|
|
|
21
|
+
|[RemovePushListener](#RemovePushListener)|移除 Push 监听器。|
|
|
22
22
|
|
|
23
23
|
#### 自定义配置接口
|
|
24
24
|
|
|
25
25
|
|API|描述|
|
|
26
26
|
|---------|---------|
|
|
27
|
-
|ForceUseFCMPushChannel|指定设备离线推送使用 FCM 通道,需要在注册推送服务之前调用。|
|
|
28
|
-
|DisablePostNotificationInForeground|关闭 App 在前台时弹出通知栏。|
|
|
27
|
+
|[ForceUseFCMPushChannel](#ForceUseFCMPushChannel)|指定设备离线推送使用 FCM 通道,需要在注册推送服务之前调用。|
|
|
28
|
+
|[DisablePostNotificationInForeground](#DisablePostNotificationInForeground)|关闭 App 在前台时弹出通知栏。|
|
|
29
29
|
|
|
30
30
|
### 接口详情
|
|
31
31
|
|
|
@@ -97,9 +97,9 @@ class PushListener:Push 监听器类
|
|
|
97
97
|
|
|
98
98
|
|API|描述|
|
|
99
99
|
|---------|---------|
|
|
100
|
-
|OnRecvPushMessage|收到 Push 消息。|
|
|
101
|
-
|OnRevokePushMessage|收到 Push 消息撤回的通知。|
|
|
102
|
-
|OnNotificationClicked|点击通知栏消息回调。|
|
|
100
|
+
|[OnRecvPushMessage](#OnRecvPushMessage)|收到 Push 消息。|
|
|
101
|
+
|[OnRevokePushMessage](#OnRevokePushMessage)|收到 Push 消息撤回的通知。|
|
|
102
|
+
|[OnNotificationClicked](#OnNotificationClicked)|点击通知栏消息回调。|
|
|
103
103
|
|
|
104
104
|
### 接口详情
|
|
105
105
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
#### 配置 Gradle 仓库
|
|
37
37
|
|
|
38
|
-
配置仓库的目的是让 Gradle 能下载 TIMPush 及相关依赖。本节只配置与厂商无关的公共仓库:`google()`、`mavenCentral()` 用于解析 Android 官方组件,腾讯云 Maven 仓库用于解析 TIMPush
|
|
38
|
+
配置仓库的目的是让 Gradle 能下载 TIMPush 及相关依赖。本节只配置与厂商无关的公共仓库:`google()`、`mavenCentral()` 用于解析 Android 官方组件,腾讯云 Maven 仓库用于解析 TIMPush 等腾讯云依赖。
|
|
39
39
|
|
|
40
40
|
Android 工程可能使用 Groovy DSL 或 Kotlin DSL,请先根据文件后缀判断当前工程使用的 DSL 类型:
|
|
41
41
|
|
|
@@ -99,7 +99,7 @@ dependencyResolutionManagement {
|
|
|
99
99
|
【Gradle 7.0 版本】
|
|
100
100
|
|
|
101
101
|
Gradle 7.0 版本通常使用 Groovy DSL。如您的工程使用 Kotlin DSL,请将单引号改为双引号,`url "..."` 改为 `url = uri("...")`。
|
|
102
|
-
1. 在项目级 `build.gradle` 的 `buildscript > repositories`
|
|
102
|
+
1. 在项目级 `build.gradle` 的 `buildscript > repositories` 中添加插件仓库。
|
|
103
103
|
|
|
104
104
|
``` groovy
|
|
105
105
|
buildscript {
|
|
@@ -127,7 +127,7 @@ dependencyResolutionManagement {
|
|
|
127
127
|
|
|
128
128
|
Gradle 7.0 以下版本通常使用 Groovy DSL。如您的工程使用 Kotlin DSL,请将单引号改为双引号,`url "..."` 改为 `url = uri("...")`。
|
|
129
129
|
|
|
130
|
-
在项目级 `build.gradle` 的 `buildscript > repositories` 和 `allprojects > repositories`
|
|
130
|
+
在项目级 `build.gradle` 的 `buildscript > repositories` 和 `allprojects > repositories` 中添加仓库。
|
|
131
131
|
``` groovy
|
|
132
132
|
buildscript {
|
|
133
133
|
repositories {
|
|
@@ -240,7 +240,7 @@ pushInfo.setAndroidXiaoMiChannelID("your_xiaomi_channel_id");
|
|
|
240
240
|
|
|
241
241
|
- 已重新下载包含华为证书的 `timpush-configs.json`,并放入应用模块 `assets` 目录;
|
|
242
242
|
|
|
243
|
-
- 测试包当前签名(debug 或 release)的 SHA-256
|
|
243
|
+
- 测试包当前签名(debug 或 release)的 SHA-256 已在华为控制台 **项目设置 > 常规 > SHA 证书指纹** 中添加,指纹不一致会报 `6003: certificate fingerprint error`;
|
|
244
244
|
|
|
245
245
|
- 使用华为真机验证。
|
|
246
246
|
|
|
@@ -256,7 +256,7 @@ pushInfo.setAndroidXiaoMiChannelID("your_xiaomi_channel_id");
|
|
|
256
256
|
|
|
257
257
|
##### **追加厂商 Maven 仓库**
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
请在已添加的公共仓库基础上追加华为仓库。
|
|
260
260
|
|
|
261
261
|
【Gradle 7.1 及以上】
|
|
262
262
|
|
|
@@ -592,7 +592,7 @@ pushInfo.setAndroidVIVOCategory("IM");
|
|
|
592
592
|
|
|
593
593
|
- 已重新下载包含荣耀证书的 `timpush-configs.json`,并放入应用模块 `assets` 目录;
|
|
594
594
|
|
|
595
|
-
- 测试包当前签名(debug 或 release)的 SHA-256
|
|
595
|
+
- 测试包当前签名(debug 或 release)的 SHA-256 已在荣耀控制台 **项目设置 > 常规 > SHA 证书指纹** 中添加,指纹不一致会报 `6003: certificate fingerprint error`;
|
|
596
596
|
|
|
597
597
|
- 使用荣耀真机验证。不要在华为设备上验证荣耀通道。
|
|
598
598
|
|
|
@@ -973,9 +973,9 @@ pushInfo.setAndroidFCMChannelID("your_fcm_channel_id");
|
|
|
973
973
|
> **警告:**
|
|
974
974
|
> 请关注各厂商通道消息分类规则:
|
|
975
975
|
>
|
|
976
|
-
>
|
|
977
|
-
>
|
|
978
|
-
>
|
|
976
|
+
> - 厂商离线通道的消息分类机制会影响推送及时性、单设备每日接收数量、夜间展示、声音、横幅和厂商通道权限。
|
|
977
|
+
> - 只有 IM 聊天、订单、交易、账号变更等用户预期强、需要及时触达的消息,才建议申请或使用高优先级分类。营销、广告、活动、资讯类消息不应滥用高优分类,**否则可能被厂商降级、限频或冻结权限。**
|
|
978
|
+
> - 发送离线推送时,API 设置优先级高于腾讯云控制台证书默认配置。
|
|
979
979
|
|
|
980
980
|
### 步骤3:注册推送服务
|
|
981
981
|
|
|
@@ -1005,6 +1005,8 @@ registerPush 用于向 TIMPush 注册当前设备的推送 token。注册成功
|
|
|
1005
1005
|
|
|
1006
1006
|
App 冷启动、用户同意隐私政策后调用 `registerPush(appKey = Push Key)`。如果工程已有自定义 `Application`,将注册逻辑放在该类中;如果没有,需新建并在 `AndroidManifest.xml` 中声明。
|
|
1007
1007
|
|
|
1008
|
+
建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
1009
|
+
|
|
1008
1010
|
【Java】
|
|
1009
1011
|
``` java
|
|
1010
1012
|
import android.app.Application;
|
|
@@ -1029,6 +1031,19 @@ public class App extends Application {
|
|
|
1029
1031
|
@Override
|
|
1030
1032
|
public void onSuccess(Object data) {
|
|
1031
1033
|
Log.d(TAG, ">>>>> registerPush success, data = " + data);
|
|
1034
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
1035
|
+
TIMPushManager.getInstance().getRegistrationID(new TIMPushCallback<Object>() {
|
|
1036
|
+
@Override
|
|
1037
|
+
public void onSuccess(Object data) {
|
|
1038
|
+
String registrationID = (String) data;
|
|
1039
|
+
Log.d(TAG, ">>>>> getRegistrationID success, registrationID = " + registrationID);
|
|
1040
|
+
}
|
|
1041
|
+
@Override
|
|
1042
|
+
public void onError(int errCode, String errMsg, Object data) {
|
|
1043
|
+
Log.e(TAG, ">>>>> getRegistrationID failed, errCode = " + errCode
|
|
1044
|
+
+ ", errMsg = " + errMsg);
|
|
1045
|
+
}
|
|
1046
|
+
});
|
|
1032
1047
|
}
|
|
1033
1048
|
|
|
1034
1049
|
@Override
|
|
@@ -1061,6 +1076,15 @@ class App : Application() {
|
|
|
1061
1076
|
TIMPushManager.getInstance().registerPush(this, sdkAppId, appKey, object : TIMPushCallback<Any?>() {
|
|
1062
1077
|
override fun onSuccess(data: Any?) {
|
|
1063
1078
|
Log.d("TIMPush", ">>>>> registerPush success, data = $data")
|
|
1079
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
1080
|
+
TIMPushManager.getInstance().getRegistrationID(object : TIMPushCallback<Any?>() {
|
|
1081
|
+
override fun onSuccess(data: Any?) {
|
|
1082
|
+
Log.d("TIMPush", ">>>>> getRegistrationID success, registrationID = $data")
|
|
1083
|
+
}
|
|
1084
|
+
override fun onError(errCode: Int, errMsg: String?, data: Any?) {
|
|
1085
|
+
Log.e("TIMPush", ">>>>> getRegistrationID failed, errCode = $errCode, errMsg = $errMsg")
|
|
1086
|
+
}
|
|
1087
|
+
})
|
|
1064
1088
|
}
|
|
1065
1089
|
|
|
1066
1090
|
override fun onError(errCode: Int, errMsg: String?, data: Any?) {
|
|
@@ -1081,7 +1105,7 @@ class App : Application() {
|
|
|
1081
1105
|
|
|
1082
1106
|
【IM 登录后注册推送(appKey 传 null)】
|
|
1083
1107
|
|
|
1084
|
-
请在 IM `login` 成功回调中调用 `registerPush(appKey = null)
|
|
1108
|
+
请在 IM `login` 成功回调中调用 `registerPush(appKey = null)`。建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
1085
1109
|
|
|
1086
1110
|
【Java】
|
|
1087
1111
|
``` java
|
|
@@ -1112,6 +1136,19 @@ public void loginIMAndRegisterPush(Context context) {
|
|
|
1112
1136
|
@Override
|
|
1113
1137
|
public void onSuccess(Object data) {
|
|
1114
1138
|
Log.d("TIMPush", ">>>>> registerPush success, data = " + data);
|
|
1139
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
1140
|
+
TIMPushManager.getInstance().getRegistrationID(new TIMPushCallback<Object>() {
|
|
1141
|
+
@Override
|
|
1142
|
+
public void onSuccess(Object data) {
|
|
1143
|
+
String registrationID = (String) data;
|
|
1144
|
+
Log.d(TAG, ">>>>> getRegistrationID success, registrationID = " + registrationID);
|
|
1145
|
+
}
|
|
1146
|
+
@Override
|
|
1147
|
+
public void onError(int errCode, String errMsg, Object data) {
|
|
1148
|
+
Log.e(TAG, ">>>>> getRegistrationID failed, errCode = " + errCode
|
|
1149
|
+
+ ", errMsg = " + errMsg);
|
|
1150
|
+
}
|
|
1151
|
+
});
|
|
1115
1152
|
}
|
|
1116
1153
|
|
|
1117
1154
|
@Override
|
|
@@ -1156,6 +1193,15 @@ fun loginIMAndRegisterPush(context: Context) {
|
|
|
1156
1193
|
TIMPushManager.getInstance().registerPush(context, sdkAppId, null, object : TIMPushCallback<Any>() {
|
|
1157
1194
|
override fun onSuccess(data: Any?) {
|
|
1158
1195
|
Log.d("TIMPush", ">>>>> registerPush success, data = $data")
|
|
1196
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
1197
|
+
TIMPushManager.getInstance().getRegistrationID(object : TIMPushCallback<Any?>() {
|
|
1198
|
+
override fun onSuccess(data: Any?) {
|
|
1199
|
+
Log.d("TIMPush", ">>>>> getRegistrationID success, registrationID = $data")
|
|
1200
|
+
}
|
|
1201
|
+
override fun onError(errCode: Int, errMsg: String?, data: Any?) {
|
|
1202
|
+
Log.e("TIMPush", ">>>>> getRegistrationID failed, errCode = $errCode, errMsg = $errMsg")
|
|
1203
|
+
}
|
|
1204
|
+
})
|
|
1159
1205
|
}
|
|
1160
1206
|
|
|
1161
1207
|
override fun onError(errCode: Int, errMsg: String?, data: Any?) {
|
|
@@ -1255,9 +1301,7 @@ V2TIMManager.getMessageManager().sendMessage(
|
|
|
1255
1301
|
|
|
1256
1302
|
#### **配置控制台点击动作**
|
|
1257
1303
|
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
操作路径:腾讯云控制台 > **推送服务 Push** > **基础配置** > **对应厂商证书** > **编辑** > 点击后续动作,选择**打开应用内指定界面**。
|
|
1304
|
+
在腾讯云控制台配置**打开应用内指定页面。**操作路径:腾讯云控制台 > **推送服务 Push** > **基础配置** > **对应厂商证书** > **编辑** > 点击后续动作,选择**打开应用内指定界面**。
|
|
1261
1305
|
|
|
1262
1306
|
#### **发送推送时携带** `ext`
|
|
1263
1307
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
### 步骤1:集成 TIMPush SDK
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
如果您想手动集成,请按顺序完成下文配置。
|
|
28
28
|
|
|
29
29
|
#### 在主 App target 中集成 TIMPush
|
|
30
30
|
|
|
@@ -145,7 +145,7 @@ registerPush 用于向 TIMPush 注册当前设备的推送 token。注册成功
|
|
|
145
145
|
|
|
146
146
|
【App 冷启动注册 TIMPush(appKey 传 Push Key)】
|
|
147
147
|
|
|
148
|
-
App 冷启动、用户同意隐私政策后调用 `registerPush(appKey = Push Key)
|
|
148
|
+
App 冷启动、用户同意隐私政策后调用 `registerPush(appKey = Push Key)`。建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
149
149
|
|
|
150
150
|
【Swift】
|
|
151
151
|
``` swift
|
|
@@ -159,6 +159,10 @@ func registerTIMPush() {
|
|
|
159
159
|
|
|
160
160
|
TIMPushManager.registerPush(sdkAppID, appKey: appKey, succ: { deviceToken in
|
|
161
161
|
print(">>>>> TIMPush register success")
|
|
162
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
163
|
+
TIMPushManager.getRegistrationID { registrationID in
|
|
164
|
+
print(">>>>> TIMPush registrationID: \(registrationID)")
|
|
165
|
+
}
|
|
162
166
|
}, fail: { code, desc in
|
|
163
167
|
print(">>>>> TIMPush register failed, code:\(code), desc:\(desc)")
|
|
164
168
|
})
|
|
@@ -174,11 +178,14 @@ func registerTIMPush() {
|
|
|
174
178
|
int sdkAppID = 0;
|
|
175
179
|
// TODO: Replace @"<#YOUR_PUSH_KEY#>" with your Push Key.
|
|
176
180
|
NSString *appKey = @"<#YOUR_PUSH_KEY#>";
|
|
177
|
-
|
|
178
181
|
[TIMPushManager registerPush:sdkAppID
|
|
179
182
|
appKey:appKey
|
|
180
183
|
succ:^(NSData * _Nonnull deviceToken) {
|
|
181
184
|
NSLog(@">>>>> TIMPush register success");
|
|
185
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
186
|
+
[TIMPushManager getRegistrationID:^(NSString * _Nonnull registrationID) {
|
|
187
|
+
NSLog(@">>>>> TIMPush registrationID: %@", registrationID);
|
|
188
|
+
}];
|
|
182
189
|
} fail:^(int code, NSString * _Nonnull desc) {
|
|
183
190
|
NSLog(@">>>>> TIMPush register failed, code:%d, desc:%@", code, desc);
|
|
184
191
|
}];
|
|
@@ -188,7 +195,7 @@ func registerTIMPush() {
|
|
|
188
195
|
|
|
189
196
|
【IM 登录后注册推送(appKey 传 null)】
|
|
190
197
|
|
|
191
|
-
请在 IM `login` 成功回调中调用 `registerPush(appKey = nil)
|
|
198
|
+
请在 IM `login` 成功回调中调用 `registerPush(appKey = nil)`。建议在 `registerPush` 成功回调里调用 `getRegistrationID` 打印 `registrationID`,方便后续根据 `registrationID` 发送离线推送消息。
|
|
192
199
|
|
|
193
200
|
【Swift】
|
|
194
201
|
``` swift
|
|
@@ -210,6 +217,10 @@ func loginIMAndRegisterPush() {
|
|
|
210
217
|
V2TIMManager.sharedInstance().login(userID: userID, userSig: userSig) {
|
|
211
218
|
TIMPushManager.registerPush(sdkAppID, appKey: "", succ: { deviceToken in
|
|
212
219
|
print(">>>>> TIMPush register success")
|
|
220
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
221
|
+
TIMPushManager.getRegistrationID { registrationID in
|
|
222
|
+
print(">>>>> TIMPush registrationID: \(registrationID)")
|
|
223
|
+
}
|
|
213
224
|
}, fail: { code, desc in
|
|
214
225
|
print(">>>>> TIMPush register failed, code:\(code), desc:\(desc)")
|
|
215
226
|
})
|
|
@@ -242,6 +253,10 @@ func loginIMAndRegisterPush() {
|
|
|
242
253
|
appKey:nil
|
|
243
254
|
succ:^(NSData * _Nonnull deviceToken) {
|
|
244
255
|
NSLog(@">>>>> TIMPush register success");
|
|
256
|
+
// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息
|
|
257
|
+
[TIMPushManager getRegistrationID:^(NSString * _Nonnull registrationID) {
|
|
258
|
+
NSLog(@">>>>> TIMPush registrationID: %@", registrationID);
|
|
259
|
+
}];
|
|
245
260
|
} fail:^(int code, NSString * _Nonnull desc) {
|
|
246
261
|
NSLog(@">>>>> TIMPush register failed, code:%d, desc:%@", code, desc);
|
|
247
262
|
}];
|
|
@@ -253,7 +268,7 @@ func loginIMAndRegisterPush() {
|
|
|
253
268
|
|
|
254
269
|
> **警告:**
|
|
255
270
|
>
|
|
256
|
-
>
|
|
271
|
+
> 如果您的业务仅使用即时通信 IM 聊天能力,请勿在 IM 登录前先调用 `registerPush`。否则 SDK 可能会按独立推送场景注册 Push 类型账号,并产生对应的 Push DAU。Push DAU 超出套餐额度后,可能会产生额外费用。
|
|
257
272
|
>
|
|
258
273
|
|
|
259
274
|
**验证**:
|
|
@@ -498,7 +513,7 @@ V2TIMMessage *message = [[V2TIMManager sharedInstance] createTextMessage:@"Hello
|
|
|
498
513
|
|
|
499
514
|
通过 [`V2TIMOfflinePushInfo`](https://im.sdk.qcloud.com/doc/zh-cn/interfaceV2TIMOfflinePushInfo.html) 的 `ext` 属性携带跳转参数,再随消息一起发送。
|
|
500
515
|
|
|
501
|
-
|
|
516
|
+
如果您接入了 TUIKit,TUIKit 内置的消息发送链路会自动用 `OfflinePushExtInfo` 组装 `ext`,无需手动设置。下方示例适用于自行调用 IM SDK 发送消息的场景。
|
|
502
517
|
|
|
503
518
|
【Swift】
|
|
504
519
|
``` swift
|
|
@@ -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 工程中。
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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 结构体详细说明**
|