@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.
Files changed (135) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +22 -23
  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 +8 -4
  8. package/resource/integration/callkit/preset/ios/integration.md +16 -15
  9. package/resource/integration/callkit/preset/react/integration.md +2 -2
  10. package/resource/integration/callkit/preset/vue/integration.md +9 -12
  11. package/resource/integration/chat/preset/android/integration.md +5 -147
  12. package/resource/integration/chat/preset/flutter/integration.md +22 -130
  13. package/resource/integration/chat/preset/ios/integration.md +12 -279
  14. package/resource/integration/chat/preset/react/integration.md +27 -1
  15. package/resource/integration/chat/preset/uni-app/integration.md +5 -1
  16. package/resource/integration/chat/preset/vue/integration.md +21 -31
  17. package/resource/integration/livekit/preset/live/android/live-host-integration.md +4 -0
  18. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +4 -0
  19. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +3 -3
  20. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +3 -4
  21. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -1
  22. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -1
  23. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +4 -9
  24. package/resource/integration/roomkit/preset/vue/integration.md +152 -652
  25. package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +490 -0
  26. package/resource/knowledge/callkit/best-practice/flutter/android-keep-call-alive-background.md +79 -0
  27. package/resource/knowledge/callkit/best-practice/flutter/background-incoming-call-no-notification.md +99 -0
  28. package/resource/knowledge/callkit/best-practice/flutter/ios-keep-call-alive-background.md +93 -0
  29. package/resource/knowledge/callkit/best-practice/flutter/ios-startup-crash-version-voip.md +68 -0
  30. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +2 -2
  31. package/resource/knowledge/callkit/core-sdk/android/make-call.md +5 -5
  32. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +7 -7
  33. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +10 -10
  34. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -1
  35. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +18 -16
  36. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +16 -14
  37. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +19 -19
  38. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +16 -16
  39. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +2 -86
  40. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +2 -104
  41. package/resource/knowledge/callkit/core-sdk/web/call-event.md +2 -2
  42. package/resource/knowledge/callkit/faq/android.md +4 -4
  43. package/resource/knowledge/callkit/faq/common.md +4 -4
  44. package/resource/knowledge/callkit/faq/error-code.md +62 -36
  45. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +1 -1
  46. package/resource/knowledge/callkit/preset/android/api.md +10 -10
  47. package/resource/knowledge/callkit/preset/harmonyos/api.md +362 -0
  48. package/resource/knowledge/callkit/preset/harmonyos/integration.md +322 -0
  49. package/resource/knowledge/callkit/preset/ios/api.md +9 -9
  50. package/resource/knowledge/callkit/preset/miniprogram/api-uniapp.md +293 -0
  51. package/resource/knowledge/callkit/preset/miniprogram/api.md +19 -19
  52. package/resource/knowledge/callkit/preset/miniprogram/integration.md +292 -0
  53. package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +521 -0
  54. package/resource/knowledge/callkit/preset/uni-app/api.md +49 -0
  55. package/resource/knowledge/callkit/preset/uni-app/integration.md +353 -0
  56. package/resource/knowledge/chat/preset/android-view/integration.md +54 -102
  57. package/resource/knowledge/chat/preset/ios/features/language.md +5 -5
  58. package/resource/knowledge/chat/preset/ios-uikit/integration.md +194 -926
  59. package/resource/knowledge/chat/preset/react/features/search.md +9 -214
  60. package/resource/knowledge/chat/preset/react/h5/integration.md +965 -0
  61. package/resource/knowledge/chat/preset/vue/features/chat-header.md +0 -36
  62. package/resource/knowledge/chat/preset/vue/features/contact-list.md +0 -34
  63. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +0 -39
  64. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +0 -74
  65. package/resource/knowledge/chat/preset/vue/features/message-input.md +4 -4
  66. package/resource/knowledge/chat/preset/vue/features/search.md +9 -790
  67. package/resource/knowledge/chat/preset/vue/h5/integration.md +724 -0
  68. package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +3 -3
  69. package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +3 -3
  70. package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +3 -3
  71. package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -3
  72. package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +3 -3
  73. package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +3 -3
  74. package/resource/knowledge/livekit/core-sdk/features/uni-app/audience-list.md +3 -3
  75. package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +3 -170
  76. package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +1 -1
  77. package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +3 -3
  78. package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -1
  79. package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +3 -3
  80. package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +3 -3
  81. package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +1 -1
  82. package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +3 -3
  83. package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +2 -2
  84. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +13 -78
  85. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +5 -70
  86. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +10 -10
  87. package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -1
  88. package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +4 -4
  89. package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -1
  90. package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +1 -1
  91. package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +4 -4
  92. package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +7 -7
  93. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +1 -24
  94. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +0 -3
  95. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -5
  96. package/resource/knowledge/push/api-reference/harmonyos.md +9 -9
  97. package/resource/knowledge/push/api-reference/unity.md +10 -10
  98. package/resource/knowledge/push/api-reference/unreal-engine.md +11 -11
  99. package/resource/knowledge/push/config/donut.md +3 -3
  100. package/resource/knowledge/push/config/harmonyos.md +12 -12
  101. package/resource/knowledge/push/config/ios.md +2 -2
  102. package/resource/knowledge/push/integration/android.md +90 -1067
  103. package/resource/knowledge/push/integration/donut.md +11 -11
  104. package/resource/knowledge/push/integration/flutter.md +38 -24
  105. package/resource/knowledge/push/integration/harmonyos.md +1 -11
  106. package/resource/knowledge/push/integration/ios.md +29 -40
  107. package/resource/knowledge/push/integration/react-native.md +1 -1
  108. package/resource/knowledge/push/integration/uni-app.md +1 -1
  109. package/resource/knowledge/push/integration/unity.md +4 -4
  110. package/resource/knowledge/push/integration/unreal-engine.md +9 -9
  111. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +6 -6
  112. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +13 -13
  113. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +5 -5
  114. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -4
  115. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +6 -6
  116. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -4
  117. package/resource/knowledge/roomkit/core-sdk/vue/device-detection.md +0 -9
  118. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
  119. package/resource/knowledge/roomkit/core-sdk/vue/recording.md +3 -3
  120. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
  121. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -16
  122. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +0 -3
  123. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +3 -6
  124. package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +0 -15
  125. package/resource/knowledge/roomkit/preset/android/integration.md +5 -202
  126. package/resource/knowledge/roomkit/preset/flutter/integration.md +17 -13
  127. package/resource/knowledge/roomkit/preset/harmonyos/integration.md +10 -2
  128. package/resource/knowledge/roomkit/preset/ios/integration.md +7 -204
  129. package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
  130. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +244 -500
  131. package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
  132. package/server.js +1 -1
  133. package/utils/preflight-route.js +203 -185
  134. package/utils/report-cls-client.js +1 -1
  135. package/utils/report-es-client.js +1 -1
@@ -118,7 +118,7 @@
118
118
 
119
119
  ### 运行效果
120
120
 
121
- 当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制您想要的 UI 逻辑。
121
+ 当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 [完善 UI 细节](#6fe270da-d3b3-4785-bdc2-53b59d6d9cc0) 来定制您想要的 UI 逻辑。
122
122
 
123
123
  ## 完善 UI 细节
124
124
 
@@ -133,9 +133,9 @@
133
133
 
134
134
  这个组件是我们的“UI 贴纸”,它只负责根据数据渲染 UI,不关心视频。
135
135
 
136
- - 在您的 `components` 目录下,创建一个新文件 `ParticipantOverlay.vue`。
136
+ - 在您的 `components` 目录下,创建一个新文件 `ParticipantOverlay.vue`。
137
137
 
138
- - 将以下代码复制到文件中。
138
+ - 将以下代码复制到文件中。
139
139
 
140
140
  ``` typescript
141
141
  <template>
@@ -187,52 +187,14 @@
187
187
  };
188
188
  </script>
189
189
 
190
- <style scoped>
191
- .overlay-container {
192
- pointer-events: none;
193
- }
194
-
195
- .participant-ui-container {
196
- overflow: hidden;
197
- }
198
- .avatar-placeholder {
199
- display: flex;
200
- flex-direction: column;
201
- justify-content: center;
202
- align-items: center;
203
- background-color: #2E323A;
204
- }
205
- .avatar-image {
206
- width: 160rpx;
207
- height: 160rpx;
208
- border-radius: 80rpx;
209
- }
210
- .avatar-name {
211
- margin-top: 20rpx;
212
- font-size: 28rpx;
213
- color: #FFFFFF;
214
- }
215
- .nickname-bar {
216
- position: absolute;
217
- left: 10rpx;
218
- bottom: 10rpx;
219
- background-color: rgba(0, 0, 0, 0.5);
220
- padding: 4rpx 16rpx;
221
- border-radius: 20rpx;
222
- }
223
- .nickname-text {
224
- color: #FFFFFF;
225
- font-size: 24rpx;
226
- }
227
- </style>
228
190
  ```
229
191
  - **步骤 2**:在直播间页面中组合所有组件
230
192
 
231
193
  这是将视频层和 `UI` 层“叠”在一起的关键步骤,同时需要解决 `nvue` 的布局问题。
232
194
 
233
- - 打开您的直播间页面文件
195
+ - 打开您的直播间页面文件
234
196
 
235
- - 按照以下结构和样式进行修改。
197
+ - 按照以下结构和样式进行修改。
236
198
 
237
199
  ``` typescript
238
200
  <template>
@@ -275,33 +237,6 @@
275
237
  });
276
238
  </script>
277
239
 
278
- <style scoped>
279
- .page-container {
280
- flex: 1;
281
- background-color: #000;
282
- }
283
-
284
- .live-container {
285
- flex: 1;
286
- position: relative;
287
- }
288
- .video-layer,
289
- .ui-layer {
290
- position: absolute;
291
- top: 0;
292
- left: 0;
293
- right: 0;
294
- bottom: 0;
295
- }
296
-
297
- .video-layer {
298
- z-index: 1;
299
- }
300
-
301
- .ui-layer {
302
- z-index: 2;
303
- }
304
- </style>
305
240
  ```
306
241
 
307
242
  ## API 文档
@@ -13,13 +13,13 @@
13
13
 
14
14
  2. **配置工程权限:** 请在应用的 manifest.json 文件的 app-plus > distribute 节点下,确保添加了以下必要的权限:
15
15
 
16
- - Android 平台(`android` 节点):在 `permissions` 数组中,请确保包含以下权限:
16
+ - Android 平台(`android` 节点):在 `permissions` 数组中,请确保包含以下权限:
17
17
 
18
18
  ``` json
19
19
  "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
20
20
  "<uses-permission android:name=\"android.permission.CAMERA\"/>"
21
21
  ```
22
- - iOS 平台(ios 节点):在 `privacyDescription` 对象中,请确保包含以下描述:
22
+ - iOS 平台(ios 节点):在 `privacyDescription` 对象中,请确保包含以下描述:
23
23
 
24
24
  ``` json
25
25
  "NSCameraUsageDescription" : "应用需要访问您的相机以进行直播",
@@ -243,7 +243,7 @@ onMounted(() => {
243
243
 
244
244
  ### 运行效果
245
245
 
246
- 集成 **LiveCoreView** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 丰富直播场景 来完善直播场景。
246
+ 集成 **LiveCoreView** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 [丰富直播场景](#82dbc44c-8a8e-40e2-89b9-66070f4beb72) 来完善直播场景。
247
247
 
248
248
  ## 丰富直播场景
249
249
 
@@ -282,26 +282,26 @@ onMounted(() => {
282
282
 
283
283
  - 解决方案:
284
284
 
285
- - 使用 `cover-view`:uni-app 提供了 `cover-view` 和 `cover-image`,它们可以覆盖在原生组件之上,但样式支持有限。
285
+ - 使用 `cover-view`:uni-app 提供了 `cover-view` 和 `cover-image`,它们可以覆盖在原生组件之上,但样式支持有限。
286
286
 
287
- - 切换到 `nvue`:如果页面交互复杂,需要大量元素覆盖在原生组件上,建议将整个页面用 `nvue` 来编写。`nvue` 的所有组件都是原生渲染,不存在层级问题。
287
+ - 切换到 `nvue`:如果页面交互复杂,需要大量元素覆盖在原生组件上,建议将整个页面用 `nvue` 来编写。`nvue` 的所有组件都是原生渲染,不存在层级问题。
288
288
 
289
289
  ### nvue 与 vue 的抉择问题
290
290
  - 问题:不知道什么时候该用 `nvue`,什么时候用 `vue`。
291
291
 
292
292
  - 选型建议:
293
293
 
294
- - 默认用 `vue`:适合绝大多数业务和 UI 复杂的页面。
294
+ - 默认用 `vue`:适合绝大多数业务和 UI 复杂的页面。
295
295
 
296
- - 当遇到长列表滑动卡顿、复杂动画掉帧、需要覆盖原生组件等性能或层级问题时,再考虑将该页面重构为 `nvue`。直播、地图这类页面是 nvue 的绝佳应用场景。
296
+ - 当遇到长列表滑动卡顿、复杂动画掉帧、需要覆盖原生组件等性能或层级问题时,再考虑将该页面重构为 `nvue`。直播、地图这类页面是 nvue 的绝佳应用场景。
297
297
 
298
298
  ### 原生能力集成问题
299
299
  - 问题:插件调用失败或无响应。
300
300
 
301
301
  - 解决方案:
302
302
 
303
- - 必须打包自定义基座:在开发调试原生插件时,不能使用标准基座,必须通过 `HBuilderX` > 运行 > 运行到手机或模拟器 > 制作自定义基座,然后选择这个自定义基座来运行。
303
+ - 必须打包自定义基座:在开发调试原生插件时,不能使用标准基座,必须通过 `HBuilderX` > 运行 > 运行到手机或模拟器 > 制作自定义基座,然后选择这个自定义基座来运行。
304
304
 
305
- - 检查权限:如本文档“准备工作”中所述,`manifest.json` 必须声明相机、麦克风等权限。
305
+ - 检查权限:如本文档“准备工作”中所述,`manifest.json` 必须声明相机、麦克风等权限。
306
306
 
307
- - 查看原生日志:这是终极调试手段。通过 `Android Studio (Logcat)` 或 `Xcode (Console)` 查看设备的原生日志,通常能发现最直接的错误信息。
307
+ - 查看原生日志:这是终极调试手段。通过 `Android Studio (Logcat)` 或 `Xcode (Console)` 查看设备的原生日志,通常能发现最直接的错误信息。
@@ -463,7 +463,7 @@ seatStore.unlockSeat(2, object : CompletionHandler {
463
463
  主播和普通上麦用户可以调用 `moveUserToSeat` 移动麦位。
464
464
 
465
465
  #### 实现方式:
466
- 1. **主播移动麦位**:主播可以调用此接口将任意用户移动到指定麦位。此时 `userID` 传入目标用户的 ID,`targetIndex` 是目标麦位索引,`policy` 参数来指定如果目标麦位有人时的移动策略。
466
+ 1. **主播移动麦位**:主播可以调用此接口将任意用户移动到指定麦位。此时 `userID` 传入目标用户的 ID,`targetIndex` 是目标麦位索引,`policy` 参数来指定如果目标麦位有人时的移动策略,详见[接口参数](#227e92a5-7552-41ae-b57c-2dab5b7de234)说明。
467
467
 
468
468
  2. **普通上麦用户移动自己麦位**:普通上麦用户也可以调用此接口来移动自己。此时 `userID` 必须传入用户自己的 ID,`targetIndex` 传入想去的新麦位索引,此时 `policy` 参数无效,如果目标麦位有人时会报错并停止移动。
469
469
 
@@ -302,7 +302,7 @@ battleStore.exitBattle(battleID, null)
302
302
 
303
303
  ### 场景二:主播发起带 PK 模式的连线
304
304
 
305
- 1. 主播在个人直播过程中,点击 PK 按钮,打开 UI 面板展示当前正在开播的主播列表(。
305
+ 1. 主播在个人直播过程中,点击 PK 按钮,打开 UI 面板展示当前正在开播的主播列表(详见[《主播发起一场连线》的步骤 1](#1ce7ad55-e199-4098-a9bb-554c204fdd97))。
306
306
 
307
307
  2. 主播选中其中一个主播,发起 PK 邀请。
308
308
 
@@ -410,7 +410,7 @@ override fun onCoHostRequestReceived(inviter: SeatUserInfo, extensionInfo: Strin
410
410
 
411
411
  #### 步骤 4. 自动进入 PK 状态
412
412
 
413
- 此步骤同《主播在连线后再发起 PK》的步骤 3相同,此处不再赘述。
413
+ 此步骤同[《主播在连线后再发起 PK》的步骤 3](#b775b648-c9e2-480c-8678-f7e419e32bfa)相同,此处不再赘述。
414
414
 
415
415
  ## PK 分数更新与胜负判断
416
416
 
@@ -435,9 +435,9 @@ override fun onCoHostRequestReceived(inviter: SeatUserInfo, extensionInfo: Strin
435
435
  #### 关键流程说明
436
436
  1. ​**获取 PK 状态​**:
437
437
 
438
- - 回调配置​:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
438
+ - 回调配置​:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
439
439
 
440
- - 主动查询​:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
440
+ - 主动查询​:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
441
441
 
442
442
  2. **PK 分数计算**​:您的后台服务根据业务规则(例如上述示例),计算 PK 分数增量。
443
443
 
@@ -465,7 +465,7 @@ if (result2.isSuccess) {
465
465
  主播和普通上麦用户可以调用 `moveUserToSeat` 移动麦位。
466
466
 
467
467
  #### 实现方式:
468
- 1. **主播移动麦位**:主播可以调用此接口将任意用户移动到指定麦位。此时 `userID` 传入目标用户的 ID,`targetIndex` 是目标麦位索引,`policy` 参数来指定如果目标麦位有人时的移动策略,详细参见 接口参数 说明。
468
+ 1. **主播移动麦位**:主播可以调用此接口将任意用户移动到指定麦位。此时 `userID` 传入目标用户的 ID,`targetIndex` 是目标麦位索引,`policy` 参数来指定如果目标麦位有人时的移动策略,详细参见 [接口参数](#moveusertoseat-.E6.8E.A5.E5.8F.A3.E5.8F.82.E6.95.B0.EF.BC.9A) 说明。
469
469
 
470
470
  2. **普通上麦用户移动自己麦位**:普通上麦用户也可以调用此接口来移动自己。此时 `userID` 必须传入用户自己的 ID,`targetIndex` 传入想去的新麦位索引,此时 `policy` 参数无效,如果目标麦位有人时会报错并停止移动。
471
471
 
@@ -421,7 +421,7 @@ seatStore.unlockSeat(seatIndex: 2) { result in
421
421
  主播和普通上麦用户可以调用 `moveUserToSeat(userID:targetIndex:policy:completion:)`移动麦位。
422
422
 
423
423
  #### 实现方式:
424
- 1. **主播移动麦位**:主播可以调用此接口将任意用户移动到指定麦位。此时 `userID` 传入目标用户的 ID,`targetIndex` 是目标麦位索引,`policy` 参数来指定如果目标麦位有人时的移动策略,详细参见 接口参数 说明。
424
+ 1. **主播移动麦位**:主播可以调用此接口将任意用户移动到指定麦位。此时 `userID` 传入目标用户的 ID,`targetIndex` 是目标麦位索引,`policy` 参数来指定如果目标麦位有人时的移动策略,详细参见 [接口参数](#227e92a5-7552-41ae-b57c-2dab5b7de234) 说明。
425
425
 
426
426
  2. **普通上麦用户移动自己麦位**:普通上麦用户也可以调用此接口来移动自己。此时 `userID` 必须传入用户自己的 ID,`targetIndex` 传入想去的新麦位索引,此时 `policy` 参数无效,如果目标麦位有人时会报错并停止移动。
427
427
 
@@ -359,7 +359,7 @@ battleStore.exitBattle(battleID: battleID, completion: { [weak self] result in
359
359
 
360
360
  ### 场景二:主播发起带 PK 模式的连线
361
361
 
362
- 1. 主播在个人直播过程中,点击 PK 按钮,打开 UI 面板展示当前正在开播的主播列表(。
362
+ 1. 主播在个人直播过程中,点击 PK 按钮,打开 UI 面板展示当前正在开播的主播列表(详见[《主播发起一场连线》的步骤 1](#1ce7ad55-e199-4098-a9bb-554c204fdd97))。
363
363
 
364
364
  2. 主播选中其中一个主播,发起 PK 邀请。
365
365
 
@@ -506,7 +506,7 @@ coHostStore.coHostEventPublisher
506
506
 
507
507
  #### 步骤 4. 自动进入 PK 状态
508
508
 
509
- 此步骤与 主播在连线后再发起 PK - 步骤 3 相同,此处不再赘述。
509
+ 此步骤与 [主播在连线后再发起 PK - 步骤 3](#b775b648-c9e2-480c-8678-f7e419e32bfa) 相同,此处不再赘述。
510
510
 
511
511
  ## PK 分数更新与胜负判断
512
512
 
@@ -531,9 +531,9 @@ coHostStore.coHostEventPublisher
531
531
  #### 关键流程说明
532
532
  1. ​**获取 PK 状态​**:
533
533
 
534
- - 回调配置​:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
534
+ - 回调配置​:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
535
535
 
536
- - 主动查询​:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
536
+ - 主动查询​:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
537
537
 
538
538
  2. **PK 分数计算**​:您的后台服务根据业务规则(如上述示例),计算 PK 分数增量。
539
539
 
@@ -9,12 +9,12 @@
9
9
 
10
10
  2. **配置工程权限:** 请在应用的 manifest.json 文件的 app-plus > distribute 节点下,确保添加了以下必要的权限:
11
11
 
12
- - Android 平台(`android` 节点):在 `permissions` 数组中,请确保包含以下权限:
12
+ - Android 平台(`android` 节点):在 `permissions` 数组中,请确保包含以下权限:
13
13
 
14
14
  ``` json
15
15
  "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />"
16
16
  ```
17
- - iOS 平台(ios 节点):在 `privacyDescription` 对象中,请确保包含以下描述:
17
+ - iOS 平台(ios 节点):在 `privacyDescription` 对象中,请确保包含以下描述:
18
18
 
19
19
  ``` json
20
20
  "NSMicrophoneUsageDescription" : "应用需要访问您的麦克风以进行直播"
@@ -226,7 +226,7 @@ const handleJoinLive = () => {
226
226
 
227
227
  #### **3. 构建麦位 UI 界面**
228
228
 
229
- 观众构建麦位 UI 的流程与主播完全一致。
229
+ 观众构建麦位 UI 的流程与主播完全一致,请参考主播 [构建麦位 UI 界面](#**4.-.E6.9E.84.E5.BB.BA.E9.BA.A6.E4.BD.8D-ui-.E7.95.8C.E9.9D.A2**)。
230
230
 
231
231
  #### **4. 退出语聊房**
232
232
 
@@ -255,7 +255,7 @@ const handleLeaveLive = () => {
255
255
 
256
256
  ### 运行效果
257
257
 
258
- 完成上述步骤后,即可完成一个最基础的语聊直播场景。您可以参考 丰富语聊场景 来完善语聊场景。
258
+ 完成上述步骤后,即可完成一个最基础的语聊直播场景。您可以参考 [丰富语聊场景](#82dbc44c-8a8e-40e2-89b9-66070f4beb72) 来完善语聊场景。
259
259
 
260
260
  ## 功能进阶
261
261
 
@@ -319,8 +319,8 @@ watch(speakingUsers,(newSpeaker) => {
319
319
 
320
320
  - 解决方案:
321
321
 
322
- - 必须打包自定义基座:在开发调试原生插件时,不能使用标准基座,必须通过 `HBuilderX` > 运行 > 运行到手机或模拟器 > 制作自定义基座,然后选择这个自定义基座来运行。
322
+ - 必须打包自定义基座:在开发调试原生插件时,不能使用标准基座,必须通过 `HBuilderX` > 运行 > 运行到手机或模拟器 > 制作自定义基座,然后选择这个自定义基座来运行。
323
323
 
324
- - 检查权限:如本文档“准备工作”中所述,`manifest.json` 必须声明相机、麦克风等权限。
324
+ - 检查权限:如本文档“准备工作”中所述,`manifest.json` 必须声明相机、麦克风等权限。
325
325
 
326
- - 查看原生日志:这是终极调试手段。通过 `Android Studio (Logcat)` 或 `Xcode (Console)` 查看设备的原生日志,通常能发现最直接的错误信息。
326
+ - 查看原生日志:这是终极调试手段。通过 `Android Studio (Logcat)` 或 `Xcode (Console)` 查看设备的原生日志,通常能发现最直接的错误信息。
@@ -77,7 +77,6 @@ onMounted(async () => {
77
77
  });
78
78
  </script>
79
79
 
80
- <style scoped>.app{width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;padding:20px;box-sizing:border-box}.chat-container{width:100%;max-width:500px;height:600px;border-radius:16px;display:flex;flex-direction:column;overflow:hidden}.chat-content{flex:1;overflow:hidden}.barrage-list{width:100%;height:100%}.chat-input{background-color:var(--bg-color-dialog);padding:16px}.barrage-input{width:100%}</style>
81
80
  ```
82
81
 
83
82
  ## 自定义组件
@@ -100,7 +99,7 @@ onMounted(async () => {
100
99
  | | | | |
101
100
 
102
101
  > **注意:**
103
- > 使用 BarrageList 的默认消息组件时,表情消息会自动渲染为图片。但当您通过 `Message Props` 或 `message-item` Slot 接管自定义消息渲染时,message.textContent 中的表情编码(例如 [TUIEmoji_Flower])不会自动解析,需要您参考 如何处理自定义弹幕消息时的表情渲染 处理。
102
+ > 使用 BarrageList 的默认消息组件时,表情消息会自动渲染为图片。但当您通过 `Message Props` 或 `message-item` Slot 接管自定义消息渲染时,message.textContent 中的表情编码(例如 [TUIEmoji_Flower])不会自动解析,需要您参考 [如何处理自定义弹幕消息时的表情渲染](#3a3aa2ed-5af5-44f8-8e4f-d182393294b9) 处理。
104
103
  >
105
104
 
106
105
  #### **containerStyle + itemStyle** 调整样式
@@ -176,7 +175,6 @@ const getMessageText = (message: Barrage) => {
176
175
  };
177
176
  </script>
178
177
 
179
- <style scoped>.custom-message{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:white;padding:12px;border-radius:12px;margin:4px 0;box-shadow:0 2px 8px rgba(0,0,0,0.1);transition:transform 0.2s ease}.custom-message:hover{transform:translateY(-2px)}.message-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;opacity:0.9}.user-name{font-weight:500;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-time{font-size:11px;opacity:0.7}.message-content{font-size:14px;line-height:1.4;word-break:break-word}</style>
180
178
  ```
181
179
 
182
180
  **步骤 2:在 BarrageList 中使用自定义组件**
@@ -268,7 +266,6 @@ function getGiftCount(message: { data?: string }): number {
268
266
  }
269
267
  </script>
270
268
 
271
- <style scoped>.slot-text-item{font-size:12px;line-height:1.6;padding:6px 12px;border-radius:10px;background:rgba(255,255,255,0.05);word-break:break-word}.slot-owner-badge{display:inline-block;background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;font-size:10px;font-weight:600;padding:1px 8px;border-radius:10px;margin-right:6px;vertical-align:middle;line-height:1.6}.slot-sender-name{color:rgba(167,139,250,0.85);font-weight:500;margin-right:4px}.slot-message-text{color:rgba(255,255,255,0.85)}.slot-gift-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:14px;background:linear-gradient(135deg,rgba(255,0,128,0.15),rgba(255,140,0,0.12) 50%,rgba(168,85,247,0.1));border:1px solid rgba(255,0,128,0.25);box-shadow:0 0 12px rgba(255,0,128,0.1),inset 0 0 12px rgba(255,140,0,0.05)}.slot-gift-img{width:40px;height:40px;flex-shrink:0;object-fit:contain;filter:drop-shadow(0 0 6px rgba(255,140,0,0.5))}.slot-gift-info{display:flex;flex-direction:column;gap:2px;min-width:0}.slot-gift-sender{font-size:12px;color:rgba(255,255,255,0.8);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-gift-detail{font-size:12px;color:rgba(255,255,255,0.5)}.slot-gift-name{color:#ffaa00;font-weight:700;text-shadow:0 0 8px rgba(255,170,0,0.4)}.slot-gift-count{color:#ff4081;font-weight:800;font-size:13px;margin-left:2px;text-shadow:0 0 8px rgba(255,64,129,0.4)}</style>
272
269
  ```
273
270
 
274
271
  #### Props 速查表
@@ -316,7 +313,6 @@ function getGiftCount(message: { data?: string }): number {
316
313
  <BarrageInput containerClass="cyberpunk-input" />
317
314
  </template>
318
315
 
319
- <style>.cyberpunk-input{background:linear-gradient(135deg,rgba(15,10,40,0.9),rgba(30,15,60,0.85))!important;border:1.5px solid transparent!important;border-radius:16px!important;padding:8px 18px!important;box-shadow:0 0 15px rgba(139,92,246,0.2),0 0 30px rgba(255,0,128,0.08),inset 0 1px 0 rgba(255,255,255,0.05)!important;transition:box-shadow .3s ease!important;border-image:linear-gradient(135deg,#ff0080,#7c3aed,#06b6d4) 1!important;border-image-slice:1!important}.cyberpunk-input:focus-within{box-shadow:0 0 24px rgba(139,92,246,0.35),0 0 48px rgba(255,0,128,0.12),inset 0 1px 0 rgba(255,255,255,0.08)!important}</style>
320
316
  ```
321
317
 
322
318
  #### 调整尺寸
@@ -506,7 +502,6 @@ const drawLottery = async () => {
506
502
  subscribeEvent(BarrageEvent.onBarrageReceived, handleLotteryBarrage);
507
503
  </script>
508
504
 
509
- <style scoped>.lottery-panel{padding:8px 0;border-top:1px solid rgba(255,255,255,0.1);display:flex;justify-content:center;gap:10px;align-items:center}.lottery-panel button{padding:6px 20px;border:none;border-radius:20px;font-size:13px;font-weight:600;cursor:pointer;color:#fff;background:linear-gradient(135deg,#ff0080,#7c3aed);box-shadow:0 0 12px rgba(255,0,128,0.2);transition:all .2s ease}.lottery-panel button:hover:not(:disabled){box-shadow:0 0 20px rgba(255,0,128,0.35);transform:translateY(-1px)}.lottery-panel button:disabled{opacity:.5;cursor:not-allowed}.lottery-panel span{font-size:12px;color:rgba(255,255,255,0.7)}</style>
510
505
  ```
511
506
 
512
507
  #### 2. 观众端:参与抽奖
@@ -593,7 +588,6 @@ const handleLotteryBarrage = (barrage: any) => {
593
588
  subscribeEvent(BarrageEvent.onBarrageReceived, handleLotteryBarrage);
594
589
  </script>
595
590
 
596
- <style scoped>.lottery-bar{display:flex;align-items:center;gap:10px;padding:8px 16px;border-top:1px solid rgba(255,255,255,0.1)}.lottery-bar button{padding:6px 16px;border:none;border-radius:20px;font-size:13px;font-weight:600;cursor:pointer;color:#fff;background:linear-gradient(135deg,#ff0080,#7c3aed);box-shadow:0 0 12px rgba(255,0,128,0.2);transition:all .2s ease}.lottery-bar button:hover:not(:disabled){box-shadow:0 0 20px rgba(255,0,128,0.35);transform:translateY(-1px)}.lottery-bar button:disabled{opacity:.6;cursor:not-allowed;background:rgba(139,92,246,0.3);box-shadow:none}.lottery-bar span{font-size:12px;color:rgba(255,255,255,0.5)}.lottery-winner-banner{padding:10px 14px;text-align:center;font-size:13px;font-weight:500;color:#fff;background:linear-gradient(135deg,rgba(245,158,11,0.15),rgba(239,68,68,0.1));border:1px solid rgba(245,158,11,0.25);border-radius:12px;margin:4px 0;animation:banner-pop .4s ease}.lottery-winner-banner .winner-name{color:#fbbf24;font-weight:700}@keyframes banner-pop{0%{opacity:0;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}</style>
597
591
  ```
598
592
 
599
593
  通过 [BarrageList](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#module-BarrageListComponent) 的 `message-item` 插槽对不同类型的抽奖消息进行差异化渲染。
@@ -636,7 +630,6 @@ function getWinnerName(message: { data?: string }): string {
636
630
  }
637
631
  </script>
638
632
 
639
- <style scoped>.lottery-sys-msg{font-size:12px;padding:8px 14px;border-radius:12px;background:linear-gradient(135deg,rgba(255,0,128,0.12),rgba(168,85,247,0.1));border:1px solid rgba(255,0,128,0.2);color:rgba(255,200,50,0.95);font-weight:500;text-align:center}.lottery-join-msg{font-size:12px;padding:6px 12px;border-radius:10px;background:rgba(139,92,246,0.08);color:rgba(167,139,250,0.85)}.lottery-result-msg{font-size:13px;padding:10px 14px;border-radius:12px;background:linear-gradient(135deg,rgba(245,158,11,0.15),rgba(239,68,68,0.1));border:1px solid rgba(245,158,11,0.25);color:#fff;font-weight:500;text-align:center}.winner-name{color:#fbbf24;font-weight:700}.normal-msg{font-size:12px;line-height:1.6;padding:4px 0;word-break:break-word}.msg-sender{color:rgba(167,139,250,0.85);font-weight:500;margin-right:4px}</style>
640
633
  ```
641
634
 
642
635
  ## 常见问题
@@ -844,14 +837,6 @@ import { parseEmoji } from './utils/emojiParser';
844
837
  defineProps<{ message: Barrage }>();
845
838
  </script>
846
839
 
847
- <style scoped>
848
- .emoji {
849
- width: 20px;
850
- height: 20px;
851
- vertical-align: middle;
852
- margin: 0 1px;
853
- }
854
- </style>
855
840
  ```
856
841
 
857
842
  **在 Slot 插槽中使用**
@@ -878,14 +863,6 @@ import { BarrageList } from 'tuikit-atomicx-vue3';
878
863
  import { parseEmoji } from './utils/emojiParser';
879
864
  </script>
880
865
 
881
- <style scoped>
882
- .emoji {
883
- width: 20px;
884
- height: 20px;
885
- vertical-align: middle;
886
- margin: 0 1px;
887
- }
888
- </style>
889
866
  ```
890
867
 
891
868
  **解析原理**
@@ -71,7 +71,6 @@ onMounted(async () => {
71
71
  });
72
72
  </script>
73
73
 
74
- <style>.live-audience-container{display:flex;height:100%;width:300px;padding:20px}.live-audience-list{width:100%;height:100%}</style>
75
74
  ```
76
75
 
77
76
  ## 自定义组件
@@ -119,7 +118,6 @@ const vipUserIds = ['user_vip_001', 'user_vip_002'];
119
118
  const isVip = (userId: string) => vipUserIds.includes(userId);
120
119
  </script>
121
120
 
122
- <style scoped>.custom-mark{display:flex;align-items:center;gap:4px}.vip-badge{background:linear-gradient(135deg,#ffd700,#ffb347);color:#fff;font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px}.muted-badge{font-size:14px;opacity:.7}</style>
123
121
  ```
124
122
 
125
123
  ### 完全接管列表项渲染(audience-item 插槽)
@@ -153,7 +151,6 @@ const isVip = (userId: string) => vipUserIds.includes(userId);
153
151
  import { LiveAudienceList } from 'tuikit-atomicx-vue3';
154
152
  </script>
155
153
 
156
- <style scoped>.custom-audience-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;background:rgba(255,255,255,0.05)}.medal{font-size:20px}.rank-number{font-size:14px;font-weight:600;color:rgba(255,255,255,0.5);min-width:24px;text-align:center}.avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}.name{font-size:14px;color:rgba(255,255,255,0.85);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}</style>
157
154
  ```
158
155
 
159
156
  ### props 速查表
@@ -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
 
@@ -36,11 +36,11 @@
36
36
 
37
37
  2. 为您的应用创建所需的通知类别:
38
38
 
39
- 1. 点击**选择分类**,详细的消息类型说明请参考[《小米推送消息分类新规》](https://dev.mi.com/xiaomihyperos/documentation/detail)。
39
+ 1. 点击**选择分类**,详细的消息类型说明请参考[《小米推送消息分类新规》](https://dev.mi.com/xiaomihyperos/documentation/detail)。
40
40
 
41
- 2. 按以上新规要求完整填写相应信息。
41
+ 2. 按以上新规要求完整填写相应信息。
42
42
 
43
- 3. 提交审核。
43
+ 3. 提交审核。
44
44
 
45
45
  该环节您最多可同时创建8个不同分类的通知类别,我们会在3-5个工作日内完成审核。后续您可在**推送运营平台** > **消息分类管理**中维护应用的通知类别。
46
46