@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
@@ -0,0 +1,687 @@
1
+ 本文档将帮助您使用 **AtomicXCore SDK** 的核心组件 [LiveCoreWidget](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/api_view_live_live_core_widget-library.html),快速构建一个包含主播开播和观众观看功能的基础直播 App。
2
+
3
+ ## 核心功能
4
+
5
+ **LiveCoreWidget** 是一个专为直播场景设计的轻量级 Widget 组件,是您构建直播场景的核心,它封装了所有复杂的底层直播技术(例如推拉流、连麦、音视频渲染)。您可以将 LiveCoreWidget 作为直播画面的"画布",专注于上层 UI 与交互的开发。
6
+
7
+ 通过下方的视图层级示意图,您可以直观了解 **LiveCoreWidget** 在直播界面中的位置和作用:
8
+
9
+ ## 准备工作
10
+
11
+ ### 步骤1:开通服务
12
+
13
+ 请参见 开通服务,获取体验版或付费版 SDK。
14
+
15
+ ### 步骤2:在当前项目中导入 AtomicXCore
16
+ 1. **安装组件**:请在您的 `pubspec.yaml` 文件中添加 `atomic_x_core` 依赖,然后执行 `flutter pub get`。
17
+
18
+ ``` yaml
19
+ dependencies:
20
+ atomic_x_core: ^3.6.0
21
+ ```
22
+ 2. **配置工程权限:**Android 和 iOS 工程都需要配置权限。
23
+
24
+ 【Android】
25
+
26
+ 请在 `android/app/src/main/AndroidManifest.xml` 文件中添加相机和麦克风的使用权限说明。
27
+ ``` xml
28
+ <uses-permission android:name="android.permission.CAMERA" />
29
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
30
+ ```
31
+
32
+ 【iOS】
33
+
34
+ 请在应用 `iOS` 目录的 **Podfile** 和 `ios/Runner` 目录的 `Info.plist` 文件中添加相机和麦克风的使用权限说明。
35
+
36
+ **Podfile**
37
+ ``` ruby
38
+ post_install do |installer|
39
+ installer.pods_project.targets.each do |target|
40
+ flutter_additional_ios_build_settings(target)
41
+ target.build_configurations.each do |config|
42
+ config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
43
+ '$(inherited)',
44
+ 'PERMISSION_MICROPHONE=1',
45
+ 'PERMISSION_CAMERA=1',
46
+ ]
47
+ end
48
+ end
49
+ end
50
+ ```
51
+
52
+ **Info.plist**
53
+ ``` xml
54
+ <key>NSCameraUsageDescription</key>
55
+ <string>TUILiveKit需要访问您的相机权限,开启后录制的视频才会有画面</string>
56
+ <key>NSMicrophoneUsageDescription</key>
57
+ <string>TUILiveKit需要访问您的麦克风权限,开启后录制的视频才会有声音</string>
58
+ ```
59
+
60
+ ### 步骤3:实现登录逻辑
61
+
62
+ 在您的项目中调用 `LoginStore.shared.login` 完成登录,**这是使用 AtomicXCore 所有功能的关键前提**。
63
+
64
+ > **重要:**
65
+ >
66
+
67
+ > 推荐在您 App 自身的用户账户登录成功后,再调用 LoginStore.shared.login,以确保登录业务逻辑的清晰和一致。
68
+ >
69
+
70
+ ``` java
71
+ import 'package:flutter/material.dart';
72
+ import 'package:atomic_x_core/atomicxcore.dart';
73
+
74
+ void main() async {
75
+ WidgetsFlutterBinding.ensureInitialized();
76
+
77
+ final result = await LoginStore.shared.login(
78
+ sdkAppID: 1400000001, // 替换为您的 sdkAppID
79
+ userID: "test_001", // 替换为您的 userID
80
+ userSig: "xxxxxxxxxxx", // 替换为您的 userSig
81
+ );
82
+
83
+ if (result.isSuccess) {
84
+ debugPrint("login success");
85
+ } else {
86
+ debugPrint("login failed code: ${result.errorCode}, message: ${result.errorMessage}");
87
+ }
88
+
89
+ runApp(const MyApp());
90
+ }
91
+ ```
92
+
93
+ **登录接口参数说明:**
94
+ | **参数** | **类型** | **说明** |
95
+ | --- | --- | --- |
96
+ | `sdkAppID` | `int` | 从 [控制台](https://console.cloud.tencent.com/trtc) 获取,通常是以 `140` 或 `160` 开头的 10 位整数。 |
97
+ | `userID` | `String` | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。为避免多端登录冲突,**请勿使用**`1`、`123`**等简单 ID**。 |
98
+ | `userSig` | `String` | 用于腾讯云鉴权的票据。请注意:<br>- 开发环境:您可以采用本地 `GenerateTestUserSig.genTestSig` 函数生成 userSig 或者通过 [UserSig 辅助工具](https://console.cloud.tencent.com/im/tool-usersig) 生成临时的 UserSig。<br>- 生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参考 [服务端生成 UserSig](https://cloud.tencent.com/document/product/647/17275)。<br>更多信息请参见 [如何计算及使用 UserSig](https://cloud.tencent.com/document/product/647/17275)。 |
99
+
100
+ ## 搭建基础直播间
101
+
102
+ ### 步骤1:实现主播开播
103
+
104
+ 主播开播涉及“预览”和“直播”两个阶段。由于底层视频渲染机制不同,我们需要构建一个状态机来管理视图切换,从而避免预览时出现黑屏。
105
+ 1. **核心逻辑与状态定义。**
106
+
107
+ 首先,在您的 State 类中定义核心控制器,并增加一个 _isLiveStarted 标记,用于区分当前是“预览态”还是“直播态”。
108
+
109
+ ``` java
110
+ class _YourAnchorPageState extends State<YourAnchorPage> {
111
+ // 核心控制器
112
+ late final LiveCoreController _controller;
113
+ // 状态标记:false = 预览中; true = 直播中
114
+ bool _isLiveStarted = false;
115
+
116
+ @override
117
+ void initState() {
118
+ super.initState();
119
+ _controller = LiveCoreController.create(CoreViewType.pushView);
120
+ _controller.setLiveID(widget.liveId);
121
+
122
+ // 初始化时直接打开设备(详见下一步)
123
+ _openDevices();
124
+ }
125
+ }
126
+ ```
127
+ 2. **打开摄像头和麦克风。**
128
+
129
+ 通过调用 **DeviceStore** 的 `openLocalCamera`、`openLocalMicrophone` 接口打开摄像头和麦克风,**您无需做额外操作,LiveCoreWidget 会自动预览当前摄像头的视频流**,示例代码如下:
130
+
131
+ > **注意:**
132
+ >
133
+
134
+ > 此步骤对于预览至关重要。只有打开设备,后续的 VideoView 才有画面可渲染。
135
+ >
136
+
137
+ ``` java
138
+ void _openDevices() {
139
+ // 1. 打开前置摄像头 (true 表示前置)
140
+ DeviceStore.shared.openLocalCamera(true);
141
+ // 2. 打开麦克风
142
+ DeviceStore.shared.openLocalMicrophone();
143
+ }
144
+ ```
145
+ 3. **构建预览视图。**
146
+
147
+ 这是最关键的一步。我们需要根据 `_isLiveStarted` 的状态选择不同的组件:
148
+
149
+ - **预览态:**使用 `VideoView` + `setLocalVideoView`(直接渲染本地采集数据)。
150
+
151
+ - **直播态:**使用 `LiveCoreWidget`(渲染直播间流数据)。
152
+
153
+ ``` java
154
+ // 3.1 封装预览视图组件
155
+ Widget _buildLocalPreview() {
156
+ return Container(
157
+ color: Colors.black,
158
+ child: VideoView(
159
+ onViewCreated: (viewId) {
160
+ // 关键:将本地摄像头画面绑定到预览 View
161
+ TUIRoomEngine.sharedInstance().setLocalVideoView(viewId);
162
+ },
163
+ onViewDisposed: (viewId) {
164
+ // 销毁时解绑
165
+ TUIRoomEngine.sharedInstance().setLocalVideoView(0);
166
+ },
167
+ ),
168
+ );
169
+ }
170
+
171
+ // 3.2 组合主视图
172
+ @override
173
+ Widget build(BuildContext context) {
174
+ return Scaffold(
175
+ body: Stack(
176
+ children: [
177
+ // 视图层:根据状态自动切换
178
+ Positioned.fill(
179
+ child: _isLiveStarted
180
+ ? LiveCoreWidget(controller: _controller) // 直播中:用核心组件
181
+ : _buildLocalPreview(), // 预览中:用 VideoView
182
+ ),
183
+
184
+ // UI 层:开播按钮(仅在预览时显示)
185
+ if (!_isLiveStarted)
186
+ Positioned(
187
+ bottom: 50, left: 0, right: 0,
188
+ child: Center(
189
+ child: ElevatedButton(
190
+ onPressed: _startLive, // 下一步实现此方法
191
+ child: const Text('开始直播'),
192
+ ),
193
+ ),
194
+ ),
195
+ ],
196
+ ),
197
+ );
198
+ }
199
+ ```
200
+ 4. **实现开播与关播逻辑。**
201
+
202
+ 通过调用 **LiveListStore** 的 `createLive` 接口开始视频直播,示例代码如下:
203
+
204
+ ``` java
205
+ Future<void> _startLive() async {
206
+ // 1. 配置直播间参数
207
+ final liveInfo = LiveInfo(
208
+ liveID: widget.liveId, // 房间唯一标识
209
+ liveName: "Atomic Live Demo", // 房间标题
210
+ // 布局模式:videoDynamicGrid9Seats 代表动态 9 宫格布局
211
+ seatTemplate: VideoDynamicGrid9Seats(),
212
+ );
213
+
214
+ // 2. 发起开播请求
215
+ final result = await LiveListStore.shared.createLive(liveInfo);
216
+
217
+ if (result.isSuccess) {
218
+ debugPrint("开播成功");
219
+ // 3. 关键步骤:更新状态
220
+ // 将 _isLiveStarted 置为 true,触发 build 方法重新构建,
221
+ // 从而将 UI 从 VideoView(预览)切换为 LiveCoreWidget(直播)。
222
+ setState(() {
223
+ _isLiveStarted = true;
224
+ });
225
+ } else {
226
+ debugPrint("开播失败: ${result.errorMessage}");
227
+ // 可以在此处添加 Toast 提示用户
228
+ }
229
+ }
230
+ ```
231
+
232
+ **LiveInfo 参数说明:**
233
+
234
+ | **参数名** | **类型** | **属性** | **描述** |
235
+ | --- | --- | --- | --- |
236
+ | `liveID` | `String` | 必填 | 直播间的唯一标识符。 |
237
+ | `liveName` | `String` | 选填 | 直播间的标题。 |
238
+ | `notice` | `String` | 选填 | 直播间的公告信息。 |
239
+ | `isMessageDisable` | `Boolean` | 选填 | 是否禁言(`true`:是,`false`:否)。 |
240
+ | `isPublicVisible` | `Boolean` | 选填 | 是否公开可见(`true`:是,`false`:否)。 |
241
+ | `seatMode` | `TakeSeatMode` | 选填 | 上麦模式(`FREE`:自由上麦,`APPLY`:申请上麦)。 |
242
+ | `seatTemplate` | `SeatLayoutTemplate` | 必填 | 麦位布局模板。 |
243
+ | `coverURL` | `String` | 选填 | 直播间的封面图片地址。 |
244
+ | `backgroundURL` | `String` | 选填 | 直播间的背景图片地址。 |
245
+ | `categoryList` | `List<Int>` | 选填 | 直播间的分类标签列表。 |
246
+ | `activityStatus` | `Int` | 选填 | 直播活动状态。 |
247
+ | `isGiftEnabled` | `Boolean` | 选填 | 是否启用礼物功能(`true`:是,`false`:否)。 |
248
+
249
+ 5. **结束直播。**
250
+
251
+ 直播结束后,主播可以调用 **LiveListStore** 的 `endLive` 接口结束直播。SDK 会处理停止推流和销毁房间的逻辑。
252
+
253
+ ``` java
254
+ Future<void> _stopLive() async {
255
+ // 1. 调用接口结束直播
256
+ // SDK 内部会自动停止推流、销毁房间并清理媒体资源
257
+ final result = await LiveListStore.shared.endLive();
258
+
259
+ if (result.isSuccess) {
260
+ debugPrint("关播成功");
261
+ // 2. 退出当前页面
262
+ if (mounted) {
263
+ Navigator.of(context).pop();
264
+ }
265
+ } else {
266
+ debugPrint("关播失败: ${result.errorMessage}");
267
+ }
268
+ }
269
+ ```
270
+ 6. **完整代码参考。**
271
+
272
+ 为了方便您快速集成,我们将上述步骤整合为完整的 `YourAnchorPage` 文件。您可以直接复制以下代码:
273
+
274
+ ``` java
275
+ import 'package:flutter/material.dart';
276
+ import 'package:atomic_x_core/atomicxcore.dart';
277
+ import 'package:rtc_room_engine/rtc_room_engine.dart'; // 引入 RTC 引擎
278
+
279
+ class YourAnchorPage extends StatefulWidget {
280
+ final String liveId;
281
+ const YourAnchorPage({super.key, required this.liveId});
282
+
283
+ @override
284
+ State<YourAnchorPage> createState() => _YourAnchorPageState();
285
+ }
286
+
287
+ class _YourAnchorPageState extends State<YourAnchorPage> {
288
+ late final LiveCoreController _controller;
289
+ bool _isLiveStarted = false; // 直播状态标记
290
+
291
+ @override
292
+ void initState() {
293
+ super.initState();
294
+ _controller = LiveCoreController.create(CoreViewType.pushView);
295
+ _controller.setLiveID(widget.liveId);
296
+ _openDevices(); // 步骤2:打开设备
297
+ }
298
+
299
+ void _openDevices() {
300
+ DeviceStore.shared.openLocalCamera(true);
301
+ DeviceStore.shared.openLocalMicrophone();
302
+ }
303
+
304
+ // 步骤3:构建预览
305
+ Widget _buildLocalPreview() {
306
+ return Container(
307
+ color: Colors.black,
308
+ child: VideoView(
309
+ onViewCreated: (viewId) => TUIRoomEngine.sharedInstance().setLocalVideoView(viewId),
310
+ onViewDisposed: (viewId) => TUIRoomEngine.sharedInstance().setLocalVideoView(0),
311
+ ),
312
+ );
313
+ }
314
+
315
+ // 步骤4:开播逻辑
316
+ Future<void> _startLive() async {
317
+ final liveInfo = LiveInfo(
318
+ liveID: widget.liveId,
319
+ liveName: "Test Live",
320
+ seatTemplate: VideoDynamicGrid9Seats()
321
+ );
322
+
323
+ final result = await LiveListStore.shared.createLive(liveInfo);
324
+ if (result.isSuccess) {
325
+ setState(() {
326
+ _isLiveStarted = true; // 切换 UI 状态
327
+ });
328
+ }
329
+ }
330
+
331
+ @override
332
+ Widget build(BuildContext context) {
333
+ return Scaffold(
334
+ body: Stack(
335
+ children: [
336
+ // 视图自动切换
337
+ Positioned.fill(
338
+ child: _isLiveStarted
339
+ ? LiveCoreWidget(controller: _controller)
340
+ : _buildLocalPreview(),
341
+ ),
342
+ // 开播按钮
343
+ if (!_isLiveStarted)
344
+ Positioned(
345
+ bottom: 50, left: 0, right: 0,
346
+ child: Center(
347
+ child: ElevatedButton(onPressed: _startLive, child: const Text('开始直播')),
348
+ ),
349
+ ),
350
+ ],
351
+ ),
352
+ );
353
+ }
354
+ }
355
+ ```
356
+
357
+ ### 步骤2:实现观众进房观看
358
+
359
+ 观众观看流程如下,通过简单几步操作,即可实现观众观看直播。
360
+
361
+ > **提示:**
362
+ >
363
+
364
+ > 观众进房拉流的业务代码,您也可以参考 TUILiveKit 开源项目中的 [audience_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/audience/audience_widget.dart) 文件来了解完整的实现逻辑。
365
+ >
366
+
367
+ 1. **实现观众拉流页面。**
368
+
369
+ 在您的观众页面中,创建 `LiveCoreWidget` 实例,并通过 `LiveCoreController` 控制直播行为。
370
+
371
+ > **注意:**
372
+ >
373
+
374
+ > **必须确保 LiveCoreWidget 在调用 joinLive() 之前已经完成初始化并处于渲染树中。**
375
+ >
376
+
377
+ > **原理分析:**`LiveCoreWidget` 在 `initState` 中会执行 `controller.init() `以注册对 `currentLive` 信息的监听。如果先调用` joinLive()` 导致房间信息更新,而此时 `Widget` 尚未渲染(监听器未注册),则无法触发内部的自动拉流逻辑,导致画面黑屏。
378
+ >
379
+
380
+ ``` java
381
+ import 'package:flutter/material.dart';
382
+ import 'package:atomic_x_core/atomicxcore.dart';
383
+
384
+ /// YourAudiencePage 代表您的观众观看页面
385
+ class _YourAudiencePageState extends State<YourAudiencePage> {
386
+ late final LiveCoreController _controller;
387
+ bool _isJoining = true;
388
+
389
+ @override
390
+ void initState() {
391
+ super.initState();
392
+ _controller = LiveCoreController.create(CoreViewType.playView);
393
+ _controller.setLiveID(widget.liveId);
394
+
395
+ // 修正:在第一帧渲染完成后再进房,确保 LiveCoreWidget 已完成 init()
396
+ WidgetsBinding.instance.addPostFrameCallback((_) {
397
+ _joinLive();
398
+ });
399
+ }
400
+
401
+ Future<void> _joinLive() async {
402
+ final result = await LiveListStore.shared.joinLive(widget.liveId);
403
+ if (result.isSuccess) {
404
+ debugPrint("joinLive success");
405
+ if (mounted) setState(() => _isJoining = false);
406
+ } else {
407
+ debugPrint("joinLive error: ${result.errorMessage}");
408
+ }
409
+ }
410
+
411
+ @override
412
+ Widget build(BuildContext context) {
413
+ return Scaffold(
414
+ body: Stack(
415
+ children: [
416
+ // 必须始终渲染,不可根据 _isJoining 状态移除,否则会导致监听失效
417
+ LiveCoreWidget(controller: _controller),
418
+
419
+ if (_isJoining)
420
+ const Center(child: CircularProgressIndicator(color: Colors.white)),
421
+ ],
422
+ ),
423
+ );
424
+ }
425
+ }
426
+ ```
427
+ 2. **进入直播间观看。**
428
+
429
+ 通过调用 **LiveListStore** 的 `joinLive` 接口加入直播,**您无需做额外操作,LiveCoreWidget 会自动播放当前房间的视频流**,完整示例代码如下:
430
+
431
+ ``` java
432
+ import 'package:flutter/material.dart';
433
+ import 'package:atomic_x_core/atomicxcore.dart';
434
+
435
+ /// YourAudiencePage 代表您的观众观看页面
436
+ class YourAudiencePage extends StatefulWidget {
437
+ final String liveId;
438
+
439
+ const YourAudiencePage({super.key, required this.liveId});
440
+
441
+ @override
442
+ State<YourAudiencePage> createState() => _YourAudiencePageState();
443
+ }
444
+
445
+ class _YourAudiencePageState extends State<YourAudiencePage> {
446
+ late final LiveCoreController _controller;
447
+
448
+ @override
449
+ void initState() {
450
+ super.initState();
451
+ _controller = LiveCoreController.create();
452
+ _controller.setLiveID(widget.liveId);
453
+ // 进入直播间
454
+ _joinLive();
455
+ }
456
+
457
+ Future<void> _joinLive() async {
458
+ // 调用 LiveListStore.shared.joinLive 进入直播间
459
+ // - liveId: 与主播开播同样的 liveId
460
+ final result = await LiveListStore.shared.joinLive(widget.liveId);
461
+
462
+ if (result.isSuccess) {
463
+ debugPrint("joinLive success");
464
+ } else {
465
+ debugPrint("joinLive error: ${result.errorMessage}");
466
+ // 进房失败,也需要退出页面
467
+ // if (mounted) Navigator.of(context).pop();
468
+ }
469
+ }
470
+
471
+ @override
472
+ Widget build(BuildContext context) {
473
+ return Scaffold(
474
+ body: Stack(
475
+ children: [
476
+ LiveCoreWidget(controller: _controller),
477
+ ],
478
+ ),
479
+ );
480
+ }
481
+ }
482
+ ```
483
+ 3. **退出直播。**
484
+
485
+ 观众退出直播间时,需要调用 **LiveListStore** 的 `leaveLive` 接口退出直播。SDK 会自动停止拉流并退出房间。
486
+
487
+ ``` java
488
+ import 'package:flutter/material.dart';
489
+ import 'package:atomic_x_core/atomicxcore.dart';
490
+
491
+ /// YourAudiencePage 代表您的观众观看页面
492
+ class YourAudiencePage extends StatefulWidget {
493
+ final String liveId;
494
+
495
+ const YourAudiencePage({super.key, required this.liveId});
496
+
497
+ @override
498
+ State<YourAudiencePage> createState() => _YourAudiencePageState();
499
+ }
500
+
501
+ class _YourAudiencePageState extends State<YourAudiencePage> {
502
+ // ... 其他代码 ...
503
+
504
+ // 退出直播
505
+ Future<void> _leaveLive() async {
506
+ final result = await LiveListStore.shared.leaveLive();
507
+
508
+ if (result.isSuccess) {
509
+ debugPrint("leaveLive success");
510
+ } else {
511
+ debugPrint("leaveLive error: ${result.errorMessage}");
512
+ }
513
+ }
514
+
515
+ // ... 其他代码 ...
516
+ }
517
+ ```
518
+
519
+ ### 步骤3:监听直播事件
520
+
521
+ 在观众加入直播间后,您还需要处理一些房间内的"被动"事件。例如,主播主动结束了直播,或者观众因为违规等原因被踢出房间。如果不监听这些事件,观众端 UI 可能会停留在黑屏页面,影响用户体验。
522
+
523
+ 您可以通过 `LiveListListener` 来实现事件监听。
524
+ ``` java
525
+ import 'package:flutter/material.dart';
526
+ import 'package:atomic_x_core/atomicxcore.dart';
527
+
528
+ /// YourAudiencePage 代表您的观众观看页面
529
+ class YourAudiencePage extends StatefulWidget {
530
+ final String liveId;
531
+
532
+ const YourAudiencePage({super.key, required this.liveId});
533
+
534
+ @override
535
+ State<YourAudiencePage> createState() => _YourAudiencePageState();
536
+ }
537
+
538
+ class _YourAudiencePageState extends State<YourAudiencePage> {
539
+ late final LiveCoreController _controller;
540
+ // 1. 定义 LiveListListener 来管理事件监听
541
+ late final LiveListListener _liveListListener;
542
+
543
+ @override
544
+ void initState() {
545
+ super.initState();
546
+ _controller = LiveCoreController.create();
547
+ _controller.setLiveID(widget.liveId);
548
+ // 2. 监听直播事件
549
+ _setupLiveEventListener();
550
+ // 3. 进入直播间
551
+ _joinLive();
552
+ }
553
+
554
+ // 4. 新增一个方法来设置事件监听
555
+ void _setupLiveEventListener() {
556
+ _liveListListener = LiveListListener(
557
+ onLiveEnded: (liveID, reason, message) {
558
+ // 监听到直播结束
559
+ debugPrint("Live ended. liveID: $liveID, reason: ${reason.value}, message: $message");
560
+ // 在此处处理退出直播间的逻辑,例如关闭当前页面
561
+ // if (mounted) Navigator.of(context).pop();
562
+ },
563
+ onKickedOutOfLive: (liveID, reason, message) {
564
+ // 监听到被踢出直播
565
+ debugPrint("Kicked out of live. liveID: $liveID, reason: ${reason.value}, message: $message");
566
+ // 在此处处理退出直播间的逻辑
567
+ // if (mounted) Navigator.of(context).pop();
568
+ },
569
+ );
570
+ LiveListStore.shared.addLiveListListener(_liveListListener);
571
+ }
572
+
573
+ Future<void> _joinLive() async {
574
+ final result = await LiveListStore.shared.joinLive(widget.liveId);
575
+ if (result.isSuccess) {
576
+ debugPrint("joinLive success");
577
+ } else {
578
+ debugPrint("joinLive error: ${result.errorMessage}");
579
+ }
580
+ }
581
+
582
+ Future<void> _leaveLive() async {
583
+ final result = await LiveListStore.shared.leaveLive();
584
+ if (result.isSuccess) {
585
+ debugPrint("leaveLive success");
586
+ } else {
587
+ debugPrint("leaveLive error: ${result.errorMessage}");
588
+ }
589
+ }
590
+
591
+ @override
592
+ void dispose() {
593
+ // 5. 移除事件监听
594
+ LiveListStore.shared.removeLiveListListener(_liveListListener);
595
+ super.dispose();
596
+ }
597
+
598
+ @override
599
+ Widget build(BuildContext context) {
600
+ return Scaffold(
601
+ body: Stack(
602
+ children: [
603
+ LiveCoreWidget(controller: _controller),
604
+ ],
605
+ ),
606
+ );
607
+ }
608
+ }
609
+ ```
610
+
611
+ ### 运行效果
612
+
613
+ 集成 **LiveCoreWidget** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 丰富直播场景 来完善直播场景。
614
+ | **布局类型** | **动态宫格布局** | **浮动小窗布局** | **固定宫格布局** | **固定小窗布局** |
615
+ | --- | --- | --- | --- | --- |
616
+ | **模板 ID** | 600 | 601 | 800 | 801 |
617
+ | **描述** | 默认布局,可根据连麦人数动态调整宫格大小。 | 连麦嘉宾以浮动小窗形式显示。 | 连麦人数固定,每个嘉宾占据一个固定宫格。 | 连麦人数固定,嘉宾以固定小窗形式显示。 |
618
+
619
+ ## 丰富直播场景
620
+
621
+ 当您完成了基础的直播功能后,您可以参考以下功能指南来为直播添加丰富的互动玩法。
622
+ | **直播功能** | **功能介绍** | **功能 Stores** | **实现指南** |
623
+ | --- | --- | --- | --- |
624
+ | **实现观众音视频连线** | 观众申请上麦,与主播进行实时视频互动。 | [CoGuestStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_guest_store/CoGuestStore-class.html) | 实现观众连线 |
625
+ | **实现主播跨房连线 PK** | 两个不同房间的主播进行连线,实现互动或 PK。 | [CoHostStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/CoHostStore-class.html) / [BattleStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html) | 实现主播连线 PK |
626
+ | **添加弹幕聊天功能** | 观众可以在直播间发送和接收实时文字消息。 | [BarrageStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_barrage_barrage_store/BarrageStore-class.html) | 实现弹幕功能 |
627
+ | **构建礼物赠送系统** | 观众可以向主播赠送虚拟礼物,增加互动和趣味性。 | [GiftStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_gift_gift_store/GiftStore-class.html) | 实现礼物功能 |
628
+
629
+ ## API 文档
630
+ | **Store/Component** | **功能描述** | **API 文档** |
631
+ | --- | --- | --- |
632
+ | **LiveCoreWidget** | 直播视频流展示与交互的核心视图组件:负责视频流渲染和视图挂件处理,支持主播直播、观众连麦、主播连线等场景。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/LiveCoreWidget-class.html) |
633
+ | **LiveCoreController** | LiveCoreWidget 的控制器:用于设置直播 ID、控制预览等操作。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/LiveCoreController-class.html) |
634
+ | **LiveListStore** | 直播间全生命周期管理:创建 / 加入 / 离开 / 销毁房间,查询房间列表,修改直播信息(名称、公告等),监听直播状态(例如被踢出、结束)。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_live_list_store/LiveListStore-class.html) |
635
+ | **DeviceStore** | 音视频设备控制:麦克风(开关 / 音量)、摄像头(开关 / 切换 / 画质)、屏幕共享,设备状态实时监听。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_device_store/DeviceStore-class.html) |
636
+ | **CoGuestStore** | 观众连麦管理:连麦申请 / 邀请 / 同意 / 拒绝,连麦成员权限控制(麦克风 / 摄像头),状态同步。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_guest_store/CoGuestStore-class.html) |
637
+ | **CoHostStore** | 主播跨房连线:支持多布局模板(动态网格等),发起 / 接受 / 拒绝连线,连麦主播互动管理。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/CoHostStore-class.html) |
638
+ | **BattleStore** | 主播 PK 对战:发起 PK(配置时长 / 对手),管理 PK 状态(开始 / 结束),同步分数,监听对战结果。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html) |
639
+ | **GiftStore** | 礼物互动:获取礼物列表,发送 / 接收礼物,监听礼物事件(含发送者、礼物详情)。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_gift_gift_store/GiftStore-class.html) |
640
+ | **BarrageStore** | 弹幕功能:发送文本 / 自定义弹幕,维护弹幕列表,实时监听弹幕状态。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_barrage_barrage_store/BarrageStore-class.html) |
641
+ | **LikeStore** | 点赞互动:发送点赞,监听点赞事件,同步总点赞数。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_like_store/LikeStore-class.html) |
642
+ | **LiveAudienceStore** | 观众管理:获取实时观众列表(ID / 名称 / 头像),统计观众数量,监听观众进出事件。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_live_audience_store/LiveAudienceStore-class.html) |
643
+ | **AudioEffectStore** | 音频特效:变声(童声 / 男声)、混响(KTV 等)、耳返调节,实时切换特效。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_audio_effect_store/AudioEffectStore-class.html) |
644
+ | **BaseBeautyStore** | 基础美颜:调节磨皮 / 美白 / 红润(0-100 级),重置美颜状态,同步效果参数。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_base_beauty_store/BaseBeautyStore-class.html) |
645
+
646
+ ## 常见问题
647
+
648
+ ### 主播调用 createLive 或 观众调用 joinLive 后为什么画面是黑的,没有视频画面?
649
+ - **检查 setLiveID**:请确保在调用开播或观看接口前,已经为 `LiveCoreController` 实例设置了正确的 `liveID`。
650
+
651
+ - **检查设备权限**:请确保 App 已获得摄像头和麦克风的系统使用权限。
652
+
653
+ - **检查主播端**:主播端是否正常调用 `DeviceStore.shared.openLocalCamera(true)` 打开了摄像头。
654
+
655
+ - **检查网络**:请检查设备网络连接是否正常。
656
+
657
+ ### 观众端调用了 joinLive 且返回 Success,但依然没有视频画面?
658
+ - **时序问题:**是否在 `LiveCoreWidget` 挂载前就执行了 `joinLive`?请参考上文使用 `addPostFrameCallback`。
659
+
660
+ - **Controller 类型:**创建时是否正确传入了 `CoreViewType.playView`?
661
+
662
+ - **Widget 持久性:**在进房过程中,`LiveCoreWidget` 是否因为 `setState` 被意外销毁或重新创建?请确保其在 Widget 树中的稳定性。
663
+
664
+ ### Flutter 项目如何请求权限?
665
+
666
+ 您可以使用 `permission_handler` 插件来请求摄像头和麦克风权限:
667
+ ``` java
668
+ import 'package:permission_handler/permission_handler.dart';
669
+
670
+ Future<void> requestPermissions() async {
671
+ await [
672
+ Permission.camera,
673
+ Permission.microphone,
674
+ ].request();
675
+ }
676
+ ```
677
+
678
+ ### 如何在 Flutter 中处理页面生命周期?
679
+
680
+ 建议在 `dispose` 方法中清理资源,例如移除事件监听器:
681
+ ``` java
682
+ @override
683
+ void dispose() {
684
+ LiveListStore.shared.removeLiveListListener(_liveListListener);
685
+ super.dispose();
686
+ }
687
+ ```