@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.
Files changed (114) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +13 -13
  3. package/knowledge/path-meta.js +23 -1
  4. package/package.json +1 -1
  5. package/resource/index/manifest.json +1 -1
  6. package/resource/integration/callkit/preset/android/integration.md +4 -0
  7. package/resource/integration/callkit/preset/flutter/integration.md +4 -0
  8. package/resource/integration/callkit/preset/ios/integration.md +14 -13
  9. package/resource/integration/callkit/preset/vue/integration.md +0 -3
  10. package/resource/integration/chat/preset/android/integration.md +3 -145
  11. package/resource/integration/chat/preset/flutter/integration.md +20 -128
  12. package/resource/integration/chat/preset/ios/integration.md +2 -269
  13. package/resource/integration/chat/preset/react/integration.md +27 -1
  14. package/resource/integration/chat/preset/uni-app/integration.md +5 -1
  15. package/resource/integration/chat/preset/vue/integration.md +21 -31
  16. package/resource/integration/livekit/preset/live/android/live-host-integration.md +4 -0
  17. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +4 -0
  18. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +3 -4
  19. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -1
  20. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -1
  21. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +4 -9
  22. package/resource/integration/roomkit/preset/vue/integration.md +0 -213
  23. package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +490 -0
  24. package/resource/knowledge/callkit/best-practice/flutter/android-keep-call-alive-background.md +79 -0
  25. package/resource/knowledge/callkit/best-practice/flutter/background-incoming-call-no-notification.md +99 -0
  26. package/resource/knowledge/callkit/best-practice/flutter/ios-keep-call-alive-background.md +93 -0
  27. package/resource/knowledge/callkit/best-practice/flutter/ios-startup-crash-version-voip.md +68 -0
  28. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -1
  29. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +9 -7
  30. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +10 -7
  31. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +19 -19
  32. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +16 -16
  33. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -84
  34. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -102
  35. package/resource/knowledge/callkit/core-sdk/web/call-event.md +2 -2
  36. package/resource/knowledge/callkit/faq/error-code.md +62 -36
  37. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +1 -1
  38. package/resource/knowledge/callkit/preset/android/api.md +10 -10
  39. package/resource/knowledge/callkit/preset/harmonyos/api.md +362 -0
  40. package/resource/knowledge/callkit/preset/harmonyos/integration.md +322 -0
  41. package/resource/knowledge/callkit/preset/ios/api.md +9 -9
  42. package/resource/knowledge/callkit/preset/miniprogram/api-uniapp.md +293 -0
  43. package/resource/knowledge/callkit/preset/miniprogram/api.md +19 -19
  44. package/resource/knowledge/callkit/preset/miniprogram/integration.md +292 -0
  45. package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +521 -0
  46. package/resource/knowledge/callkit/preset/uni-app/api.md +49 -0
  47. package/resource/knowledge/callkit/preset/uni-app/integration.md +353 -0
  48. package/resource/knowledge/chat/preset/android-view/integration.md +52 -100
  49. package/resource/knowledge/chat/preset/ios/features/language.md +5 -5
  50. package/resource/knowledge/chat/preset/ios-uikit/integration.md +184 -923
  51. package/resource/knowledge/chat/preset/react/features/search.md +9 -214
  52. package/resource/knowledge/chat/preset/react/h5/integration.md +965 -0
  53. package/resource/knowledge/chat/preset/vue/features/chat-header.md +0 -36
  54. package/resource/knowledge/chat/preset/vue/features/contact-list.md +0 -34
  55. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +0 -39
  56. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +0 -74
  57. package/resource/knowledge/chat/preset/vue/features/search.md +9 -790
  58. package/resource/knowledge/chat/preset/vue/h5/integration.md +724 -0
  59. package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +0 -167
  60. package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +1 -1
  61. package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +1 -1
  62. package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -1
  63. package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +1 -1
  64. package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -1
  65. package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +1 -1
  66. package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +1 -1
  67. package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +2 -2
  68. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +1 -66
  69. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +1 -66
  70. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +1 -1
  71. package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -1
  72. package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +2 -2
  73. package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -1
  74. package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +1 -1
  75. package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +2 -2
  76. package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +2 -2
  77. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +1 -24
  78. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +0 -3
  79. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -5
  80. package/resource/knowledge/push/api-reference/harmonyos.md +9 -9
  81. package/resource/knowledge/push/api-reference/unity.md +10 -10
  82. package/resource/knowledge/push/api-reference/unreal-engine.md +11 -11
  83. package/resource/knowledge/push/integration/android.md +57 -13
  84. package/resource/knowledge/push/integration/donut.md +3 -3
  85. package/resource/knowledge/push/integration/flutter.md +38 -24
  86. package/resource/knowledge/push/integration/harmonyos.md +1 -11
  87. package/resource/knowledge/push/integration/ios.md +21 -6
  88. package/resource/knowledge/push/integration/react-native.md +1 -1
  89. package/resource/knowledge/push/integration/uni-app.md +1 -1
  90. package/resource/knowledge/push/integration/unity.md +1 -1
  91. package/resource/knowledge/push/integration/unreal-engine.md +2 -2
  92. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +3 -3
  93. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +4 -4
  94. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +2 -2
  95. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -4
  96. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +3 -3
  97. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -4
  98. package/resource/knowledge/roomkit/core-sdk/vue/device-detection.md +0 -9
  99. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
  100. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
  101. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -16
  102. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +0 -3
  103. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -3
  104. package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +0 -15
  105. package/resource/knowledge/roomkit/preset/android/integration.md +1 -202
  106. package/resource/knowledge/roomkit/preset/flutter/integration.md +13 -13
  107. package/resource/knowledge/roomkit/preset/harmonyos/integration.md +6 -2
  108. package/resource/knowledge/roomkit/preset/ios/integration.md +0 -201
  109. package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
  110. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +207 -509
  111. package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
  112. package/server.js +1 -1
  113. package/utils/report-cls-client.js +1 -1
  114. 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 等腾讯云依赖。华为、荣耀的厂商 Maven 仓库请在「厂商通道集成」对应厂商 Tab 中追加。
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` 中添加插件仓库。华为、荣耀、Google FCM 的插件 classpath 请在「厂商通道集成」对应厂商 Tab 中追加。
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` 中添加仓库。华为、荣耀、Google FCM 的插件 classpath 请在「厂商通道集成」对应厂商 Tab 中追加。
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 已在华为控制台「项目设置 > 常规 > SHA 证书指纹」中添加,指纹不一致会报 `6003: certificate fingerprint error`;
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
- 请在「配置 Gradle 仓库」已添加的公共仓库基础上,追加华为仓库。
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 已在荣耀控制台「项目设置 > 常规 > SHA 证书指纹」中添加,指纹不一致会报 `6003: certificate fingerprint error`;
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
- > 1. 厂商离线通道的消息分类机制会影响推送及时性、单设备每日接收数量、夜间展示、声音、横幅和厂商通道权限。
977
- > 2. 只有 IM 聊天、订单、交易、账号变更等用户预期强、需要及时触达的消息,才建议申请或使用高优先级分类。营销、广告、活动、资讯类消息不应滥用高优分类,**否则可能被厂商降级、限频或冻结权限。**
978
- > 3. 发送离线推送时,API 设置优先级高于腾讯云控制台证书默认配置。
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
- 1. 在 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/intro/) 中开启推送服务,默认支持在线推送。
2
+ - 在 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/intro/) 中开启推送服务,默认支持在线推送。
3
3
 
4
- 2. 如果您需要使用离线推送,请先完成对应原生平台的推送前提配置:请参见 [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)。
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
- 3. 微信开发者工具版本需 ≥ 1.06.2410152,您可进入 [下载地址](https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html) 进行版本下载。
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)。Flutter Android 侧至少需要准备:
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 厂商配置。Flutter 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
- 完整资源清单见 iOS 前提条件。
13
+ 【HarmonyOS】
32
14
 
33
- 本文示例中的 `VERSION`、`SDKAppID`、`AppKey`、证书 ID、App Group ID 均为占位符,请勿在代码仓库中提交真实密钥。
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 离线推送集成。安装后,你可以直接向 AI 输入“集成 Flutter 离线推送”“帮我集成 Flutter TIMPush”等需求,AI 将根据项目类型引导你完成环境检测、厂商通道配置、凭据填写、代码接入和验证等步骤。详情可参考 AI Coding。
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
- > 如果你的业务仅使用即时通信 IM 聊天能力,请勿在 IM 登录前先调用 `registerPush`。否则 SDK 可能会按独立推送场景注册 Push 类型账号,并产生对应的 Push DAU。Push DAU 超出套餐额度后,可能会产生额外费用。
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
- 如果你接入了 TUIKit,TUIKit 内置的消息发送链路会自动用 `OfflinePushExtInfo` 组装 `ext`,无需手动设置。下方示例适用于自行调用 IM SDK 发送消息的场景。
516
+ 如果您接入了 TUIKit,TUIKit 内置的消息发送链路会自动用 `OfflinePushExtInfo` 组装 `ext`,无需手动设置。下方示例适用于自行调用 IM SDK 发送消息的场景。
502
517
 
503
518
  【Swift】
504
519
  ``` swift
@@ -278,7 +278,7 @@ npm run ios
278
278
 
279
279
  ### 步骤7:消息推送触达统计
280
280
 
281
- 如果你需要统计设备触达数据,请按照 华为/荣耀/vivo/魅族/iOS 步骤完成配置。其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
281
+ 如果您需要统计设备触达数据,请按照 华为/荣耀/vivo/魅族/iOS 步骤完成配置。其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
282
282
 
283
283
  ## 接入排查
284
284
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  ### 步骤1:集成 TencentCloud-Push
20
20
 
21
- 如果你想手动集成,请按下述步骤依次完成下载插件并导入 HBuilderX、配置离线推送文件。
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
- 如果你需要统计设备触达数据,请按照 华为/荣耀/vivo/魅族/iOS 完成配置。其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
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
- - 如果你需要统计 Android 设备触达数据,请按照 华为/荣耀/vivo/魅族 配置。
261
+ - 如果您需要统计 Android 设备触达数据,请按照 华为/荣耀/vivo/魅族 配置。
262
262
 
263
- - 如果你需要统计 iOS 设备触达数据,
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 结构体详细说明**