@tencentcloud/sdk-mcp 1.6.4 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/knowledge/build-index.js +1 -1
  2. package/knowledge/chunker.js +81 -52
  3. package/knowledge/path-meta.js +181 -21
  4. package/knowledge/search/exact-lookup.js +166 -0
  5. package/knowledge/search/filter-pool.js +73 -19
  6. package/knowledge/search/product-scope-intent.js +2 -2
  7. package/knowledge/search/requires-framework.js +1 -1
  8. package/knowledge/search/search-knowledge.js +234 -57
  9. package/package.json +1 -1
  10. package/resource/_schema/feature-aliases.yaml +1 -0
  11. package/resource/integration/callkit/preset/android/integration.md +3 -5
  12. package/resource/integration/callkit/preset/flutter/integration.md +2 -3
  13. package/resource/integration/callkit/preset/ios/integration.md +2 -5
  14. package/resource/integration/callkit/preset/react/integration.md +12 -26
  15. package/resource/integration/callkit/preset/vue/integration.md +17 -33
  16. package/resource/integration/chat/preset/android/integration.md +44 -14
  17. package/resource/integration/chat/preset/flutter/integration.md +54 -13
  18. package/resource/integration/chat/preset/ios/integration.md +42 -6
  19. package/resource/integration/chat/preset/react/integration.md +30 -28
  20. package/resource/integration/chat/preset/uni-app/integration.md +101 -40
  21. package/resource/integration/chat/preset/vue/integration.md +62 -28
  22. package/resource/integration/livekit/preset/live/android/live-audience-integration.md +133 -0
  23. package/resource/integration/livekit/preset/live/android/live-host-integration.md +225 -0
  24. package/resource/integration/livekit/preset/live/android/live-list-integration.md +278 -0
  25. package/resource/integration/livekit/preset/live/android/prepare-integration.md +271 -0
  26. package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +207 -0
  27. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +358 -0
  28. package/resource/integration/livekit/preset/live/ios/live-list-integration.md +246 -0
  29. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +218 -0
  30. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +4 -7
  31. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +5 -12
  32. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +4 -11
  33. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +250 -482
  34. package/resource/integration/roomkit/preset/vue/integration.md +399 -106
  35. package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +80 -0
  36. package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +20 -0
  37. package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +116 -0
  38. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +11 -15
  39. package/resource/knowledge/callkit/core-sdk/android/make-call.md +10 -13
  40. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +2 -4
  41. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +10 -17
  42. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +11 -17
  43. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +11 -20
  44. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +10 -15
  45. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +9 -14
  46. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +12 -18
  47. package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +390 -0
  48. package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +317 -0
  49. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +16 -22
  50. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +17 -23
  51. package/resource/knowledge/callkit/core-sdk/web/call-engine.md +39 -0
  52. package/resource/knowledge/callkit/core-sdk/web/call-event.md +341 -0
  53. package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +39 -0
  54. package/resource/knowledge/callkit/faq/android.md +1 -5
  55. package/resource/knowledge/callkit/faq/common.md +10 -12
  56. package/resource/knowledge/callkit/faq/ios.md +5 -7
  57. package/resource/knowledge/callkit/faq/uniapp-app.md +7 -7
  58. package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +9 -12
  59. package/resource/knowledge/callkit/faq/web.md +2 -12
  60. package/resource/knowledge/callkit/preset/android/api.md +5 -8
  61. package/resource/knowledge/callkit/preset/ios/api.md +4 -6
  62. package/resource/knowledge/callkit/preset/miniprogram/api.md +295 -0
  63. package/resource/knowledge/callkit/preset/react/api.md +622 -0
  64. package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +475 -0
  65. package/resource/knowledge/callkit/preset/vue/api.md +622 -0
  66. package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +587 -0
  67. package/resource/knowledge/callkit/preset/web/api.md +1 -1
  68. package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +16 -0
  69. package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -1
  70. package/resource/knowledge/chat/preset/android/features/conversation-list.md +0 -1
  71. package/resource/knowledge/chat/preset/android/features/language.md +2 -4
  72. package/resource/knowledge/chat/preset/android/features/message-input.md +1 -1
  73. package/resource/knowledge/chat/preset/android/features/message-list.md +1 -2
  74. package/resource/knowledge/chat/preset/android/features/search.md +0 -1
  75. package/resource/knowledge/chat/preset/android/features/theme.md +1 -1
  76. package/resource/knowledge/chat/preset/android-view/integration.md +35 -10
  77. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -1
  78. package/resource/knowledge/chat/preset/flutter/features/language.md +1 -1
  79. package/resource/knowledge/chat/preset/flutter/features/message-list.md +0 -1
  80. package/resource/knowledge/chat/preset/flutter/features/search.md +4 -5
  81. package/resource/knowledge/chat/preset/flutter/features/theme.md +1 -1
  82. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -1
  83. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +0 -1
  84. package/resource/knowledge/chat/preset/ios/features/language.md +2 -5
  85. package/resource/knowledge/chat/preset/ios/features/message-list.md +0 -1
  86. package/resource/knowledge/chat/preset/ios/features/search.md +0 -1
  87. package/resource/knowledge/chat/preset/ios/features/theme.md +1 -1
  88. package/resource/knowledge/chat/preset/ios-uikit/integration.md +57 -166
  89. package/resource/knowledge/chat/preset/react/features/chat-setting.md +0 -1
  90. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +3 -3
  91. package/resource/knowledge/chat/preset/react/features/conversation-list.md +3 -3
  92. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +1 -1
  93. package/resource/knowledge/chat/preset/react/features/message-input.md +2 -3
  94. package/resource/knowledge/chat/preset/react/features/search.md +0 -1
  95. package/resource/knowledge/chat/preset/vue/features/chat-header.md +1 -1
  96. package/resource/knowledge/chat/preset/vue/features/chat-setting.md +3 -4
  97. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +4 -4
  98. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +1 -1
  99. package/resource/knowledge/chat/preset/vue/features/message-input.md +2 -2
  100. package/resource/knowledge/chat/preset/vue/features/message-list.md +2 -2
  101. package/resource/knowledge/chat/preset/vue/features/search.md +0 -1
  102. package/resource/knowledge/chat/preset/vue/features/theme.md +4 -4
  103. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
  104. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +2 -5
  105. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +12 -15
  106. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
  107. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
  108. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
  109. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
  110. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +2 -4
  111. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
  112. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
  113. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
  114. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +2 -4
  115. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +1 -3
  116. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
  117. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +3 -6
  118. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
  119. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +12 -15
  120. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
  121. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
  122. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
  123. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +2 -4
  124. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
  125. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
  126. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
  127. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +2 -4
  128. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
  129. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
  130. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +2 -5
  131. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
  132. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +3 -6
  133. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
  134. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
  135. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
  136. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +2 -4
  137. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
  138. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
  139. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
  140. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +2 -4
  141. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +1 -3
  142. package/resource/knowledge/livekit/core-sdk/api-reference/vue/capability-matrix.md +82 -0
  143. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-audio-effect.md → features/android/audio-effect.md} +2 -4
  144. package/resource/knowledge/livekit/core-sdk/{live/android/live-barrage.md → features/android/barrage.md} +1 -1
  145. package/resource/knowledge/livekit/core-sdk/{live/android/live-base-beauty.md → features/android/base-beauty.md} +1 -1
  146. package/resource/knowledge/livekit/core-sdk/{voice/android/voice-gift.md → features/android/gift.md} +2 -3
  147. package/resource/knowledge/livekit/core-sdk/{live/android/live-live-list.md → features/android/live-list.md} +1 -1
  148. package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audio-effect.md → features/flutter/audio-effect.md} +0 -2
  149. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-barrage.md → features/flutter/barrage.md} +3 -3
  150. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-gift.md → features/flutter/gift.md} +2 -2
  151. package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-room-list.md → features/flutter/live-list.md} +1 -1
  152. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audience-list.md → features/ios/audience-list.md} +1 -1
  153. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audio-effect.md → features/ios/audio-effect.md} +1 -3
  154. package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-barrage.md → features/ios/barrage.md} +2 -2
  155. package/resource/knowledge/livekit/core-sdk/{live/ios/live-base-beauty.md → features/ios/base-beauty.md} +1 -1
  156. package/resource/knowledge/livekit/core-sdk/{live/ios/live-gift.md → features/ios/gift.md} +8 -9
  157. package/resource/knowledge/livekit/core-sdk/{live/ios/live-live-list.md → features/ios/live-list.md} +2 -2
  158. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audio-effect.md → features/uni-app/audio-effect.md} +2 -3
  159. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-barrage.md → features/uni-app/barrage.md} +2 -2
  160. package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +145 -0
  161. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-gift.md → features/uni-app/gift.md} +6 -7
  162. package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-room-list.md → features/uni-app/live-list.md} +1 -1
  163. package/resource/knowledge/livekit/core-sdk/live/android/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
  164. package/resource/knowledge/livekit/core-sdk/live/android/{live-host-interaction.md → host-interaction.md} +2 -4
  165. package/resource/knowledge/livekit/core-sdk/live/android/{live-integration.md → integration.md} +6 -9
  166. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-host-interaction.md → host-interaction.md} +1 -3
  167. package/resource/knowledge/livekit/core-sdk/live/flutter/{live-integration.md → integration.md} +1 -6
  168. package/resource/knowledge/livekit/core-sdk/live/ios/{live-co-guest-interaction.md → co-guest-interaction.md} +2 -3
  169. package/resource/knowledge/livekit/core-sdk/live/ios/{live-host-interaction.md → host-interaction.md} +3 -5
  170. package/resource/knowledge/livekit/core-sdk/live/ios/{live-integration.md → integration.md} +7 -10
  171. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +561 -0
  172. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +323 -0
  173. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +312 -0
  174. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
  175. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-host-interaction.md → host-interaction.md} +2 -4
  176. package/resource/knowledge/livekit/core-sdk/voice/android/{voice-integration.md → integration.md} +11 -14
  177. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-co-guest-interaction.md → co-guest-interaction.md} +0 -1
  178. package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-integration.md → integration.md} +1 -4
  179. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-co-guest-interaction.md → co-guest-interaction.md} +3 -3
  180. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-host-interaction.md → host-interaction.md} +2 -4
  181. package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-integration.md → integration.md} +7 -10
  182. package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-co-guest-interaction.md → co-guest-interaction.md} +6 -6
  183. package/resource/knowledge/livekit/core-sdk/voice/uni-app/{voice-integration.md → integration.md} +6 -7
  184. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +2 -3
  185. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +1 -1
  186. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +1 -1
  187. package/resource/knowledge/push/api-reference/android.md +337 -0
  188. package/resource/knowledge/push/api-reference/donut.md +190 -0
  189. package/resource/knowledge/push/api-reference/flutter.md +176 -0
  190. package/resource/knowledge/push/api-reference/harmonyos.md +140 -0
  191. package/resource/knowledge/push/api-reference/ios.md +537 -0
  192. package/resource/knowledge/push/api-reference/react-native.md +154 -0
  193. package/resource/knowledge/push/api-reference/uni-app.md +148 -0
  194. package/resource/knowledge/push/api-reference/unity.md +119 -0
  195. package/resource/knowledge/push/api-reference/unreal-engine.md +123 -0
  196. package/resource/knowledge/push/config/android/fcm.md +1 -8
  197. package/resource/knowledge/push/config/android/honor.md +3 -7
  198. package/resource/knowledge/push/config/android/huawei.md +0 -5
  199. package/resource/knowledge/push/config/android/meizu.md +0 -5
  200. package/resource/knowledge/push/config/android/oppo.md +0 -4
  201. package/resource/knowledge/push/config/android/vivo.md +0 -4
  202. package/resource/knowledge/push/config/android/xiaomi.md +0 -2
  203. package/resource/knowledge/push/config/donut.md +33 -46
  204. package/resource/knowledge/push/config/harmonyos.md +6 -9
  205. package/resource/knowledge/push/config/ios.md +2 -9
  206. package/resource/knowledge/push/config/react-native.md +17 -25
  207. package/resource/knowledge/push/config/unity.md +16 -24
  208. package/resource/knowledge/push/config/unreal-engine.md +16 -24
  209. package/resource/knowledge/push/integration/android.md +21 -21
  210. package/resource/knowledge/push/integration/donut.md +24 -34
  211. package/resource/knowledge/push/integration/flutter.md +12 -1
  212. package/resource/knowledge/push/integration/harmonyos.md +2 -1
  213. package/resource/knowledge/push/integration/ios.md +16 -10
  214. package/resource/knowledge/push/integration/react-native.md +10 -14
  215. package/resource/knowledge/push/integration/uni-app.md +10 -6
  216. package/resource/knowledge/push/integration/unity.md +19 -22
  217. package/resource/knowledge/push/integration/unreal-engine.md +7 -9
  218. package/resource/knowledge/push/overview/prepare.md +2 -2
  219. package/resource/knowledge/roomkit/core-sdk/android/capability-matrix.md +46 -0
  220. package/resource/knowledge/roomkit/core-sdk/android/unsupported-features.md +82 -0
  221. package/resource/knowledge/roomkit/core-sdk/flutter/capability-matrix.md +46 -0
  222. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -1
  223. package/resource/knowledge/roomkit/core-sdk/flutter/unsupported-features.md +82 -0
  224. package/resource/knowledge/roomkit/core-sdk/ios/capability-matrix.md +46 -0
  225. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +1 -1
  226. package/resource/knowledge/roomkit/core-sdk/ios/unsupported-features.md +82 -0
  227. package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +1 -1
  228. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -4
  229. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +2 -5
  230. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
  231. package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +0 -2
  232. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +2 -6
  233. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -1
  234. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +1 -1
  235. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +2 -4
  236. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +2 -3
  237. package/resource/knowledge/roomkit/preset/android/integration.md +14 -16
  238. package/resource/knowledge/roomkit/preset/flutter/integration.md +9 -17
  239. package/resource/knowledge/roomkit/preset/ios/integration.md +9 -17
  240. package/resource/knowledge/roomkit/preset/react/integration.md +0 -4
  241. package/resource/knowledge/trtc/android/TRTCCloud.md +97 -180
  242. package/resource/knowledge/trtc/android/TRTCCloudDef.md +20 -20
  243. package/resource/knowledge/trtc/android/TRTCCloudListener.md +43 -77
  244. package/resource/knowledge/trtc/android/TRTCStatistics.md +1 -1
  245. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +4 -24
  246. package/resource/knowledge/trtc/android/TXDeviceManager.md +2 -2
  247. package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -1
  248. package/resource/knowledge/trtc/c++/ITRTCCloud.md +96 -189
  249. package/resource/knowledge/trtc/c++/ITRTCStatistics.md +1 -1
  250. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +1 -21
  251. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +4 -6
  252. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +42 -76
  253. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +18 -19
  254. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -1
  255. package/resource/knowledge/trtc/ios/TRTCCloud.md +95 -181
  256. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +43 -78
  257. package/resource/knowledge/trtc/ios/TRTCStatistics.md +1 -1
  258. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +1 -20
  259. package/resource/knowledge/trtc/ios/TXDeviceManager.md +4 -6
  260. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -1
  261. package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +20 -20
  262. package/server.js +2 -2
  263. package/tools/common/finalize_answer.js +1 -1
  264. package/tools/common/present_framework_choice.js +2 -2
  265. package/tools/common/search_trtc_knowledge.js +3 -3
  266. package/tools/common/submit_feedback.js +1 -1
  267. package/tools/definitions/get_native_live_uikit_integration_def.js +60 -0
  268. package/tools/definitions/get_native_livekit_core_integration_def.js +1 -1
  269. package/tools/definitions/present_framework_choice_def.js +2 -2
  270. package/tools/definitions/search_trtc_knowledge_def.js +5 -5
  271. package/tools/index.js +2 -0
  272. package/tools/live/get_native_live_uikit_integration.js +69 -0
  273. package/tools/live/get_native_livekit_core_integration.js +6 -6
  274. package/utils/report-cls-client.js +1 -1
  275. package/utils/report-es-client.js +1 -1
  276. package/resource/index/component-slugs.json +0 -1
  277. package/resource/index/doc-source-urls.json +0 -1
  278. package/resource/index/manifest.json +0 -1
  279. package/resource/knowledge/livekit/core-sdk/live/android/live-audio-effect.md +0 -229
  280. package/resource/knowledge/livekit/core-sdk/live/android/live-gift.md +0 -459
  281. package/resource/knowledge/livekit/core-sdk/live/flutter/live-barrage.md +0 -506
  282. package/resource/knowledge/livekit/core-sdk/live/flutter/live-gift.md +0 -427
  283. package/resource/knowledge/livekit/core-sdk/live/flutter/live-live-list.md +0 -726
  284. package/resource/knowledge/livekit/core-sdk/live/ios/live-audience-list.md +0 -265
  285. package/resource/knowledge/livekit/core-sdk/live/ios/live-audio-effect.md +0 -214
  286. package/resource/knowledge/livekit/core-sdk/live/ios/live-barrage.md +0 -427
  287. package/resource/knowledge/livekit/core-sdk/voice/android/voice-audience-list.md +0 -272
  288. package/resource/knowledge/livekit/core-sdk/voice/android/voice-barrage.md +0 -486
  289. package/resource/knowledge/livekit/core-sdk/voice/android/voice-room-list.md +0 -523
  290. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +0 -262
  291. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +0 -600
  292. package/resource/knowledge/livekit/core-sdk/voice/ios/voice-gift.md +0 -411
  293. package/resource/knowledge/livekit/core-sdk/voice/ios/voice-room-list.md +0 -404
  294. /package/resource/knowledge/livekit/core-sdk/api-reference/{web → vue}/index.md +0 -0
  295. /package/resource/knowledge/livekit/core-sdk/{live/android/live-audience-list.md → features/android/audience-list.md} +0 -0
  296. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audience-list.md → features/flutter/audience-list.md} +0 -0
  297. /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-base-beauty.md → features/flutter/base-beauty.md} +0 -0
  298. /package/resource/knowledge/livekit/core-sdk/{voice/uni-app/voice-audience-list.md → features/uni-app/audience-list.md} +0 -0
  299. /package/resource/knowledge/livekit/core-sdk/live/flutter/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -0
@@ -1,523 +0,0 @@
1
- `LiveListStore` 是 `AtomicXCore` 中负责管理直播房间列表、创建、加入以及维护房间状态的核心模块。通过 `LiveListStore`,您可以为您的应用构建完整的直播生命周期管理。
2
-
3
- ## 核心功能
4
- - **直播列表拉取**:获取当前所有公开的直播间列表,支持分页加载。
5
-
6
- - **直播生命周期管理**:提供从创建、开播、加入、离开到结束直播的全套流程接口。
7
-
8
- - **直播信息更新**:主播可以随时更新直播间的公开信息,例如封面、公告等。
9
-
10
- - **实时事件监听**:监听直播结束、用户被踢出等关键事件。
11
-
12
- - **自定义业务数据**:强大的自定义元数据(`MetaData`)能力,允许您在房间内存储和同步任何业务相关的信息,例如直播状态、音乐信息、自定义角色等 。
13
-
14
- ## 核心概念
15
-
16
- 在开始集成之前,我们先通过下表了解一下 `LiveListStore` 相关的几个核心概念:
17
-
18
- |**核心概念**|**类型**|**核心职责与描述**|
19
- |---------|---------|---------|
20
- |`LiveInfo`|`data class`|代表一个直播间的所有信息模型。包含了直播 ID (`liveID`)、名称 (`liveName`)、房主信息 (`liveOwner`) 以及自定义元数据 (`metaData`) 等。|
21
- |`LiveListState`|`data class`|代表直播列表模块的当前状态。其核心属性 liveList 是一个 `StateFlow`,存储了拉取到的直播列表;`currentLive` 则代表用户当前所在的直播间信息。|
22
- |`LiveListListener`|`abstract class`|代表直播房间的全局事件。分为 `onLiveEnded` (直播结束) 和 `onKickedOutOfLive` (被踢出直播) 两种,用于处理关键的房间状态变更。|
23
- |`LiveListStore`|`abstract class`|代表直播房间的全局事件。分为 `.onLiveEnded` (直播结束) 和 `.onKickedOutOfLive` (被踢出直播) 两种,用于处理关键的房间状态变更。|
24
-
25
- ## 实现步骤
26
-
27
- ### 步骤1:组件集成
28
- - **视频直播**:请参考 开播与观看 集成 **AtomicXCore**,完成接入。
29
-
30
- - **语聊房**:请参考 开播与收听 集成 **AtomicXCore**,完成接入。
31
-
32
- ### 步骤2:实现观众从直播列表进入直播间
33
-
34
- 创建一个展示直播列表的页面,该页面使用 `RecyclerView` 来布局直播间卡片。当用户点击某个卡片时,获取该直播间的 `liveId`,并跳转到观众观看页面。
35
- ``` kotlin
36
- import android.content.Intent
37
- import android.os.Bundle
38
- import android.view.LayoutInflater
39
- import android.view.View
40
- import android.view.ViewGroup
41
- import androidx.appcompat.app.AppCompatActivity
42
- import androidx.recyclerview.widget.GridLayoutManager
43
- import androidx.recyclerview.widget.RecyclerView
44
- import io.trtc.tuikit.atomicxcore.api.CompletionHandler
45
- import io.trtc.tuikit.atomicxcore.api.live.LiveInfo
46
- import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
47
- import kotlinx.coroutines.*
48
- import kotlinx.coroutines.flow.*
49
-
50
- class LiveListActivity : AppCompatActivity() {
51
- private val liveListStore = LiveListStore.shared()
52
- private var liveList: List<LiveInfo> = emptyList()
53
- private val coroutineScope = CoroutineScope(Dispatchers.Main)
54
-
55
- private lateinit var recyclerView: RecyclerView
56
- private lateinit var adapter: LiveListAdapter
57
-
58
- override fun onCreate(savedInstanceState: Bundle?) {
59
- super.onCreate(savedInstanceState)
60
- setContentView(R.layout.activity_live_list)
61
- setupUI()
62
- bindStore()
63
- fetchLiveList()
64
- }
65
-
66
- private fun bindStore() {
67
- // 订阅 state,自动接收列表更新
68
- coroutineScope.launch {
69
- liveListStore.liveState.liveList.collect { fetchedList ->
70
- liveList = fetchedList
71
- adapter.notifyDataSetChanged()
72
- }
73
- }
74
- }
75
-
76
- private fun fetchLiveList() {
77
- liveListStore.fetchLiveList(
78
- cursor = "",
79
- count = 20,
80
- completion = object : CompletionHandler {
81
- override fun onSuccess() {
82
- println("直播列表拉取成功")
83
- }
84
-
85
- override fun onFailure(code: Int, desc: String) {
86
- println("直播列表拉取失败: $desc")
87
- }
88
- }
89
- )
90
- }
91
-
92
- // 当用户点击列表中的某个Item时
93
- private fun onLiveItemClick(liveInfo: LiveInfo) {
94
- // 创建观众观看页面,并将 liveId 传入
95
- val intent = Intent(this, YourAudienceActivity::class.java)
96
- intent.putExtra("liveId", liveInfo.liveID)
97
- startActivity(intent)
98
- }
99
-
100
- // --- RecyclerView 相关方法 ---
101
- private fun setupUI() {
102
- recyclerView = findViewById(R.id.recyclerView)
103
- adapter = LiveListAdapter(liveList) { liveInfo ->
104
- onLiveItemClick(liveInfo)
105
- }
106
- recyclerView.layoutManager = GridLayoutManager(this, 2)
107
- recyclerView.adapter = adapter
108
- }
109
-
110
- override fun onDestroy() {
111
- super.onDestroy()
112
- coroutineScope.cancel()
113
- }
114
- }
115
-
116
- // RecyclerView Adapter
117
- class LiveListAdapter(
118
- private var liveList: List<LiveInfo>,
119
- private val onItemClick: (LiveInfo) -> Unit
120
- ) : RecyclerView.Adapter<LiveListAdapter.LiveViewHolder>() {
121
-
122
- class LiveViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
123
- // 定义您的ViewHolder视图组件
124
- // val titleTextView: TextView = itemView.findViewById(R.id.titleTextView)
125
- // val coverImageView: ImageView = itemView.findViewById(R.id.coverImageView)
126
- }
127
-
128
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LiveViewHolder {
129
- val view = LayoutInflater.from(parent.context)
130
- .inflate(R.layout.item_live_card, parent, false)
131
- return LiveViewHolder(view)
132
- }
133
-
134
- override fun onBindViewHolder(holder: LiveViewHolder, position: Int) {
135
- val liveInfo = liveList[position]
136
- // 设置数据到ViewHolder
137
- // holder.titleTextView.text = liveInfo.liveName
138
- // 加载封面图片等
139
-
140
- holder.itemView.setOnClickListener {
141
- onItemClick(liveInfo)
142
- }
143
- }
144
-
145
- override fun getItemCount(): Int = liveList.size
146
- }
147
-
148
- ```
149
-
150
- **LiveInfo 参数说明**
151
-
152
- |**参数名**|**类型**|**描述**|
153
- |---------|---------|---------|
154
- |`liveID`|`String`|直播间的唯一标识符。|
155
- |`liveName`|`String`|直播间的标题。|
156
- |`coverURL`|`String`|直播间的封面图片地址。|
157
- |`liveOwner`|[LiveUserInfo](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-user-info/index.html)|房主的个人信息。|
158
- |`totalViewerCount`|`Int`|直播间的总观看人数。|
159
- |`categoryList`|`List<Int>`|直播间的分类标签列表。|
160
- |`notice`|`String`|直播间的公告信息。|
161
- |`metaData`|`Map<String: String>`|开发者自定义的元数据,用于实现复杂的业务场景。|
162
-
163
- ## 功能进阶
164
-
165
- ### 场景一:实现直播列表的分类展示
166
-
167
- 在 App 的直播广场页,顶部设有"热门"、"音乐"、"游戏"等分类标签。用户点击不同的标签后,下方的直播列表会动态筛选,只展示对应分类的直播间,从而帮助用户快速发现感兴趣的内容。
168
-
169
- #### 实现方式
170
-
171
- 核心是利用 `LiveInfo` 模型中的 `categoryList` 属性。当主播开播设置分类后,`fetchLiveList` 返回的 `LiveInfo` 对象中就会包含这些分类信息。您的 App 在获取到完整的直播列表后,只需在客户端根据用户选择的分类,对这个列表进行一次简单的筛选,然后刷新 UI 即可。
172
-
173
- #### 代码示例
174
-
175
- 以下示例展示了如何在 `LiveListActivity` 中扩展一个 `LiveListManager` 来处理数据和筛选逻辑。
176
- ``` kotlin
177
- import android.os.Bundle
178
- import androidx.appcompat.app.AppCompatActivity
179
- import androidx.recyclerview.widget.RecyclerView
180
- import io.trtc.tuikit.atomicxcore.api.live.LiveInfo
181
- import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
182
- import kotlinx.coroutines.*
183
- import kotlinx.coroutines.flow.*
184
-
185
- // 1. 创建一个数据管理器来封装数据获取和筛选逻辑
186
- class LiveListManager {
187
- private val liveListStore = LiveListStore.shared()
188
- private var fullLiveList: List<LiveInfo> = emptyList()
189
-
190
- // 对外暴露最终的直播列表
191
- private val _filteredLiveList = MutableStateFlow<List<LiveInfo>>(emptyList())
192
- val filteredLiveList: StateFlow<List<LiveInfo>> = _filteredLiveList
193
-
194
- init {
195
- // 监听完整列表变化
196
- CoroutineScope(Dispatchers.Main).launch {
197
- liveListStore.liveState.liveList.collect { fetchedList ->
198
- fullLiveList = fetchedList
199
- // 默认将完整列表发布出去
200
- _filteredLiveList.value = fetchedList
201
- }
202
- }
203
- }
204
-
205
- fun fetchFirstPage() {
206
- liveListStore.fetchLiveList(cursor = "", count = 20, completion = null)
207
- }
208
-
209
- /// 根据分类筛选直播列表
210
- fun filterLiveList(categoryId: Int?) {
211
- if (categoryId == null) {
212
- // 如果 categoryId 为 null,则显示完整列表
213
- _filteredLiveList.value = fullLiveList
214
- return
215
- }
216
-
217
- val filteredList = fullLiveList.filter { liveInfo ->
218
- liveInfo.categoryList.contains(categoryId)
219
- }
220
- _filteredLiveList.value = filteredList
221
- }
222
- }
223
-
224
- // 2. 在您的 LiveListActivity 中使用 Manager
225
- class LiveListActivity : AppCompatActivity() {
226
- private val manager = LiveListManager()
227
- private lateinit var recyclerView: RecyclerView
228
-
229
- override fun onCreate(savedInstanceState: Bundle?) {
230
- super.onCreate(savedInstanceState)
231
- setContentView(R.layout.activity_live_list)
232
- // setupUI()
233
-
234
- // 绑定数据
235
- CoroutineScope(Dispatchers.Main).launch {
236
- manager.filteredLiveList.collect { filteredList ->
237
- // 刷新UI
238
- // adapter.updateList(filteredList)
239
- }
240
- }
241
-
242
- // 首次拉取
243
- manager.fetchFirstPage()
244
- }
245
-
246
- // 当用户点击顶部分类标签时
247
- fun onCategorySelected(categoryId: Int) {
248
- manager.filterLiveList(categoryId)
249
- }
250
-
251
- // ... (RecyclerView 相关代码)
252
- }
253
- ```
254
-
255
- ### 场景二:实现直播列表的滑动播放
256
-
257
- 用户可以通过上下滑动来切换直播间,当一个新的直播间滑动到屏幕中央时,视频会自动开始播放预览;当它滑出屏幕时,视频则会自动停止,以节省带宽和设备性能。
258
-
259
- #### 交互流程图
260
-
261
- #### 实现方式
262
-
263
- `LiveCoreView` 支持多实例使用,我们为每一个 `RecyclerView.ViewHolder` 都创建一个独立的 `LiveCoreView` 实例。通过监听 `RecyclerView` 的滚动状态,我们可以精确地控制即将出现和已经离开屏幕的 ViewHolder 中的 `LiveCoreView` 何时开始和停止拉流,从而实现“即滑即播、即走即停”的效果。
264
-
265
- #### 代码示例
266
-
267
- 我们创建一个自定义的 `LiveFeedViewHolder`,它内部持有一个 `LiveCoreView`。然后在 Activity 中管理这些 ViewHolder 的播放状态。
268
- ``` kotlin
269
- import android.os.Bundle
270
- import android.view.LayoutInflater
271
- import android.view.View
272
- import android.view.ViewGroup
273
- import androidx.appcompat.app.AppCompatActivity
274
- import androidx.recyclerview.widget.LinearLayoutManager
275
- import androidx.recyclerview.widget.RecyclerView
276
- import io.trtc.tuikit.atomicxcore.api.live.LiveInfo
277
- import io.trtc.tuikit.atomicxcore.api.view.CoreViewType
278
- import io.trtc.tuikit.atomicxcore.api.view.LiveCoreView
279
-
280
- // 1. 自定义 RecyclerView.ViewHolder,内部包含一个 LiveCoreView
281
- class LiveFeedViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
282
- private var liveCoreView: LiveCoreView? = null
283
-
284
- fun setLiveInfo(liveInfo: LiveInfo) {
285
- // 为新的直播信息创建一个新的 LiveCoreView
286
- liveCoreView = LiveCoreView(itemView.context, viewType = CoreViewType.PLAY_VIEW)
287
- liveCoreView?.let { view ->
288
- (itemView as ViewGroup).addView(view)
289
- view.layoutParams = ViewGroup.LayoutParams(
290
- ViewGroup.LayoutParams.MATCH_PARENT,
291
- ViewGroup.LayoutParams.MATCH_PARENT
292
- )
293
- }
294
- }
295
-
296
- fun startPlay(roomId: String) {
297
- liveCoreView?.startPreviewLiveStream(roomId, false, callback = null)
298
- }
299
-
300
- fun stopPlay(roomId: String) {
301
- liveCoreView?.stopPreviewLiveStream(roomId)
302
- }
303
- }
304
-
305
- // 2. 在 Activity 中管理播放逻辑
306
- class LiveFeedActivity : AppCompatActivity() {
307
-
308
- private lateinit var recyclerView: RecyclerView
309
- private var liveList: List<LiveInfo> = emptyList()
310
- private var currentPlayingPosition: Int = -1
311
-
312
- override fun onCreate(savedInstanceState: Bundle?) {
313
- super.onCreate(savedInstanceState)
314
- setContentView(R.layout.activity_live_feed)
315
- setupRecyclerView()
316
- }
317
-
318
- private fun setupRecyclerView() {
319
- recyclerView = findViewById(R.id.recyclerView)
320
- recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
321
- recyclerView.adapter = LiveFeedAdapter(liveList) { position ->
322
- playVideoAtPosition(position)
323
- }
324
-
325
- // 监听滚动状态
326
- recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
327
- override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
328
- super.onScrollStateChanged(recyclerView, newState)
329
- if (newState == RecyclerView.SCROLL_STATE_IDLE) {
330
- val layoutManager = recyclerView.layoutManager as LinearLayoutManager
331
- val firstVisiblePosition = layoutManager.findFirstCompletelyVisibleItemPosition()
332
- if (firstVisiblePosition != RecyclerView.NO_POSITION) {
333
- playVideoAtPosition(firstVisiblePosition)
334
- }
335
- }
336
- }
337
- })
338
- }
339
-
340
- private fun playVideoAtPosition(position: Int) {
341
- // 只有当居中的位置变化时才切换播放
342
- if (currentPlayingPosition != position) {
343
- // 停止当前播放
344
- if (currentPlayingPosition != -1) {
345
- val currentViewHolder = recyclerView.findViewHolderForAdapterPosition(currentPlayingPosition)
346
- if (currentViewHolder is LiveFeedViewHolder) {
347
- val liveInfo = liveList[currentPlayingPosition]
348
- currentViewHolder.stopPlay(liveInfo.liveID)
349
- }
350
- }
351
-
352
- // 开始新的播放
353
- val newViewHolder = recyclerView.findViewHolderForAdapterPosition(position)
354
- if (newViewHolder is LiveFeedViewHolder) {
355
- val liveInfo = liveList[position]
356
- newViewHolder.startPlay(liveInfo.liveID)
357
- currentPlayingPosition = position
358
- }
359
- }
360
- }
361
-
362
- // RecyclerView Adapter
363
- inner class LiveFeedAdapter(
364
- private var liveList: List<LiveInfo>,
365
- private val onItemClick: (Int) -> Unit
366
- ) : RecyclerView.Adapter<LiveFeedViewHolder>() {
367
-
368
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LiveFeedViewHolder {
369
- val view = LayoutInflater.from(parent.context)
370
- .inflate(R.layout.item_live_feed, parent, false)
371
- return LiveFeedViewHolder(view)
372
- }
373
-
374
- override fun onBindViewHolder(holder: LiveFeedViewHolder, position: Int) {
375
- val liveInfo = liveList[position]
376
- holder.setLiveInfo(liveInfo)
377
- holder.itemView.setOnClickListener {
378
- onItemClick(position)
379
- }
380
- }
381
-
382
- override fun getItemCount(): Int = liveList.size
383
- }
384
- }
385
- ```
386
-
387
- ### 场景三:实现电商直播的商品信息展示
388
-
389
- 在电商直播中,主播正在讲解一款商品。此时,所有观众的直播画面下方都会弹出一张商品卡片,实时展示该商品的图片、名称和价格。当主播切换讲解下一件商品时,所有观众端的卡片都会自动、同步更新。
390
-
391
- #### 实现方式
392
-
393
- 主播端将当前商品的结构化信息(建议使用 **JSON **格式)通过 `updateLiveMetaData` 接口设置到一个自定义的 key(例如 "`product_info`")中。**AtomicXCore** 会将这个变更实时同步给所有观众。观众端只需订阅 `LiveListStore.liveState.currentLive`,监听 `metaData` 的变化,一旦发现 `product_info` 的值更新,就解析其中的 JSON 数据并刷新商品卡片 UI。
394
-
395
- #### 代码示例
396
- ``` kotlin
397
- import android.os.Bundle
398
- import androidx.appcompat.app.AppCompatActivity
399
- import io.trtc.tuikit.atomicxcore.api.CompletionHandler
400
- import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
401
- import org.json.JSONObject
402
- import org.json.JSONException
403
- import kotlinx.coroutines.*
404
- import kotlinx.coroutines.flow.*
405
-
406
- // 1. 定义一个商品信息数据类
407
- data class Product(
408
- val id: String,
409
- val name: String,
410
- val price: String,
411
- val imageUrl: String
412
- )
413
-
414
- // 2. 主播端:在 YourAnchorActivity 中添加推送商品的方法
415
- class YourAnchorActivity : AppCompatActivity() {
416
- fun pushProductInfo(product: Product) {
417
- try {
418
- val jsonObject = JSONObject().apply {
419
- put("id", product.id)
420
- put("name", product.name)
421
- put("price", product.price)
422
- put("imageUrl", product.imageUrl)
423
- }
424
- val jsonString = jsonObject.toString()
425
-
426
- val metaData = hashMapOf("product_info" to jsonString)
427
-
428
- // 使用全局单例的 liveListStore 来更新 metaData
429
- LiveListStore.shared().updateLiveMetaData(
430
- metaData,
431
- object : CompletionHandler {
432
- override fun onSuccess() {
433
- println("商品 ${product.name} 信息推送成功")
434
- }
435
-
436
- override fun onFailure(code: Int, desc: String) {
437
- println("商品信息推送失败: $desc")
438
- }
439
- }
440
- )
441
- } catch (e: JSONException) {
442
- println("JSON序列化失败: ${e.message}")
443
- }
444
- }
445
- }
446
-
447
- // 3. 观众端:在 YourAudienceActivity 中订阅并响应
448
- class YourAudienceActivity : AppCompatActivity() {
449
-
450
- private val liveListStore = LiveListStore.shared()
451
- private val coroutineScope = CoroutineScope(Dispatchers.Main)
452
- // 假设您有一个自定义的商品卡片视图
453
- // private lateinit var productCardView: ProductCardView
454
-
455
- override fun onCreate(savedInstanceState: Bundle?) {
456
- super.onCreate(savedInstanceState)
457
- setContentView(R.layout.activity_audience)
458
- // ... (setupUI, 布局 productCardView)
459
- joinLive()
460
- subscribeToProductUpdates()
461
- }
462
-
463
- private fun subscribeToProductUpdates() {
464
- coroutineScope.launch {
465
- liveListStore.liveState.currentLive.collect { currentLive ->
466
- val productInfoJson = currentLive.metaData["product_info"]
467
- if (productInfoJson != null) {
468
- try {
469
- val jsonObject = JSONObject(productInfoJson)
470
- val product = Product(
471
- id = jsonObject.getString("id"),
472
- name = jsonObject.getString("name"),
473
- price = jsonObject.getString("price"),
474
- imageUrl = jsonObject.getString("imageUrl")
475
- )
476
- // productCardView.updateProduct(product)
477
- // productCardView.show()
478
- } catch (e: JSONException) {
479
- println("商品信息解析失败: ${e.message}")
480
- // productCardView.hide()
481
- }
482
- } else {
483
- // productCardView.hide() // 如果没有商品信息,则隐藏卡片
484
- }
485
- }
486
- }
487
- }
488
-
489
- override fun onDestroy() {
490
- super.onDestroy()
491
- coroutineScope.cancel()
492
- }
493
-
494
- // ... (joinLive 和 leaveLive 方法)
495
- }
496
-
497
- ```
498
-
499
- ## API 文档
500
-
501
- 关于 [LiveListStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-list-store/index.html) 及其相关类的所有公开接口、属性和方法的详细信息,请参阅随 [AtomicXCore](https://tencent-rtc.github.io/TUIKit_Android/index.html) 框架的官方 API 文档。本文档使用到的相关 Store 如下:
502
-
503
- |Store/Component|功能描述|API 文档|
504
- |---------|---------|---------|
505
- |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)|
506
- |LiveListStore|直播间全生命周期管理:创建 / 加入 / 离开 / 销毁房间,查询房间列表,修改直播信息(名称、公告等),监听直播状态(例如被踢出、结束)。|[API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-list-store/index.html)|
507
-
508
- ## 常见问题
509
-
510
- ### 使用 `updateLiveMetaData` 时有哪些需要注意的限制和规则?
511
-
512
- 为了保证系统的稳定和高效,`metaData` 的使用遵循以下规则:
513
- - **权限**: 只有房主和管理员可以调用 `updateLiveMetaData`。普通观众没有权限。
514
-
515
- - **数量与大小限制**:
516
-
517
- - 单个房间最多支持 **10** 个 key。
518
-
519
- - 每个 key 的长度不超过 **50 字节**,每个 value 的长度不超过 **2KB**。
520
-
521
- - 单个房间所有 value 的总大小不超过 **16KB**。
522
-
523
- - **冲突解决**: `metaData` 的更新机制是"后来者覆盖"。如果多个管理员在短时间内修改同一个 key,最后一次的修改会生效。建议在业务设计上避免多人同时修改同一个关键信息。