@tencentcloud/sdk-mcp 1.3.8 → 1.4.0

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 (503) hide show
  1. package/index.js +1 -1
  2. package/index.js.map +1 -1
  3. package/package.json +2 -2
  4. package/resource/doc/{tuicallkit/android/faq.md → callkit/faq/android-faq.md} +75 -308
  5. package/resource/doc/{tuicallkit/faq/common/error_code.md → callkit/faq/common/error-code.md} +2 -2
  6. package/resource/doc/{tuicallkit/flutter/faq.md → callkit/faq/flutter-faq.md} +83 -315
  7. package/resource/doc/{tuicallkit/iOS/faq.md → callkit/faq/ios-faq.md} +76 -313
  8. package/resource/doc/{tuicallkit/react/faq.md → callkit/faq/web-faq.md} +78 -311
  9. package/resource/doc/callkit/preset/android/api.md +330 -0
  10. package/resource/doc/callkit/preset/android/integration.md +530 -0
  11. package/resource/doc/callkit/preset/flutter/api.md +401 -0
  12. package/resource/doc/{tuicallkit → callkit/preset}/flutter/integration.md +53 -273
  13. package/resource/doc/callkit/preset/ios/api.md +282 -0
  14. package/resource/doc/{tuicallkit/iOS → callkit/preset/ios}/integration.md +39 -120
  15. package/resource/doc/callkit/preset/react/api.md +600 -0
  16. package/resource/doc/{tuicallkit → callkit/preset}/react/integration.md +6 -6
  17. package/resource/doc/callkit/preset/vue/api.md +600 -0
  18. package/resource/doc/{tuicallkit → callkit/preset}/vue/integration.md +5 -5
  19. package/resource/doc/{chatuikit → chatkit}/android/faq.md +29 -37
  20. package/resource/doc/{chatuikit → chatkit}/android/features/theme.md +22 -166
  21. package/resource/doc/chatkit/android/integration.md +498 -0
  22. package/resource/doc/chatkit/faq/android_sdk/client-api.md +280 -0
  23. package/resource/doc/{chatuikit → chatkit}/faq/common/product.md +4 -17
  24. package/resource/doc/{chatuikit → chatkit}/faq/common/server.md +1 -2
  25. package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +183 -0
  26. package/resource/doc/{chatuikit → chatkit}/faq/flutter_sdk/faq.md +3 -3
  27. package/resource/doc/chatkit/faq/ios_sdk/client-api.md +279 -0
  28. package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/error_code.md +1 -1
  29. package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/faq.md +4 -4
  30. package/resource/doc/{chatuikit → chatkit}/flutter/features/theme.md +22 -166
  31. package/resource/doc/{chatuikit → chatkit}/flutter/integration.md +20 -95
  32. package/resource/doc/{chatuikit/iOS → chatkit/ios}/faq.md +29 -37
  33. package/resource/doc/{chatuikit/iOS → chatkit/ios}/features/theme.md +27 -176
  34. package/resource/doc/{chatuikit/iOS → chatkit/ios}/integration.md +78 -280
  35. package/resource/doc/{chatuikit/vue → chatkit/react}/components/avatar.md +0 -1
  36. package/resource/doc/{chatuikit → chatkit}/react/components/chat-header.md +7 -12
  37. package/resource/doc/{chatuikit → chatkit}/react/components/chat-setting.md +10 -17
  38. package/resource/doc/{chatuikit → chatkit}/react/components/chat.md +1 -1
  39. package/resource/doc/{chatuikit → chatkit}/react/components/component-list.md +0 -1
  40. package/resource/doc/{chatuikit → chatkit}/react/components/contact-list.md +122 -703
  41. package/resource/doc/chatkit/react/components/conversation-actions.md +174 -0
  42. package/resource/doc/chatkit/react/components/conversation-list.md +333 -0
  43. package/resource/doc/chatkit/react/components/conversation-preview.md +116 -0
  44. package/resource/doc/chatkit/react/components/conversation-search.md +57 -0
  45. package/resource/doc/{chatuikit → chatkit}/react/components/message-input.md +36 -186
  46. package/resource/doc/{chatuikit → chatkit}/react/components/message-list.md +21 -113
  47. package/resource/doc/chatkit/react/components/search.md +282 -0
  48. package/resource/doc/{chatuikit → chatkit}/react/components/tuikit.md +5 -26
  49. package/resource/doc/{chatuikit → chatkit}/react/integration.md +37 -104
  50. package/resource/doc/{chatuikit/react → chatkit/vue}/components/avatar.md +0 -1
  51. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-header.md +7 -13
  52. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-setting.md +13 -18
  53. package/resource/doc/{chatuikit → chatkit}/vue/components/chat.md +1 -2
  54. package/resource/doc/{chatuikit → chatkit}/vue/components/component-list.md +0 -1
  55. package/resource/doc/chatkit/vue/components/contact-list.md +271 -0
  56. package/resource/doc/chatkit/vue/components/conversation-actions.md +228 -0
  57. package/resource/doc/{chatuikit → chatkit}/vue/components/conversation-list.md +42 -316
  58. package/resource/doc/chatkit/vue/components/conversation-preview.md +213 -0
  59. package/resource/doc/chatkit/vue/components/conversation-search.md +50 -0
  60. package/resource/doc/{chatuikit → chatkit}/vue/components/message-input.md +1 -23
  61. package/resource/doc/{chatuikit → chatkit}/vue/components/message-list.md +23 -134
  62. package/resource/doc/{chatuikit → chatkit}/vue/components/search.md +73 -640
  63. package/resource/doc/chatkit/vue/components/tuikit.md +45 -0
  64. package/resource/doc/{chatuikit → chatkit}/vue/components/userpicker.md +4 -4
  65. package/resource/doc/{chatuikit → chatkit}/vue/faq.md +1 -1
  66. package/resource/doc/{chatuikit → chatkit}/vue/integration.md +53 -121
  67. package/resource/doc/livekit/core-sdk/live/android/api-reference/AudioEffectStore.md +283 -0
  68. package/resource/doc/livekit/core-sdk/live/android/api-reference/BarrageStore.md +148 -0
  69. package/resource/doc/livekit/core-sdk/live/android/api-reference/BattleStore.md +316 -0
  70. package/resource/doc/livekit/core-sdk/live/android/api-reference/CameraView.md +57 -0
  71. package/resource/doc/livekit/core-sdk/live/android/api-reference/CoGuestStore.md +419 -0
  72. package/resource/doc/livekit/core-sdk/live/android/api-reference/CoHostStore.md +325 -0
  73. package/resource/doc/livekit/core-sdk/live/android/api-reference/DeviceStore.md +436 -0
  74. package/resource/doc/livekit/core-sdk/live/android/api-reference/GiftStore.md +165 -0
  75. package/resource/doc/livekit/core-sdk/live/android/api-reference/LikeStore.md +49 -0
  76. package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveAudienceStore.md +239 -0
  77. package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveCoreView.md +74 -0
  78. package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveSeatStore.md +417 -0
  79. package/resource/doc/livekit/core-sdk/live/android/api-reference/LoginStore.md +207 -0
  80. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audience-list.md +17 -88
  81. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audio-effect.md +34 -192
  82. package/resource/doc/livekit/{live → core-sdk/live}/android/live-barrage.md +26 -139
  83. package/resource/doc/livekit/{live → core-sdk/live}/android/live-base-beauty.md +16 -99
  84. package/resource/doc/livekit/{live → core-sdk/live}/android/live-co-guest-interaction.md +54 -161
  85. package/resource/doc/livekit/{live → core-sdk/live}/android/live-gift.md +75 -455
  86. package/resource/doc/livekit/{live → core-sdk/live}/android/live-host-interaction.md +91 -338
  87. package/resource/doc/livekit/{live → core-sdk/live}/android/live-integration.md +108 -492
  88. package/resource/doc/livekit/{live → core-sdk/live}/android/live-live-list.md +27 -165
  89. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/AudioEffectStore.md +279 -0
  90. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BarrageStore.md +158 -0
  91. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BaseBeautyStore.md +155 -0
  92. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BattleStore.md +304 -0
  93. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoGuestStore.md +394 -0
  94. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoHostStore.md +303 -0
  95. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/DeviceStore.md +410 -0
  96. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/GiftStore.md +160 -0
  97. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LikeStore.md +51 -0
  98. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveAudienceStore.md +231 -0
  99. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveCoreView.md +143 -0
  100. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveSeatStore.md +375 -0
  101. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LoginStore.md +170 -0
  102. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audience-list.md +13 -91
  103. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audio-effect.md +34 -177
  104. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-barrage.md +18 -102
  105. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-base-beauty.md +24 -164
  106. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-co-guest-interaction.md +56 -161
  107. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-gift.md +66 -460
  108. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-host-interaction.md +117 -364
  109. package/resource/doc/livekit/core-sdk/live/flutter/live-integration.md +687 -0
  110. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-live-list.md +22 -161
  111. package/resource/doc/livekit/core-sdk/live/ios/api-reference/AudioEffectStore.md +287 -0
  112. package/resource/doc/livekit/core-sdk/live/ios/api-reference/BarrageStore.md +165 -0
  113. package/resource/doc/livekit/core-sdk/live/ios/api-reference/BaseBeautyStore.md +143 -0
  114. package/resource/doc/livekit/core-sdk/live/ios/api-reference/BattleStore.md +298 -0
  115. package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoGuestStore.md +349 -0
  116. package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoHostStore.md +297 -0
  117. package/resource/doc/livekit/core-sdk/live/ios/api-reference/DeviceStore.md +471 -0
  118. package/resource/doc/livekit/core-sdk/live/ios/api-reference/GiftStore.md +179 -0
  119. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LikeStore.md +49 -0
  120. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveAudienceStore.md +238 -0
  121. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveCoreView.md +74 -0
  122. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveSeatStore.md +412 -0
  123. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LoginStore.md +173 -0
  124. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audience-list.md +23 -96
  125. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audio-effect.md +33 -195
  126. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-barrage.md +35 -150
  127. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-base-beauty.md +20 -105
  128. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-co-guest-interaction.md +35 -140
  129. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-gift.md +77 -457
  130. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-host-interaction.md +70 -317
  131. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-integration.md +90 -473
  132. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-live-list.md +28 -163
  133. package/resource/doc/livekit/core-sdk/voice/android/voice-audience-list.md +264 -0
  134. package/resource/doc/livekit/core-sdk/voice/android/voice-audio-effect.md +226 -0
  135. package/resource/doc/livekit/core-sdk/voice/android/voice-barrage.md +456 -0
  136. package/resource/doc/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +539 -0
  137. package/resource/doc/livekit/core-sdk/voice/android/voice-gift.md +453 -0
  138. package/resource/doc/livekit/core-sdk/voice/android/voice-host-interaction.md +516 -0
  139. package/resource/doc/livekit/core-sdk/voice/android/voice-integration.md +509 -0
  140. package/resource/doc/livekit/core-sdk/voice/android/voice-room-list.md +365 -0
  141. package/resource/doc/livekit/core-sdk/voice/flutter/voice-audience-list.md +259 -0
  142. package/resource/doc/livekit/core-sdk/voice/flutter/voice-audio-effect.md +596 -0
  143. package/resource/doc/livekit/core-sdk/voice/flutter/voice-barrage.md +494 -0
  144. package/resource/doc/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +516 -0
  145. package/resource/doc/livekit/core-sdk/voice/flutter/voice-gift.md +418 -0
  146. package/resource/doc/livekit/core-sdk/voice/flutter/voice-integration.md +563 -0
  147. package/resource/doc/livekit/core-sdk/voice/flutter/voice-room-list.md +709 -0
  148. package/resource/doc/livekit/core-sdk/voice/ios/voice-audience-list.md +262 -0
  149. package/resource/doc/livekit/core-sdk/voice/ios/voice-audio-effect.md +211 -0
  150. package/resource/doc/livekit/core-sdk/voice/ios/voice-barrage.md +414 -0
  151. package/resource/doc/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +492 -0
  152. package/resource/doc/livekit/core-sdk/voice/ios/voice-gift.md +405 -0
  153. package/resource/doc/livekit/core-sdk/voice/ios/voice-host-interaction.md +611 -0
  154. package/resource/doc/livekit/core-sdk/voice/ios/voice-integration.md +478 -0
  155. package/resource/doc/livekit/core-sdk/voice/ios/voice-room-list.md +336 -0
  156. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-audience-list.md +234 -0
  157. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-audio-effect.md +218 -0
  158. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-barrage.md +376 -0
  159. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-co-guest-interaction.md +648 -0
  160. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-gift.md +362 -0
  161. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-integration.md +323 -0
  162. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-room-list.md +470 -0
  163. package/resource/doc/livekit/faq/common/{error_code.md → error-code.md} +2 -3
  164. package/resource/doc/livekit/preset/live/vue/api-reference/index.md +780 -0
  165. package/resource/doc/livekit/preset/live/vue/components/barrage.md +291 -0
  166. package/resource/doc/livekit/{live → preset/live}/vue/components/co-guest-panel.md +9 -48
  167. package/resource/doc/livekit/{live → preset/live}/vue/components/live-audience-list.md +27 -145
  168. package/resource/doc/livekit/{live → preset/live}/vue/components/live-scene-panel.md +13 -76
  169. package/resource/doc/livekit/{live → preset/live}/vue/components/live-view.md +33 -224
  170. package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +211 -0
  171. package/resource/doc/livekit/preset/live/vue/faq.md +1 -0
  172. package/resource/doc/livekit/preset/live/vue/live-list-integration.md +244 -0
  173. package/resource/doc/livekit/preset/live/vue/live-player-desk-integration.md +301 -0
  174. package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +307 -0
  175. package/resource/doc/livekit/preset/live/vue/live-pusher-integration.md +754 -0
  176. package/resource/doc/roomkit/android/features/call-user-to-room.md +234 -0
  177. package/resource/doc/roomkit/android/features/room-participant-state.md +850 -0
  178. package/resource/doc/roomkit/android/features/room-state.md +358 -0
  179. package/resource/doc/roomkit/android/features/schedule-room.md +336 -0
  180. package/resource/doc/roomkit/android/integration.md +433 -0
  181. package/resource/doc/roomkit/{common/error_code.md → faq/common/error-code.md} +1 -1
  182. package/resource/doc/roomkit/flutter/features/call-user-to-room.md +228 -0
  183. package/resource/doc/roomkit/flutter/features/room-participant-state.md +796 -0
  184. package/resource/doc/roomkit/flutter/features/room-state.md +324 -0
  185. package/resource/doc/roomkit/flutter/features/schedule-room.md +324 -0
  186. package/resource/doc/roomkit/flutter/integration.md +405 -0
  187. package/resource/doc/roomkit/ios/features/call-user-to-room.md +226 -0
  188. package/resource/doc/roomkit/ios/features/room-participant-state.md +821 -0
  189. package/resource/doc/roomkit/ios/features/room-state.md +320 -0
  190. package/resource/doc/roomkit/ios/features/schedule-room.md +318 -0
  191. package/resource/doc/roomkit/ios/integration.md +384 -0
  192. package/resource/doc/roomkit/vue/faq.md +1 -0
  193. package/resource/doc/roomkit/vue/features/call-user-to-room.md +17 -53
  194. package/resource/doc/roomkit/vue/features/device-detection.md +30 -48
  195. package/resource/doc/roomkit/vue/features/device-state.md +24 -44
  196. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +13 -36
  197. package/resource/doc/roomkit/vue/features/room-chat.md +31 -89
  198. package/resource/doc/roomkit/vue/features/room-participant-state.md +28 -50
  199. package/resource/doc/roomkit/vue/features/room-state.md +25 -36
  200. package/resource/doc/roomkit/vue/features/room-view.md +30 -127
  201. package/resource/doc/roomkit/vue/features/schedule-room.md +9 -40
  202. package/resource/doc/roomkit/vue/features/screen-share.md +22 -90
  203. package/resource/doc/roomkit/vue/features/virtual-background.md +13 -34
  204. package/resource/doc/roomkit/vue/integration.md +118 -282
  205. package/resource/doc/rtcengine/faq/common/userSig.md +17 -141
  206. package/resource/doc/rtcengine/faq/web/web.md +15 -22
  207. package/resource/doc/rtcengine/web/api.md +17 -21
  208. package/resource/doc/rtcengine/web/how_to_integrated_web_sdk.md +4 -10
  209. package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +4 -8
  210. package/resource/doc/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +3 -3
  211. package/resource/doc/rtcengine/web/plugin/21-advanced-auto-play-policy.md +2 -3
  212. package/resource/doc/rtcengine/web/plugin/22-advanced-audio-mixer.md +6 -6
  213. package/resource/doc/rtcengine/web/plugin/23-advanced-support-detection.md +2 -2
  214. package/resource/doc/rtcengine/web/plugin/24-advanced-network-quality.md +2 -4
  215. package/resource/doc/rtcengine/web/plugin/25-advanced-device-change.md +1 -2
  216. package/resource/doc/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +2 -6
  217. package/resource/doc/rtcengine/web/plugin/27-advanced-small-stream.md +13 -14
  218. package/resource/doc/rtcengine/web/plugin/28-advanced-beauty.md +10 -90
  219. package/resource/doc/rtcengine/web/plugin/31-advanced-plugins-overview.md +5 -8
  220. package/resource/doc/rtcengine/web/plugin/34-advanced-proxy.md +31 -35
  221. package/resource/doc/rtcengine/web/plugin/35-advanced-ai-denoiser.md +0 -2
  222. package/resource/doc/rtcengine/web/plugin/36-advanced-virtual-background.md +7 -49
  223. package/resource/doc/rtcengine/web/plugin/37-advanced-voice-changer.md +1 -1
  224. package/resource/doc/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -3
  225. package/resource/doc/rtcengine/web/plugin/40-advanced-video-mixer.md +20 -20
  226. package/resource/doc/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +1 -1
  227. package/resource/doc/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +4 -4
  228. package/resource/doc/rtcengine/web/plugin/43-advanced-face-detection.md +3 -3
  229. package/resource/doc/trtc/C++/ITRTCCloud.md +718 -2847
  230. package/resource/doc/trtc/C++/ITRTCStatistics.md +53 -308
  231. package/resource/doc/trtc/C++/ITXAudioEffectManager.md +207 -1041
  232. package/resource/doc/trtc/C++/ITXDeviceManager.md +127 -768
  233. package/resource/doc/trtc/C++/TRTCCloudCallback.md +634 -2259
  234. package/resource/doc/trtc/C++/TRTCTypeDef.md +726 -3465
  235. package/resource/doc/trtc/C++/TXLiteAVCode.md +117 -916
  236. package/resource/doc/trtc/android/TRTCCloud.md +638 -2612
  237. package/resource/doc/trtc/android/TRTCCloudDef.md +769 -3697
  238. package/resource/doc/trtc/android/TRTCCloudListener.md +609 -2070
  239. package/resource/doc/trtc/android/TRTCStatistics.md +48 -278
  240. package/resource/doc/trtc/android/TXAudioEffectManager.md +207 -1049
  241. package/resource/doc/trtc/android/TXBeautyManager.md +127 -704
  242. package/resource/doc/trtc/android/TXDeviceManager.md +51 -318
  243. package/resource/doc/trtc/android/TXLiteAVCode.md +115 -900
  244. package/resource/doc/trtc/iOS/TRTCCloud.md +726 -2930
  245. package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +580 -2099
  246. package/resource/doc/trtc/iOS/TRTCStatistics.md +48 -278
  247. package/resource/doc/trtc/iOS/TXAudioEffectManager.md +179 -896
  248. package/resource/doc/trtc/iOS/TXBeautyManager.md +128 -710
  249. package/resource/doc/trtc/iOS/TXDeviceManager.md +129 -772
  250. package/resource/doc/trtc/iOS/TXLiteAVCode.md +117 -915
  251. package/resource/doc/trtc/iOS/TXLiveSDKTypeDef.md +747 -3559
  252. package/server.js +1 -5
  253. package/server.js.map +1 -1
  254. package/tools/call/get_callkit_api.js +32 -0
  255. package/tools/call/get_callkit_api.js.map +1 -0
  256. package/tools/call/get_native_call_uikit_integration.js +34 -0
  257. package/tools/call/get_native_call_uikit_integration.js.map +1 -0
  258. package/tools/call/{get-web-call-integration.js → get_web_call_uikit_integration.js} +13 -8
  259. package/tools/call/get_web_call_uikit_integration.js.map +1 -0
  260. package/tools/chat/get_native_chat_uikit_feature_detail.js +34 -0
  261. package/tools/chat/get_native_chat_uikit_feature_detail.js.map +1 -0
  262. package/tools/chat/get_native_chat_uikit_integration.js +45 -0
  263. package/tools/chat/get_native_chat_uikit_integration.js.map +1 -0
  264. package/tools/chat/get_web_chat_uikit_component_detail.js +34 -0
  265. package/tools/chat/get_web_chat_uikit_component_detail.js.map +1 -0
  266. package/tools/chat/get_web_chat_uikit_integration.js +45 -0
  267. package/tools/chat/get_web_chat_uikit_integration.js.map +1 -0
  268. package/tools/common/get_faq.js +265 -0
  269. package/tools/common/get_faq.js.map +1 -0
  270. package/tools/common/{get-usersig.js → get_usersig.js} +6 -3
  271. package/tools/common/get_usersig.js.map +1 -0
  272. package/tools/common/present_framework_choice.js +63 -0
  273. package/tools/common/present_framework_choice.js.map +1 -0
  274. package/tools/definitions/get_callkit_api_def.js +28 -0
  275. package/tools/definitions/get_callkit_api_def.js.map +1 -0
  276. package/tools/definitions/get_faq_def.js +18 -19
  277. package/tools/definitions/get_faq_def.js.map +1 -1
  278. package/tools/definitions/get_native_call_uikit_integration_def.js +15 -18
  279. package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
  280. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +31 -0
  281. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +1 -0
  282. package/tools/definitions/get_native_chat_uikit_integration_def.js +16 -19
  283. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
  284. package/tools/definitions/get_native_livekit_core_features_def.js +33 -0
  285. package/tools/definitions/get_native_livekit_core_features_def.js.map +1 -0
  286. package/tools/definitions/get_native_livekit_core_integration_def.js +33 -0
  287. package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -0
  288. package/tools/definitions/get_native_trtc_sdk_docs_def.js +32 -0
  289. package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +1 -0
  290. package/tools/definitions/get_usersig_def.js +17 -24
  291. package/tools/definitions/get_usersig_def.js.map +1 -1
  292. package/tools/definitions/get_web_call_uikit_integration_def.js +15 -7
  293. package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
  294. package/tools/definitions/get_web_chat_uikit_component_detail_def.js +17 -49
  295. package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +1 -1
  296. package/tools/definitions/get_web_chat_uikit_integration_def.js +16 -19
  297. package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
  298. package/tools/definitions/get_web_live_uikit_integration_def.js +13 -18
  299. package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
  300. package/tools/definitions/get_web_livekit_api_def.js +27 -0
  301. package/tools/definitions/get_web_livekit_api_def.js.map +1 -0
  302. package/tools/definitions/get_web_livekit_component_detail_def.js +29 -0
  303. package/tools/definitions/get_web_livekit_component_detail_def.js.map +1 -0
  304. package/tools/definitions/get_web_room_uikit_integration_def.js +13 -30
  305. package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
  306. package/tools/definitions/get_web_roomkit_feature_detail_def.js +30 -0
  307. package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +1 -0
  308. package/tools/definitions/get_web_trtc_sdk_api_def.js +25 -0
  309. package/tools/definitions/get_web_trtc_sdk_api_def.js.map +1 -0
  310. package/tools/definitions/get_web_trtc_sdk_integration_def.js +25 -0
  311. package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +1 -0
  312. package/tools/definitions/get_web_trtc_sdk_plugin_def.js +25 -0
  313. package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +1 -0
  314. package/tools/definitions/present_framework_choice_def.js +23 -12
  315. package/tools/definitions/present_framework_choice_def.js.map +1 -1
  316. package/tools/index.js +47 -59
  317. package/tools/index.js.map +1 -1
  318. package/tools/live/get_native_livekit_core_features.js +65 -0
  319. package/tools/live/get_native_livekit_core_features.js.map +1 -0
  320. package/tools/live/get_native_livekit_core_integration.js +59 -0
  321. package/tools/live/get_native_livekit_core_integration.js.map +1 -0
  322. package/tools/live/get_web_live_uikit_integration.js +48 -0
  323. package/tools/live/get_web_live_uikit_integration.js.map +1 -0
  324. package/tools/live/get_web_livekit_api.js +32 -0
  325. package/tools/live/get_web_livekit_api.js.map +1 -0
  326. package/tools/live/get_web_livekit_component_detail.js +34 -0
  327. package/tools/live/get_web_livekit_component_detail.js.map +1 -0
  328. package/tools/room/{get-web-room-integration.js → get_web_room_uikit_integration.js} +13 -14
  329. package/tools/room/get_web_room_uikit_integration.js.map +1 -0
  330. package/tools/room/{get-web-room-feature-detail.js → get_web_roomkit_feature_detail.js} +30 -31
  331. package/tools/room/get_web_roomkit_feature_detail.js.map +1 -0
  332. package/tools/rtcengine/get_web_trtc_sdk_api.js +31 -0
  333. package/tools/rtcengine/get_web_trtc_sdk_api.js.map +1 -0
  334. package/tools/rtcengine/get_web_trtc_sdk_integration.js +31 -0
  335. package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +1 -0
  336. package/tools/rtcengine/get_web_trtc_sdk_plugin.js +31 -0
  337. package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +1 -0
  338. package/tools/trtc/get_native_trtc_sdk_docs.js +73 -0
  339. package/tools/trtc/get_native_trtc_sdk_docs.js.map +1 -0
  340. package/utils/generate-structured-result.js +61 -17
  341. package/utils/generate-structured-result.js.map +1 -1
  342. package/utils/report-cls-client.js +12 -1
  343. package/utils/report-cls-client.js.map +1 -1
  344. package/utils/report-es-client.js +1 -1
  345. package/resource/doc/chatuikit/android/integration.md +0 -612
  346. package/resource/doc/chatuikit/android/workflow.md +0 -0
  347. package/resource/doc/chatuikit/faq/android_sdk/client-api.md +0 -1376
  348. package/resource/doc/chatuikit/faq/flutter_sdk/client-api.md +0 -860
  349. package/resource/doc/chatuikit/faq/ios_sdk/client-api.md +0 -1371
  350. package/resource/doc/chatuikit/flutter/workflow.md +0 -816
  351. package/resource/doc/chatuikit/iOS/workflow.md +0 -0
  352. package/resource/doc/chatuikit/react/components/conversation-list.md +0 -765
  353. package/resource/doc/chatuikit/react/components/search.md +0 -885
  354. package/resource/doc/chatuikit/react/create-group.md +0 -22
  355. package/resource/doc/chatuikit/react/init.md +0 -25
  356. package/resource/doc/chatuikit/react/workflow.md +0 -254
  357. package/resource/doc/chatuikit/uniapp-app/faq.md +0 -0
  358. package/resource/doc/chatuikit/uniapp-app/integration.md +0 -619
  359. package/resource/doc/chatuikit/uniapp-app/workflow.md +0 -576
  360. package/resource/doc/chatuikit/vue/components/contact-list.md +0 -679
  361. package/resource/doc/chatuikit/vue/components/tuikit.md +0 -110
  362. package/resource/doc/chatuikit/vue/create-group.md +0 -26
  363. package/resource/doc/chatuikit/vue/init.md +0 -35
  364. package/resource/doc/chatuikit/vue/workflow.md +0 -395
  365. package/resource/doc/livekit/live/android/workflow.md +0 -322
  366. package/resource/doc/livekit/live/flutter/live-integration.md +0 -1029
  367. package/resource/doc/livekit/live/flutter/workflow.md +0 -353
  368. package/resource/doc/livekit/live/ios/workflow.md +0 -352
  369. package/resource/doc/livekit/live/vue/components/barrage.md +0 -615
  370. package/resource/doc/livekit/live/vue/components/stream-mixer.md +0 -442
  371. package/resource/doc/livekit/live/vue/faq.md +0 -0
  372. package/resource/doc/livekit/live/vue/live-list-integration.md +0 -195
  373. package/resource/doc/livekit/live/vue/live-player-desk-integration.md +0 -293
  374. package/resource/doc/livekit/live/vue/live-player-h5-integration.md +0 -381
  375. package/resource/doc/livekit/live/vue/live-pusher-integration.md +0 -598
  376. package/resource/doc/livekit/live/vue/states/live-state.md +0 -2656
  377. package/resource/doc/livekit/live/vue/workflow.md +0 -219
  378. package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +0 -334
  379. package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +0 -434
  380. package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +0 -685
  381. package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +0 -712
  382. package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +0 -284
  383. package/resource/doc/native_live/android/V2TXLivePusherObserver_api_android.md +0 -849
  384. package/resource/doc/native_live/android/V2TXLivePusher_api_android.md +0 -1046
  385. package/resource/doc/native_live/flutter/V2TXLiveCode_api_flutter.md +0 -460
  386. package/resource/doc/native_live/flutter/V2TXLiveDef_api_flutter.md +0 -558
  387. package/resource/doc/native_live/flutter/V2TXLivePlayerObserver_api_flutter.md +0 -879
  388. package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +0 -668
  389. package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +0 -456
  390. package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +0 -332
  391. package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +0 -748
  392. package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +0 -328
  393. package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +0 -505
  394. package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +0 -507
  395. package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +0 -676
  396. package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +0 -284
  397. package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +0 -820
  398. package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +0 -1065
  399. package/resource/doc/roomkit/vue/features/workflow.md +0 -553
  400. package/resource/doc/roomkit/vue/workflow.md +0 -487
  401. package/resource/doc/tuicallkit/android/integration.md +0 -302
  402. package/resource/doc/tuicallkit/android/workflow.md +0 -0
  403. package/resource/doc/tuicallkit/faq/android_sdk/call-observer-api.md +0 -786
  404. package/resource/doc/tuicallkit/faq/android_sdk/callkit-api.md +0 -663
  405. package/resource/doc/tuicallkit/faq/flutter_sdk/call-define-api.md +0 -932
  406. package/resource/doc/tuicallkit/faq/flutter_sdk/call-observer-api.md +0 -926
  407. package/resource/doc/tuicallkit/faq/flutter_sdk/callkit-api.md +0 -452
  408. package/resource/doc/tuicallkit/faq/ios_sdk/call-observer-api.md +0 -779
  409. package/resource/doc/tuicallkit/faq/ios_sdk/callkit-api.md +0 -635
  410. package/resource/doc/tuicallkit/flutter/workflow.md +0 -331
  411. package/resource/doc/tuicallkit/react/api.md +0 -1512
  412. package/resource/doc/tuicallkit/vue/api.md +0 -1512
  413. package/resource/doc/tuicallkit/vue/faq.md +0 -986
  414. package/tools/call/get-native-call-integration.js +0 -43
  415. package/tools/call/get-native-call-integration.js.map +0 -1
  416. package/tools/call/get-web-call-api.js +0 -27
  417. package/tools/call/get-web-call-api.js.map +0 -1
  418. package/tools/call/get-web-call-integration.js.map +0 -1
  419. package/tools/chat/get-native-chat-feature-detail.js +0 -30
  420. package/tools/chat/get-native-chat-feature-detail.js.map +0 -1
  421. package/tools/chat/get-native-chat-integration.js +0 -45
  422. package/tools/chat/get-native-chat-integration.js.map +0 -1
  423. package/tools/chat/get-web-chat-component-detail.js +0 -31
  424. package/tools/chat/get-web-chat-component-detail.js.map +0 -1
  425. package/tools/chat/get-web-chat-integration.js +0 -45
  426. package/tools/chat/get-web-chat-integration.js.map +0 -1
  427. package/tools/chat/get-web-chat-uikit-init.js +0 -28
  428. package/tools/chat/get-web-chat-uikit-init.js.map +0 -1
  429. package/tools/chat/get-web-create-group-doc.js +0 -28
  430. package/tools/chat/get-web-create-group-doc.js.map +0 -1
  431. package/tools/common/get-faq.js +0 -91
  432. package/tools/common/get-faq.js.map +0 -1
  433. package/tools/common/get-usersig.js.map +0 -1
  434. package/tools/common/present-framework-choice.js +0 -16
  435. package/tools/common/present-framework-choice.js.map +0 -1
  436. package/tools/common/record-prompt.js +0 -55
  437. package/tools/common/record-prompt.js.map +0 -1
  438. package/tools/common/record-result.js +0 -60
  439. package/tools/common/record-result.js.map +0 -1
  440. package/tools/definitions/get_native_chat_feature_detail_def.js +0 -32
  441. package/tools/definitions/get_native_chat_feature_detail_def.js.map +0 -1
  442. package/tools/definitions/get_native_live_api_def.js +0 -22
  443. package/tools/definitions/get_native_live_api_def.js.map +0 -1
  444. package/tools/definitions/get_native_live_uikit_extra_features_def.js +0 -109
  445. package/tools/definitions/get_native_live_uikit_extra_features_def.js.map +0 -1
  446. package/tools/definitions/get_native_live_uikit_integration_def.js +0 -50
  447. package/tools/definitions/get_native_live_uikit_integration_def.js.map +0 -1
  448. package/tools/definitions/get_native_live_uikit_interaction_def.js +0 -115
  449. package/tools/definitions/get_native_live_uikit_interaction_def.js.map +0 -1
  450. package/tools/definitions/get_trtc_native_api_def.js +0 -17
  451. package/tools/definitions/get_trtc_native_api_def.js.map +0 -1
  452. package/tools/definitions/get_web_call_uikit_api_def.js +0 -23
  453. package/tools/definitions/get_web_call_uikit_api_def.js.map +0 -1
  454. package/tools/definitions/get_web_chat_uikit_init_def.js +0 -23
  455. package/tools/definitions/get_web_chat_uikit_init_def.js.map +0 -1
  456. package/tools/definitions/get_web_create_group_doc_def.js +0 -18
  457. package/tools/definitions/get_web_create_group_doc_def.js.map +0 -1
  458. package/tools/definitions/get_web_live_state_detail_def.js +0 -19
  459. package/tools/definitions/get_web_live_state_detail_def.js.map +0 -1
  460. package/tools/definitions/get_web_live_uikit_component_detail_def.js +0 -27
  461. package/tools/definitions/get_web_live_uikit_component_detail_def.js.map +0 -1
  462. package/tools/definitions/get_web_room_feature_detail_def.js +0 -95
  463. package/tools/definitions/get_web_room_feature_detail_def.js.map +0 -1
  464. package/tools/definitions/record_prompt_def.js +0 -53
  465. package/tools/definitions/record_prompt_def.js.map +0 -1
  466. package/tools/definitions/record_result_def.js +0 -30
  467. package/tools/definitions/record_result_def.js.map +0 -1
  468. package/tools/live/get-native-live-uikit-integration.js +0 -101
  469. package/tools/live/get-native-live-uikit-integration.js.map +0 -1
  470. package/tools/live/get-web-live-component-detail.js +0 -31
  471. package/tools/live/get-web-live-component-detail.js.map +0 -1
  472. package/tools/live/get-web-live-state-detail.js +0 -31
  473. package/tools/live/get-web-live-state-detail.js.map +0 -1
  474. package/tools/live/get-web-live-uikit-integration.js +0 -52
  475. package/tools/live/get-web-live-uikit-integration.js.map +0 -1
  476. package/tools/live/get_native_live_uikit_extra_features.js +0 -105
  477. package/tools/live/get_native_live_uikit_extra_features.js.map +0 -1
  478. package/tools/live/get_native_live_uikit_interaction.js +0 -101
  479. package/tools/live/get_native_live_uikit_interaction.js.map +0 -1
  480. package/tools/native_live/get-native-live-api.js +0 -31
  481. package/tools/native_live/get-native-live-api.js.map +0 -1
  482. package/tools/room/get-web-room-feature-detail.js.map +0 -1
  483. package/tools/room/get-web-room-integration.js.map +0 -1
  484. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js +0 -28
  485. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js.map +0 -1
  486. package/tools/rtcengine/get-trtc-sdk-faq.js +0 -32
  487. package/tools/rtcengine/get-trtc-sdk-faq.js.map +0 -1
  488. package/tools/rtcengine/get-trtc-web-sdk-api.js +0 -28
  489. package/tools/rtcengine/get-trtc-web-sdk-api.js.map +0 -1
  490. package/tools/rtcengine/get-trtc-web-sdk-faq.js +0 -30
  491. package/tools/rtcengine/get-trtc-web-sdk-faq.js.map +0 -1
  492. package/tools/rtcengine/get-trtc-web-sdk-integration.js +0 -29
  493. package/tools/rtcengine/get-trtc-web-sdk-integration.js.map +0 -1
  494. package/tools/rtcengine/get-trtc-web-sdk-plugin.js +0 -45
  495. package/tools/rtcengine/get-trtc-web-sdk-plugin.js.map +0 -1
  496. package/tools/trtc/get-trtc-native-api.js +0 -31
  497. package/tools/trtc/get-trtc-native-api.js.map +0 -1
  498. package/utils/handle-component-name.js +0 -33
  499. package/utils/handle-component-name.js.map +0 -1
  500. /package/resource/doc/{rtcengine/web → callkit/core-sdk}/.gitkeep +0 -0
  501. /package/resource/doc/{chatuikit → chatkit}/faq/common/server_error_code.md +0 -0
  502. /package/resource/doc/{chatuikit → chatkit}/flutter/faq.md +0 -0
  503. /package/resource/doc/{chatuikit → chatkit}/react/faq.md +0 -0
@@ -1,8 +1,5 @@
1
1
  `LiveListStore` 是 `AtomicXCore` 中负责管理直播房间列表、创建、加入以及维护房间状态的核心模块。通过`LiveListStore`,您可以为您的应用构建完整的直播生命周期管理。
2
2
 
3
- ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027182498/6fd3c4f2ab6011f0b5345254005ef0f7.png)
4
-
5
-
6
3
  ## 核心功能
7
4
  - **直播列表拉取**:获取当前所有公开的直播间列表,支持分页加载。
8
5
 
@@ -14,58 +11,21 @@
14
11
 
15
12
  - **自定义业务数据**:强大的自定义元数据(`MetaData`)能力,允许您在房间内存储和同步任何业务相关的信息,例如直播状态、音乐信息、自定义角色等 。
16
13
 
17
-
18
14
  ## 核心概念
19
15
 
20
16
  在开始集成之前,我们先通过下表了解一下 `LiveListStore` 相关的几个核心概念:
21
- <table>
22
- <tr>
23
- <td rowspan="1" colSpan="1" >**核心概念**</td>
24
-
25
- <td rowspan="1" colSpan="1" >**类型**</td>
26
-
27
- <td rowspan="1" colSpan="1" >**核心职责与描述**</td>
28
- </tr>
29
-
30
- <tr>
31
- <td rowspan="1" colSpan="1" >`LiveInfo`</td>
32
-
33
- <td rowspan="1" colSpan="1" >`struct`</td>
34
-
35
- <td rowspan="1" colSpan="1" >代表一个直播间的所有信息模型。包含了直播ID (`liveID`)、名称 (`liveName`)、房主信息 (`liveOwner`) 以及自定义元数据 (`metaData`) 等。</td>
36
- </tr>
37
-
38
- <tr>
39
- <td rowspan="1" colSpan="1" >`LiveListState`</td>
40
-
41
- <td rowspan="1" colSpan="1" >`struct`</td>
42
-
43
- <td rowspan="1" colSpan="1" >代表直播列表模块的当前状态。其核心属性 liveList 是一个 `[LiveInfo] `数组,存储了拉取到的直播列表;`currentLive` 则代表用户当前所在的直播间信息。</td>
44
- </tr>
45
-
46
- <tr>
47
- <td rowspan="1" colSpan="1" >`LiveListEvent`</td>
48
-
49
- <td rowspan="1" colSpan="1" >`enum`</td>
50
-
51
- <td rowspan="1" colSpan="1" >代表直播房间的全局事件。分为 `.onLiveEnded` (直播结束) 和 `.onKickedOutOfLive` (被踢出直播) 两种,用于处理关键的房间状态变更。</td>
52
- </tr>
53
-
54
- <tr>
55
- <td rowspan="1" colSpan="1" >`LiveListStore`</td>
56
-
57
- <td rowspan="1" colSpan="1" >`class`</td>
58
-
59
- <td rowspan="1" colSpan="1" >这是与直播列表和房间生命周期交互的核心管理类。它是一个全局单例 (shared),负责所有直播房间的创建、加入、信息更新等操作。</td>
60
- </tr>
61
- </table>
62
-
17
+ | **核心概念** | **类型** | **核心职责与描述** |
18
+ | --- | --- | --- |
19
+ | `LiveInfo` | `struct` | 代表一个直播间的所有信息模型。包含了直播ID (`liveID`)、名称 (`liveName`)、房主信息 (`liveOwner`) 以及自定义元数据 (`metaData`) 等。 |
20
+ | `LiveListState` | `struct` | 代表直播列表模块的当前状态。其核心属性 liveList 是一个 `[LiveInfo] `数组,存储了拉取到的直播列表;`currentLive` 则代表用户当前所在的直播间信息。 |
21
+ | `LiveListEvent` | `enum` | 代表直播房间的全局事件。分为 `.onLiveEnded` (直播结束) 和 `.onKickedOutOfLive` (被踢出直播) 两种,用于处理关键的房间状态变更。 |
22
+ | `LiveListStore` | `class` | 这是与直播列表和房间生命周期交互的核心管理类。它是一个全局单例 (shared),负责所有直播房间的创建、加入、信息更新等操作。 |
63
23
 
64
24
  ## 实现步骤
65
25
 
66
26
  ### 步骤1:组件集成
67
27
 
68
- 请参考 [开始直播](https://write.woa.com/document/191126382767431680) 集成 **AtomicXCore**,并完成 [主播开播](https://write.woa.com/document/191126382767431680) 和 [观众观看](https://write.woa.com/document/191126382767431680) 的功能实现。
28
+ 请参考 开始直播 集成 **AtomicXCore**,并完成 主播开播 和 观众观看 的功能实现。
69
29
 
70
30
  ### 步骤2:实现观众从直播列表进入直播间
71
31
 
@@ -81,7 +41,7 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
81
41
  private let liveListStore = LiveListStore.shared
82
42
  private var cancellables = Set<AnyCancellable>()
83
43
  private var liveList: [LiveInfo] = []
84
-
44
+
85
45
  private var collectionView: UICollectionView!
86
46
 
87
47
  override func viewDidLoad() {
@@ -90,7 +50,7 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
90
50
  bindStore()
91
51
  fetchLiveList()
92
52
  }
93
-
53
+
94
54
  private func bindStore() {
95
55
  // 订阅 state,自动接收列表更新
96
56
  liveListStore.state
@@ -110,17 +70,17 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
110
70
  }
111
71
  }
112
72
  }
113
-
73
+
114
74
  // 当用户点击列表中的某个Cell时
115
75
  func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
116
76
  let selectedLiveInfo = liveList[indexPath.item]
117
-
77
+
118
78
  // 创建观众观看页面,并将 liveId 传入
119
79
  let audienceVC = YourAudienceViewController(liveId: selectedLiveInfo.liveID)
120
80
  audienceVC.modalPresentationStyle = .fullScreen
121
81
  present(audienceVC, animated: true)
122
82
  }
123
-
83
+
124
84
  // --- UICollectionViewDataSource, Delegate, and UI setup methods ---
125
85
  private func setupUI() {
126
86
  let layout = UICollectionViewFlowLayout()
@@ -135,7 +95,7 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
135
95
  func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
136
96
  return liveList.count
137
97
  }
138
-
98
+
139
99
  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
140
100
  let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "LiveCell", for: indexPath)
141
101
  cell.backgroundColor = .lightGray // 自定义您的Cell样式
@@ -143,7 +103,7 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
143
103
  // ... (例如: cell.titleLabel.text = liveInfo.liveName)
144
104
  return cell
145
105
  }
146
-
106
+
147
107
  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
148
108
  // 单列、双列布局可通过自定义您的Cell大小来实现
149
109
  let width = (view.bounds.width - 30) / 2
@@ -153,80 +113,16 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
153
113
  ```
154
114
 
155
115
  **LiveInfo 参数说明**
156
- <table>
157
- <tr>
158
- <td rowspan="1" colSpan="1" >**参数名**</td>
159
-
160
- <td rowspan="1" colSpan="1" >**类型**</td>
161
-
162
- <td rowspan="1" colSpan="1" >**描述**</td>
163
- </tr>
164
-
165
- <tr>
166
- <td rowspan="1" colSpan="1" >`liveID`</td>
167
-
168
- <td rowspan="1" colSpan="1" >`String`</td>
169
-
170
- <td rowspan="1" colSpan="1" >直播间的唯一标识符</td>
171
- </tr>
172
-
173
- <tr>
174
- <td rowspan="1" colSpan="1" >`liveName`</td>
175
-
176
- <td rowspan="1" colSpan="1" >`String`</td>
177
-
178
- <td rowspan="1" colSpan="1" >直播间的标题</td>
179
- </tr>
180
-
181
- <tr>
182
- <td rowspan="1" colSpan="1" >`coverURL`</td>
183
-
184
- <td rowspan="1" colSpan="1" >`String`</td>
185
-
186
- <td rowspan="1" colSpan="1" >直播间的封面图片地址</td>
187
- </tr>
188
-
189
- <tr>
190
- <td rowspan="1" colSpan="1" >`liveOwner`</td>
191
-
192
- <td rowspan="1" colSpan="1" >[LiveUserInfo](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/liveuserinfo)</td>
193
-
194
- <td rowspan="1" colSpan="1" >房主的个人信息</td>
195
- </tr>
196
-
197
- <tr>
198
- <td rowspan="1" colSpan="1" >`totalViewerCount`</td>
199
-
200
- <td rowspan="1" colSpan="1" >`Int`</td>
201
-
202
- <td rowspan="1" colSpan="1" >直播间的总观看人数</td>
203
- </tr>
204
-
205
- <tr>
206
- <td rowspan="1" colSpan="1" >`categoryList`</td>
207
-
208
- <td rowspan="1" colSpan="1" >`[NSNumber]`</td>
209
-
210
- <td rowspan="1" colSpan="1" >直播间的分类标签列表</td>
211
- </tr>
212
-
213
- <tr>
214
- <td rowspan="1" colSpan="1" >`notice`</td>
215
-
216
- <td rowspan="1" colSpan="1" >`String`</td>
217
-
218
- <td rowspan="1" colSpan="1" >直播间的公告信息</td>
219
- </tr>
220
-
221
- <tr>
222
- <td rowspan="1" colSpan="1" >`metaData`</td>
223
-
224
- <td rowspan="1" colSpan="1" >`[String: String]`</td>
225
-
226
- <td rowspan="1" colSpan="1" >开发者自定义的元数据,用于实现复杂的业务场景</td>
227
- </tr>
228
- </table>
229
-
116
+ | **参数名** | **类型** | **描述** |
117
+ | --- | --- | --- |
118
+ | `liveID` | `String` | 直播间的唯一标识符 |
119
+ | `liveName` | `String` | 直播间的标题 |
120
+ | `coverURL` | `String` | 直播间的封面图片地址 |
121
+ | `liveOwner` | [LiveUserInfo](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/liveuserinfo) | 房主的个人信息 |
122
+ | `totalViewerCount` | `Int` | 直播间的总观看人数 |
123
+ | `categoryList` | `[NSNumber]` | 直播间的分类标签列表 |
124
+ | `notice` | `String` | 直播间的公告信息 |
125
+ | `metaData` | `[String: String]` | 开发者自定义的元数据,用于实现复杂的业务场景 |
230
126
 
231
127
  ## 功能进阶
232
128
 
@@ -234,9 +130,6 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
234
130
 
235
131
  在 App 的直播广场页,顶部设有“热门”、“音乐”、“游戏”等分类标签。用户点击不同的标签后,下方的直播列表会动态筛选,只展示对应分类的直播间,从而帮助用户快速发现感兴趣的内容。
236
132
 
237
- ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027182498/7dcde616ab4b11f0a68e5254001c06ec.png)
238
-
239
-
240
133
  #### 实现方式
241
134
 
242
135
  核心是利用 `LiveInfo` 模型中的 `categoryList` 属性。当主播开播设置分类后,`fetchLiveList` 返回的 `LiveInfo` 对象中就会包含这些分类信息。您的 App 在获取到完整的直播列表后,只需在客户端根据用户选择的分类,对这个列表进行一次简单的筛选,然后刷新 UI 即可。
@@ -329,9 +222,6 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
329
222
 
330
223
  #### 交互流程图
331
224
 
332
- ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027182498/904c1b1dab5c11f08bcc5254007c27c5.webp)
333
-
334
-
335
225
  #### 实现方式
336
226
 
337
227
  `LiveCoreView` 支持多实例使用,我们为每一个 `UICollectionViewCell` 都创建一个独立的 `LiveCoreView` 实例。通过监听 `UICollectionView` 的滚动代理方法,我们可以精确地控制即将出现和已经离开屏幕的 Cell 中的 `LiveCoreView` 何时开始和停止拉流,从而实现“即滑即播、即走即停”的效果。
@@ -411,9 +301,6 @@ class LiveFeedViewController: UIViewController, UICollectionViewDataSource, UICo
411
301
 
412
302
  在电商直播中,主播正在讲解一款商品。此时,所有观众的直播画面下方都会弹出一张商品卡片,实时展示该商品的图片、名称和价格。当主播切换讲解下一件商品时,所有观众端的卡片都会自动、同步更新。
413
303
 
414
- ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027182498/2ba67778ac9611f0a0a052540099c741.png)
415
-
416
-
417
304
  #### 实现方式
418
305
 
419
306
  主播端将当前商品的结构化信息(建议使用 **JSON **格式)通过 `updateLiveMetaData` 接口设置到一个自定义的 key(例如 "`product_info`")中。**AtomicXCore** 会将这个变更实时同步给所有观众。观众端只需订阅 `LiveListStore.state`,监听 `metaData` 的变化,一旦发现 `product_info` 的值更新,就解析其中的 JSON 数据并刷新商品卡片 UI。
@@ -490,32 +377,10 @@ class YourAudienceViewController: UIViewController {
490
377
  ## API 文档
491
378
 
492
379
  关于 [LiveListStore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/liveliststore) 及其相关类的所有公开接口、属性和方法的详细信息,请参阅随 [AtomicXCore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore) 框架的官方 API 文档。本文档使用到的相关 Store 如下:
493
- <table>
494
- <tr>
495
- <td rowspan="1" colSpan="1" >Store/Component</td>
496
-
497
- <td rowspan="1" colSpan="1" >功能描述</td>
498
-
499
- <td rowspan="1" colSpan="1" >API 文档</td>
500
- </tr>
501
-
502
- <tr>
503
- <td rowspan="1" colSpan="1" >LiveCoreView</td>
504
-
505
- <td rowspan="1" colSpan="1" >直播视频流展示与交互的核心视图组件:负责视频流渲染和视图挂件处理,支持主播直播、观众连麦、主播连线等场景。</td>
506
-
507
- <td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/livecoreview)</td>
508
- </tr>
509
-
510
- <tr>
511
- <td rowspan="1" colSpan="1" >LiveListStore</td>
512
-
513
- <td rowspan="1" colSpan="1" >直播间全生命周期管理:创建 / 加入 / 离开 / 销毁房间,查询房间列表,修改直播信息(名称、公告等),监听直播状态(例如被踢出、结束)。</td>
514
-
515
- <td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/liveliststore)</td>
516
- </tr>
517
- </table>
518
-
380
+ | Store/Component | 功能描述 | API 文档 |
381
+ | --- | --- | --- |
382
+ | LiveCoreView | 直播视频流展示与交互的核心视图组件:负责视频流渲染和视图挂件处理,支持主播直播、观众连麦、主播连线等场景。 | [API 文档](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/livecoreview) |
383
+ | LiveListStore | 直播间全生命周期管理:创建 / 加入 / 离开 / 销毁房间,查询房间列表,修改直播信息(名称、公告等),监听直播状态(例如被踢出、结束)。 | [API 文档](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/liveliststore) |
519
384
 
520
385
  ## 常见问题
521
386
 
@@ -0,0 +1,264 @@
1
+ `LiveAudienceStore` 是 `AtomicXCore` 中专门负责管理直播间观众信息的模块。通过`LiveAudienceStore`,您可以为您的直播应用构建一套完整的观众列表及管理系统。
2
+
3
+ ## 核心功能
4
+ - **实时观众列表**:获取并展示当前在直播间内的所有观众信息。
5
+
6
+ - **观众人数统计**:实时获取当前直播间的准确观众总数。
7
+
8
+ - **观众动态监听**:通过事件订阅,实时感知观众的加入和离开。
9
+
10
+ - **管理员权限**:主播可以将普通观众设为管理员,或撤销其管理员身份。
11
+
12
+ - **房间管理**:主播或管理员可以将任意普通观众请出(踢出)直播间。
13
+
14
+ ## 核心概念
15
+
16
+ 在开始集成之前,我们先通过下表了解一下 LiveAudienceStore 相关的几个核心概念:
17
+ | **核心概念** | **类型** | **核心职责与描述** |
18
+ | --- | --- | --- |
19
+ | `LiveUserInfo` | data class | 代表一个观众(用户)的基础信息模型。它包含了用户的唯一标识 (`userID`)、昵称 (`userName`) 和头像地址 (`avatarURL`)。 |
20
+ | `LiveAudienceState` | data class | 代表观众模块的当前状态。其核心属性 `audienceList` 是一个 StateFlow,存储了观众列表的实时状态;`audienceCount` 则代表当前观众总数的实时状态。 |
21
+ | `LiveAudienceListener` | abstract class | 代表观众动态的实时事件。分为 `onAudienceJoined` (观众加入) 和 `onAudienceLeft` (观众离开) 两种,用于实现对观众列表的增量更新。 |
22
+ | `LiveAudienceStore` | abstract class | 这是与观众列表功能交互的核心管理类。通过它,您可以获取观众列表快照、执行管理操作,并通过订阅其 `LiveAudienceListener` 来接收实时动态。 |
23
+
24
+ ## 实现指南
25
+
26
+ ### 步骤1:组件集成
27
+
28
+ 请参考 开始直播 集成 **AtomicXCore**,完成接入。
29
+
30
+ ### 步骤2:初始化并获取观众列表
31
+
32
+ 获取一个与当前直播间 liveID 绑定的 `LiveAudienceStore` 实例,并主动拉取一次当前的观众列表,用于首次展示。
33
+ ``` kotlin
34
+ import kotlinx.coroutines.*
35
+ import kotlinx.coroutines.flow.*
36
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
37
+ import io.trtc.tuikit.atomicxcore.api.live.LiveAudienceStore
38
+ import io.trtc.tuikit.atomicxcore.api.live.LiveUserInfo
39
+
40
+ class AudienceManager(
41
+ private val liveId: String
42
+ ) {
43
+ private val audienceStore: LiveAudienceStore = LiveAudienceStore.create(liveId)
44
+ private val scope = CoroutineScope(Dispatchers.Main)
45
+
46
+ // 对外暴露【全量】观众列表的状态流,方便UI层订阅
47
+ private val _audienceList = MutableStateFlow<List<LiveUserInfo>>(emptyList())
48
+ val audienceList: StateFlow<List<LiveUserInfo>> = _audienceList.asStateFlow()
49
+
50
+ // 对外暴露观众总数的状态流
51
+ private val _audienceCount = MutableStateFlow(0)
52
+ val audienceCount: StateFlow<Int> = _audienceCount.asStateFlow()
53
+
54
+ init {
55
+ // 1. 订阅状态和事件,实现见下一节
56
+ subscribeToAudienceState()
57
+ subscribeToAudienceEvents()
58
+
59
+ // 2. 主动拉取首屏数据
60
+ fetchInitialAudienceList()
61
+ }
62
+
63
+ /// 主动获取一次观众列表快照
64
+ private fun fetchInitialAudienceList() {
65
+ audienceStore.fetchAudienceList(object : CompletionHandler {
66
+ override fun onSuccess() {
67
+ println("首次拉取观众列表成功")
68
+ // 成功后,数据会通过下面的 state 订阅通道自动更新
69
+ }
70
+
71
+ override fun onFailure(code: Int, desc: String) {
72
+ println("首次拉取观众列表失败: $desc")
73
+ }
74
+ })
75
+ }
76
+
77
+ // ... 后续代码
78
+ }
79
+ ```
80
+
81
+ ### 步骤3:监听观众列表状态与实时动态
82
+
83
+ 订阅 `audienceStore` 的 `liveAudienceState` 和添加 `LiveAudienceListener`,以接收全量列表快照和实时的观众进出事件,从而驱动UI更新。
84
+ ``` kotlin
85
+ class AudienceManager {
86
+ /// 订阅 state,用于获取观众总数和列表快照
87
+ private fun subscribeToAudienceState() {
88
+ scope.launch {
89
+ // audienceList 是一个全量快照
90
+ audienceStore.liveAudienceState.audienceList.collect { audienceList ->
91
+ _audienceList.value = audienceList
92
+ }
93
+ }
94
+
95
+ scope.launch {
96
+ // audienceCount 是实时总数
97
+ audienceStore.liveAudienceState.audienceCount.collect { count ->
98
+ _audienceCount.value = count
99
+ }
100
+ }
101
+ }
102
+
103
+ /// 订阅 event,用于处理观众的实时进出事件
104
+ private fun subscribeToAudienceEvents() {
105
+ audienceStore.addLiveAudienceListener(object : LiveAudienceListener() {
106
+ override fun onAudienceJoined(newAudience: LiveUserInfo) {
107
+ println("观众 ${newAudience.userName} 加入了直播间")
108
+ // 增量更新:在当前列表末尾添加新观众
109
+ val currentList = _audienceList.value.toMutableList()
110
+ if (!currentList.any { it.userID == newAudience.userID }) {
111
+ currentList.add(newAudience)
112
+ _audienceList.value = currentList
113
+ }
114
+ }
115
+
116
+ override fun onAudienceLeft(departedAudience: LiveUserInfo) {
117
+ println("观众 ${departedAudience.userName} 离开了直播间")
118
+ // 增量更新:从当前列表中移除离开的观众
119
+ val currentList = _audienceList.value.toMutableList()
120
+ currentList.removeAll { it.userID == departedAudience.userID }
121
+ _audienceList.value = currentList
122
+ }
123
+ })
124
+ }
125
+ }
126
+ ```
127
+
128
+ ### 步骤4:管理观众(踢人与设置管理员)
129
+
130
+ 作为主播或管理员,对直播间内的观众进行管理操作。
131
+
132
+ #### 4.1 将观众踢出直播间
133
+
134
+ 调用 `kickUserOutOfRoom` 接口可以将指定用户请出直播间。
135
+ ``` kotlin
136
+ class AudienceManager {
137
+ fun kick(userId: String) {
138
+ audienceStore.kickUserOutOfRoom(userId, object : CompletionHandler {
139
+ override fun onSuccess() {
140
+ println("成功将用户 $userId 踢出房间")
141
+ // 踢出成功后,您会收到 onAudienceLeft 事件
142
+ }
143
+
144
+ override fun onFailure(code: Int, desc: String) {
145
+ println("踢出用户 $userId 失败: $desc")
146
+ }
147
+ })
148
+ }
149
+ }
150
+ ```
151
+
152
+ #### 4.2 设置/撤销管理员
153
+
154
+ 通过 `setAdministrator` 和 `revokeAdministrator` 接口可以管理用户的管理员身份。
155
+ ``` kotlin
156
+ class AudienceManager {
157
+ /// 将用户设为管理员
158
+ fun promoteToAdmin(userId: String) {
159
+ audienceStore.setAdministrator(userId, object : CompletionHandler {
160
+ override fun onSuccess() {
161
+ println("成功将用户 $userId 设为管理员")
162
+ }
163
+
164
+ override fun onFailure(code: Int, desc: String) {
165
+ println("设置管理员失败: $desc")
166
+ }
167
+ })
168
+ }
169
+
170
+ /// 撤销用户的管理员身份
171
+ fun revokeAdmin(userId: String) {
172
+ audienceStore.revokeAdministrator(userId, object : CompletionHandler {
173
+ override fun onSuccess() {
174
+ println("成功撤销用户 $userId 的管理员身份")
175
+ }
176
+
177
+ override fun onFailure(code: Int, desc: String) {
178
+ println("撤销管理员失败: $desc")
179
+ }
180
+ })
181
+ }
182
+ }
183
+ ```
184
+
185
+ ## 功能进阶
186
+
187
+ ### 在弹幕区展示观众入场欢迎语
188
+
189
+ 当有新观众进入直播间时,弹幕/聊天区域会在本地自动显示一条欢迎消息,例如:"欢迎 [用户昵称] 进入直播间"。
190
+
191
+ #### 实现方式
192
+
193
+ 我们通过添加 `LiveAudienceStore` 的观众加入事件监听器(`LiveAudienceListener.onAudienceJoined`)来获取新观众加入的实时通知。一旦事件触发,我们便提取出新观众的昵称信息,然后立即调用 `BarrageStore` 的本地插入接口 `appendLocalTip`。
194
+ ``` kotlin
195
+ import io.trtc.tuikit.atomicxcore.api.live.LiveAudienceListener
196
+ import io.trtc.tuikit.atomicxcore.api.live.LiveAudienceStore
197
+ import io.trtc.tuikit.atomicxcore.api.live.LiveUserInfo
198
+ import io.trtc.tuikit.atomicxcore.api.barrage.Barrage
199
+ import io.trtc.tuikit.atomicxcore.api.barrage.BarrageStore
200
+ import io.trtc.tuikit.atomicxcore.api.barrage.BarrageType
201
+
202
+ class LiveRoomManager(
203
+ private val liveId: String
204
+ ) {
205
+
206
+ init {
207
+ // 初始化两个核心管理器
208
+ setupWelcomeMessageFlow()
209
+ }
210
+
211
+ private fun setupWelcomeMessageFlow() {
212
+ // 1. 获取 LiveAudienceStore 的实例
213
+ val audienceStore = LiveAudienceStore.create(liveId)
214
+
215
+ // 2. 获取 BarrageStore 的实例 (得益于内部机制,这会是同一个实例)
216
+ val barrageStore = BarrageStore.create(liveId)
217
+
218
+ // 3. 订阅观众事件
219
+ audienceStore.addLiveAudienceListener(object : LiveAudienceListener() {
220
+ override fun onAudienceJoined(audience: LiveUserInfo) {
221
+ // 4. 创建一条本地提示消息
222
+ val welcomeTip = Barrage().apply {
223
+ liveID = liveId
224
+ messageType = BarrageType.TEXT
225
+ textContent = "欢迎 ${audience.userName} 进入直播间!"
226
+ }
227
+
228
+ // 5. 调用 BarrageStore 的接口将其插入弹幕列表
229
+ barrageStore.appendLocalTip(welcomeTip)
230
+ }
231
+ })
232
+ }
233
+ }
234
+ ```
235
+
236
+ ## API 文档
237
+
238
+ 关于 [LiveAudienceStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-audience-store/index.html) 及其相关类的所有公开接口、属性和方法的详细信息,请参阅随 [AtomicX Core](https://tencent-rtc.github.io/TUIKit_Android/index.html) 框架的官方 API 文档。本文档使用到的相关 Store 如下:
239
+ | Store/Component | 功能描述 | API 文档 |
240
+ | --- | --- | --- |
241
+ | LiveCoreView | 直播视频流展示与交互的核心视图组件:负责视频流渲染和视图挂件处理,支持主播直播、观众连麦、主播连线等场景。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.view/-live-core-view/index.html) |
242
+ | LiveAudienceStore | 观众管理:获取实时观众列表(ID / 名称 / 头像),统计观众数量,监听观众进出事件。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.view/-live-core-view/index.html) |
243
+ | BarrageStore | 弹幕功能:发送文本 / 自定义弹幕,维护弹幕列表,实时监听弹幕状态。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.barrage/-barrage-store/index.html) |
244
+
245
+ ## 常见问题
246
+
247
+ ### `LiveAudienceState` 中的在线人数(`audienceCount`)是如何更新的?时机和频率是怎样的?
248
+
249
+ `audienceCount` 的更新并非总是实时的,其机制如下:
250
+ - **主动进出房间**: 当用户主动加入或正常退出直播间时,在线人数的变更通知会即时触发。您会很快在 `LiveAudienceState` 中观察到 `audienceCount` 的变化。
251
+
252
+ - **异常掉线**: 当用户因网络问题、应用崩溃等原因异常掉线时,系统需要通过心跳机制来判断其真实状态。只有当该用户连续 90 秒没有心跳后,系统才会判定其为离线,并触发人数变更通知。
253
+
254
+ - **更新机制与频率控制:**
255
+
256
+ - 无论是即时触发还是延迟触发,所有的人数变更通知都是以消息的形式在房间内广播的。
257
+
258
+ - 房间内每秒的消息总量有上限,单房间消息频控是**每秒 40 条消息**。
259
+
260
+ - **关键点: 在"弹幕风暴"或礼物刷屏等消息流量极高的场景下,如果房间内的消息速率超过了 40条/秒 的阈值,为了保证核心消息(例如弹幕)的送达,人数变更的消息可能会被频控策略丢弃**。
261
+
262
+ **这对开发者意味着什么?**
263
+
264
+ `audienceCount` 是一个非常接近实时的**高精度估算值**,但在极端高并发场景下,它可能存在短暂的延迟或数据丢失。因此,我们建议您将其用于**UI展示**,而不应作为计费、统计等需要绝对精准场景的唯一依据。