@tencent-rtc/mcp 1.4.6 → 1.6.0-beta.1

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 (552) hide show
  1. package/cursor-setting.png +0 -0
  2. package/knowledge/bm25-cache.js +74 -0
  3. package/knowledge/bm25-cache.js.map +1 -0
  4. package/knowledge/bm25.js +148 -0
  5. package/knowledge/bm25.js.map +1 -0
  6. package/knowledge/build-index.js +70 -0
  7. package/knowledge/build-index.js.map +1 -0
  8. package/knowledge/chunker.js +168 -0
  9. package/knowledge/chunker.js.map +1 -0
  10. package/knowledge/content-loader.js +40 -0
  11. package/knowledge/content-loader.js.map +1 -0
  12. package/knowledge/doc-url-resolver.js +143 -0
  13. package/knowledge/doc-url-resolver.js.map +1 -0
  14. package/knowledge/extractors.js +26 -0
  15. package/knowledge/extractors.js.map +1 -0
  16. package/knowledge/path-meta.js +185 -0
  17. package/knowledge/path-meta.js.map +1 -0
  18. package/knowledge/search/exact-lookup.js +498 -0
  19. package/knowledge/search/exact-lookup.js.map +1 -0
  20. package/knowledge/search/filter-pool.js +105 -0
  21. package/knowledge/search/filter-pool.js.map +1 -0
  22. package/knowledge/search/product-scope-intent.js +41 -0
  23. package/knowledge/search/product-scope-intent.js.map +1 -0
  24. package/knowledge/search/requires-framework.js +82 -0
  25. package/knowledge/search/requires-framework.js.map +1 -0
  26. package/knowledge/search/search-knowledge.js +230 -0
  27. package/knowledge/search/search-knowledge.js.map +1 -0
  28. package/mcp-server-prompt.png +0 -0
  29. package/package.json +1 -1
  30. package/resource/_schema/feature-aliases.yaml +10 -0
  31. package/resource/_schema/goal-tags.yaml +72 -0
  32. package/resource/_schema/products.yaml +19 -0
  33. package/resource/_schema/trtc-intents.yaml +27 -0
  34. package/resource/_schema/types.yaml +43 -0
  35. package/resource/index/component-slugs.json +1 -0
  36. package/resource/index/doc-source-urls.json +1 -0
  37. package/resource/index/manifest.json +1 -0
  38. package/resource/{doc → integration}/callkit/preset/android/integration.md +34 -28
  39. package/resource/integration/callkit/preset/flutter/integration.md +346 -0
  40. package/resource/integration/callkit/preset/ios/integration.md +408 -0
  41. package/resource/integration/callkit/preset/react/integration.md +362 -0
  42. package/resource/integration/callkit/preset/vue/integration.md +356 -0
  43. package/resource/integration/chat/preset/android/integration.md +500 -0
  44. package/resource/integration/chat/preset/flutter/integration.md +370 -0
  45. package/resource/integration/chat/preset/ios/integration.md +566 -0
  46. package/resource/integration/chat/preset/react/integration.md +490 -0
  47. package/resource/integration/chat/preset/vue/integration.md +504 -0
  48. package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +26 -22
  49. package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +22 -18
  50. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +309 -0
  51. package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +47 -39
  52. package/resource/integration/roomkit/preset/vue/integration.md +562 -0
  53. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +828 -0
  54. package/resource/knowledge/callkit/core-sdk/android/make-call.md +897 -0
  55. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +363 -0
  56. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1111 -0
  57. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1132 -0
  58. package/resource/{doc → knowledge}/callkit/core-sdk/flutter/offline-push.md +174 -151
  59. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1084 -0
  60. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1252 -0
  61. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +534 -0
  62. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +953 -0
  63. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1061 -0
  64. package/resource/knowledge/callkit/faq/android.md +92 -0
  65. package/resource/{doc/callkit/faq/android-faq.md → knowledge/callkit/faq/common.md} +11 -12
  66. package/resource/knowledge/callkit/faq/error-code.md +67 -0
  67. package/resource/knowledge/callkit/faq/flutter.md +52 -0
  68. package/resource/knowledge/callkit/faq/ios.md +104 -0
  69. package/resource/knowledge/callkit/faq/web.md +74 -0
  70. package/resource/knowledge/callkit/preset/android/api.md +412 -0
  71. package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
  72. package/resource/knowledge/callkit/preset/ios/api.md +234 -0
  73. package/resource/knowledge/callkit/preset/web/api.md +83 -0
  74. package/resource/knowledge/chat/preset/android/features/chat-setting.md +74 -0
  75. package/resource/knowledge/chat/preset/android/features/contact-list.md +43 -0
  76. package/resource/knowledge/chat/preset/android/features/conversation-list.md +117 -0
  77. package/resource/knowledge/chat/preset/android/features/language.md +136 -0
  78. package/resource/knowledge/chat/preset/android/features/message-input.md +57 -0
  79. package/resource/knowledge/chat/preset/android/features/message-list.md +142 -0
  80. package/resource/knowledge/chat/preset/android/features/search.md +64 -0
  81. package/resource/knowledge/chat/preset/android/features/theme.md +222 -0
  82. package/resource/knowledge/chat/preset/android-view/integration.md +300 -0
  83. package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +64 -0
  84. package/resource/knowledge/chat/preset/flutter/features/contact-list.md +40 -0
  85. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +129 -0
  86. package/resource/knowledge/chat/preset/flutter/features/language.md +104 -0
  87. package/resource/knowledge/chat/preset/flutter/features/message-input.md +54 -0
  88. package/resource/knowledge/chat/preset/flutter/features/message-list.md +158 -0
  89. package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
  90. package/resource/knowledge/chat/preset/flutter/features/theme.md +261 -0
  91. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +94 -0
  92. package/resource/knowledge/chat/preset/ios/features/contact-list.md +119 -0
  93. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +134 -0
  94. package/resource/knowledge/chat/preset/ios/features/language.md +125 -0
  95. package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
  96. package/resource/knowledge/chat/preset/ios/features/message-list.md +162 -0
  97. package/resource/knowledge/chat/preset/ios/features/search.md +93 -0
  98. package/resource/knowledge/chat/preset/ios/features/theme.md +270 -0
  99. package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +160 -158
  100. package/resource/knowledge/chat/preset/react/features/chat-setting.md +101 -0
  101. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +43 -41
  102. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +215 -0
  103. package/resource/knowledge/chat/preset/react/features/conversation-list.md +339 -0
  104. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +101 -0
  105. package/resource/knowledge/chat/preset/react/features/conversation-search.md +61 -0
  106. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +117 -156
  107. package/resource/knowledge/chat/preset/react/features/message-list.md +297 -0
  108. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/search.md +65 -59
  109. package/resource/knowledge/chat/preset/react/features/theme.md +93 -0
  110. package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
  111. package/resource/knowledge/chat/preset/vue/features/chat-setting.md +79 -0
  112. package/resource/knowledge/chat/preset/vue/features/contact-list.md +277 -0
  113. package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +234 -0
  114. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +331 -0
  115. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +216 -0
  116. package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +13 -13
  117. package/resource/knowledge/chat/preset/vue/features/message-input.md +551 -0
  118. package/resource/knowledge/chat/preset/vue/features/message-list.md +350 -0
  119. package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +79 -73
  120. package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
  121. package/resource/knowledge/chat/urls/error-code.md +17 -0
  122. package/resource/knowledge/chat/urls/product.md +43 -0
  123. package/resource/knowledge/chat/urls/restapi.md +204 -0
  124. package/resource/knowledge/chat/urls/sdk/android.md +80 -0
  125. package/resource/knowledge/chat/urls/sdk/flutter.md +71 -0
  126. package/resource/knowledge/chat/urls/sdk/ios.md +80 -0
  127. package/resource/knowledge/chat/urls/sdk/web.md +80 -0
  128. package/resource/knowledge/chat/urls/webhook.md +68 -0
  129. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +286 -0
  130. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +174 -0
  131. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +329 -0
  132. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +55 -0
  133. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +434 -0
  134. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +362 -0
  135. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +466 -0
  136. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +173 -0
  137. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +51 -0
  138. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +291 -0
  139. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +78 -0
  140. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +488 -0
  141. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +219 -0
  142. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +282 -0
  143. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
  144. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +153 -0
  145. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +312 -0
  146. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +404 -0
  147. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +334 -0
  148. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +426 -0
  149. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
  150. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +52 -0
  151. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
  152. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +150 -0
  153. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +438 -0
  154. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +190 -0
  155. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +291 -0
  156. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +192 -0
  157. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +146 -0
  158. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +309 -0
  159. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +370 -0
  160. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +339 -0
  161. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +503 -0
  162. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +188 -0
  163. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +51 -0
  164. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +289 -0
  165. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +78 -0
  166. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +487 -0
  167. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +183 -0
  168. package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +736 -0
  169. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +53 -47
  170. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +28 -24
  171. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +22 -18
  172. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +17 -15
  173. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +19 -18
  174. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +102 -89
  175. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +41 -37
  176. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +45 -43
  177. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +23 -20
  178. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +41 -41
  179. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +70 -69
  180. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +68 -71
  181. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +43 -47
  182. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +59 -56
  183. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +103 -105
  184. package/resource/knowledge/livekit/core-sdk/live/flutter/live-host-interaction.md +869 -0
  185. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +84 -87
  186. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +43 -40
  187. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +11 -10
  188. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +28 -24
  189. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +22 -18
  190. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +15 -14
  191. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +19 -18
  192. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +54 -50
  193. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +41 -37
  194. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +40 -40
  195. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +19 -18
  196. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +53 -47
  197. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +28 -24
  198. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +22 -18
  199. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +41 -33
  200. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +94 -81
  201. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +35 -30
  202. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +45 -42
  203. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-room-list.md +23 -20
  204. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +260 -0
  205. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +598 -0
  206. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-barrage.md +490 -0
  207. package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +65 -59
  208. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +424 -0
  209. package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +69 -76
  210. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-room-list.md +726 -0
  211. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +11 -10
  212. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +28 -24
  213. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +22 -18
  214. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +41 -33
  215. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +54 -50
  216. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +35 -30
  217. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +49 -46
  218. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-room-list.md +19 -18
  219. package/resource/knowledge/livekit/faq/error-code.md +193 -0
  220. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/barrage.md +56 -53
  221. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-audience-list.md +22 -21
  222. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-view.md +34 -32
  223. package/resource/knowledge/push/config/android.md +92 -0
  224. package/resource/knowledge/push/config/harmonyos.md +83 -0
  225. package/resource/knowledge/push/config/ios.md +254 -0
  226. package/resource/knowledge/push/config/react-native.md +254 -0
  227. package/resource/knowledge/push/config/unity.md +209 -0
  228. package/resource/knowledge/push/config/unreal-engine.md +194 -0
  229. package/resource/knowledge/push/integration/android.md +404 -0
  230. package/resource/knowledge/push/integration/flutter.md +465 -0
  231. package/resource/knowledge/push/integration/harmonyos.md +63 -0
  232. package/resource/knowledge/push/integration/ios.md +246 -0
  233. package/resource/knowledge/push/integration/react-native.md +366 -0
  234. package/resource/knowledge/push/integration/uni-app.md +208 -0
  235. package/resource/knowledge/push/integration/unity.md +389 -0
  236. package/resource/knowledge/push/integration/unreal-engine.md +390 -0
  237. package/resource/knowledge/push/overview/prepare.md +60 -0
  238. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +241 -0
  239. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +588 -0
  240. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +364 -0
  241. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +340 -0
  242. package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
  243. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +797 -0
  244. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +325 -0
  245. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +325 -0
  246. package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +233 -0
  247. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +569 -0
  248. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +325 -0
  249. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +322 -0
  250. package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +221 -0
  251. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +49 -48
  252. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +461 -0
  253. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +216 -0
  254. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +370 -0
  255. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-participant-state.md +61 -60
  256. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +280 -0
  257. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-view.md +57 -56
  258. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +319 -0
  259. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +267 -0
  260. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +261 -0
  261. package/resource/knowledge/roomkit/preset/android/integration.md +396 -0
  262. package/resource/knowledge/roomkit/preset/flutter/integration.md +404 -0
  263. package/resource/knowledge/roomkit/preset/ios/integration.md +369 -0
  264. package/resource/knowledge/roomkit/preset/react/integration.md +576 -0
  265. package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +44 -0
  266. package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +8 -2
  267. package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +19 -1
  268. package/resource/{doc → knowledge}/rtcengine/web/plugin/23-advanced-support-detection.md +1 -1
  269. package/resource/{doc → knowledge}/rtcengine/web/plugin/24-advanced-network-quality.md +8 -8
  270. package/resource/{doc → knowledge}/rtcengine/web/plugin/25-advanced-device-change.md +1 -1
  271. package/resource/{doc → knowledge}/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +6 -6
  272. package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +3 -3
  273. package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +18 -0
  274. package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
  275. package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +2 -2
  276. package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
  277. package/resource/knowledge/trtc/android/TRTCCloud.md +1915 -0
  278. package/resource/knowledge/trtc/android/TRTCCloudDef.md +1029 -0
  279. package/resource/knowledge/trtc/android/TRTCCloudListener.md +1095 -0
  280. package/resource/knowledge/trtc/android/TRTCStatistics.md +68 -0
  281. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +502 -0
  282. package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
  283. package/resource/knowledge/trtc/android/TXDeviceManager.md +169 -0
  284. package/resource/knowledge/trtc/android/TXLiteAVCode.md +125 -0
  285. package/resource/knowledge/trtc/c++/ITRTCCloud.md +2069 -0
  286. package/resource/knowledge/trtc/c++/ITRTCStatistics.md +73 -0
  287. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
  288. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +391 -0
  289. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1191 -0
  290. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +931 -0
  291. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +127 -0
  292. package/resource/knowledge/trtc/ios/TRTCCloud.md +2118 -0
  293. package/resource/knowledge/trtc/ios/TRTCCloudDef.md +975 -0
  294. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1131 -0
  295. package/resource/knowledge/trtc/ios/TRTCStatistics.md +68 -0
  296. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +423 -0
  297. package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
  298. package/resource/knowledge/trtc/ios/TXDeviceManager.md +387 -0
  299. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +127 -0
  300. package/server.js +35 -10
  301. package/server.js.map +1 -1
  302. package/tools/call/get_native_call_uikit_integration.js +2 -3
  303. package/tools/call/get_native_call_uikit_integration.js.map +1 -1
  304. package/tools/call/get_native_callkit_core_integration.js +2 -5
  305. package/tools/call/get_native_callkit_core_integration.js.map +1 -1
  306. package/tools/call/get_web_call_uikit_integration.js +2 -3
  307. package/tools/call/get_web_call_uikit_integration.js.map +1 -1
  308. package/tools/chat/get_native_chat_uikit_integration.js +2 -3
  309. package/tools/chat/get_native_chat_uikit_integration.js.map +1 -1
  310. package/tools/chat/get_web_chat_uikit_integration.js +2 -3
  311. package/tools/chat/get_web_chat_uikit_integration.js.map +1 -1
  312. package/tools/common/present_framework_choice.js +19 -13
  313. package/tools/common/present_framework_choice.js.map +1 -1
  314. package/tools/common/record_answer.js +19 -25
  315. package/tools/common/record_answer.js.map +1 -1
  316. package/tools/common/record_feedback.js +17 -30
  317. package/tools/common/record_feedback.js.map +1 -1
  318. package/tools/common/search_trtc_knowledge.js +45 -0
  319. package/tools/common/search_trtc_knowledge.js.map +1 -0
  320. package/tools/definitions/get_native_call_uikit_integration_def.js +3 -1
  321. package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
  322. package/tools/definitions/get_native_callkit_core_integration_def.js +5 -3
  323. package/tools/definitions/get_native_callkit_core_integration_def.js.map +1 -1
  324. package/tools/definitions/get_native_chat_uikit_integration_def.js +5 -2
  325. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
  326. package/tools/definitions/get_native_livekit_core_integration_def.js +6 -5
  327. package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -1
  328. package/tools/definitions/get_web_call_uikit_integration_def.js +4 -2
  329. package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
  330. package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -0
  331. package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
  332. package/tools/definitions/get_web_live_uikit_integration_def.js +5 -5
  333. package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
  334. package/tools/definitions/get_web_room_core_integration_def.js +50 -0
  335. package/tools/definitions/get_web_room_core_integration_def.js.map +1 -0
  336. package/tools/definitions/get_web_room_uikit_integration_def.js +5 -4
  337. package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
  338. package/tools/definitions/integration-boundary.js +6 -0
  339. package/tools/definitions/integration-boundary.js.map +1 -0
  340. package/tools/definitions/present_framework_choice_def.js +12 -10
  341. package/tools/definitions/present_framework_choice_def.js.map +1 -1
  342. package/tools/definitions/record_answer_def.js +19 -17
  343. package/tools/definitions/record_answer_def.js.map +1 -1
  344. package/tools/definitions/record_feedback_def.js +14 -13
  345. package/tools/definitions/record_feedback_def.js.map +1 -1
  346. package/tools/definitions/search_trtc_knowledge_def.js +40 -0
  347. package/tools/definitions/search_trtc_knowledge_def.js.map +1 -0
  348. package/tools/index.js +5 -36
  349. package/tools/index.js.map +1 -1
  350. package/tools/live/get_native_livekit_core_integration.js +1 -3
  351. package/tools/live/get_native_livekit_core_integration.js.map +1 -1
  352. package/tools/live/get_web_live_uikit_integration.js +2 -4
  353. package/tools/live/get_web_live_uikit_integration.js.map +1 -1
  354. package/tools/room/get_web_room_core_integration.js +48 -0
  355. package/tools/room/get_web_room_core_integration.js.map +1 -0
  356. package/tools/room/get_web_room_uikit_integration.js +2 -3
  357. package/tools/room/get_web_room_uikit_integration.js.map +1 -1
  358. package/utils/generate-structured-result.js +24 -30
  359. package/utils/generate-structured-result.js.map +1 -1
  360. package/utils/get-doc-content.js +14 -8
  361. package/utils/get-doc-content.js.map +1 -1
  362. package/utils/report-cls-client.js +18 -20
  363. package/utils/report-cls-client.js.map +1 -1
  364. package/utils/report-es-client.js +1 -1
  365. package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
  366. package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -852
  367. package/resource/doc/callkit/core-sdk/android/make-call.md +0 -954
  368. package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -361
  369. package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1160
  370. package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1205
  371. package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1090
  372. package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1248
  373. package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -485
  374. package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -950
  375. package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1052
  376. package/resource/doc/callkit/faq/common/error-code.md +0 -47
  377. package/resource/doc/callkit/faq/flutter-faq.md +0 -115
  378. package/resource/doc/callkit/faq/ios-faq.md +0 -115
  379. package/resource/doc/callkit/faq/web-faq.md +0 -36
  380. package/resource/doc/callkit/preset/android/api.md +0 -296
  381. package/resource/doc/callkit/preset/flutter/api.md +0 -410
  382. package/resource/doc/callkit/preset/flutter/integration.md +0 -164
  383. package/resource/doc/callkit/preset/ios/api.md +0 -80
  384. package/resource/doc/callkit/preset/ios/integration.md +0 -187
  385. package/resource/doc/callkit/preset/react/api.md +0 -501
  386. package/resource/doc/callkit/preset/react/integration.md +0 -86
  387. package/resource/doc/callkit/preset/vue/api.md +0 -501
  388. package/resource/doc/callkit/preset/vue/integration.md +0 -83
  389. package/resource/doc/chatkit/android/faq.md +0 -111
  390. package/resource/doc/chatkit/android/features/theme.md +0 -219
  391. package/resource/doc/chatkit/android/integration.md +0 -490
  392. package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -281
  393. package/resource/doc/chatkit/faq/common/product.md +0 -7
  394. package/resource/doc/chatkit/faq/common/server.md +0 -44
  395. package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
  396. package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -199
  397. package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -53
  398. package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -235
  399. package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
  400. package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -287
  401. package/resource/doc/chatkit/flutter/faq.md +0 -23
  402. package/resource/doc/chatkit/flutter/features/theme.md +0 -235
  403. package/resource/doc/chatkit/flutter/integration.md +0 -344
  404. package/resource/doc/chatkit/ios/faq.md +0 -111
  405. package/resource/doc/chatkit/ios/features/theme.md +0 -267
  406. package/resource/doc/chatkit/react/components/avatar.md +0 -104
  407. package/resource/doc/chatkit/react/components/chat-header.md +0 -148
  408. package/resource/doc/chatkit/react/components/chat-setting.md +0 -57
  409. package/resource/doc/chatkit/react/components/chat.md +0 -38
  410. package/resource/doc/chatkit/react/components/component-list.md +0 -37
  411. package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
  412. package/resource/doc/chatkit/react/components/conversation-list.md +0 -333
  413. package/resource/doc/chatkit/react/components/conversation-preview.md +0 -118
  414. package/resource/doc/chatkit/react/components/conversation-search.md +0 -60
  415. package/resource/doc/chatkit/react/components/message-list.md +0 -293
  416. package/resource/doc/chatkit/react/components/tuikit.md +0 -34
  417. package/resource/doc/chatkit/react/faq.md +0 -26
  418. package/resource/doc/chatkit/react/integration.md +0 -416
  419. package/resource/doc/chatkit/vue/components/avatar.md +0 -104
  420. package/resource/doc/chatkit/vue/components/chat-header.md +0 -148
  421. package/resource/doc/chatkit/vue/components/chat-setting.md +0 -62
  422. package/resource/doc/chatkit/vue/components/chat.md +0 -45
  423. package/resource/doc/chatkit/vue/components/component-list.md +0 -87
  424. package/resource/doc/chatkit/vue/components/contact-list.md +0 -271
  425. package/resource/doc/chatkit/vue/components/conversation-actions.md +0 -228
  426. package/resource/doc/chatkit/vue/components/conversation-list.md +0 -320
  427. package/resource/doc/chatkit/vue/components/conversation-preview.md +0 -213
  428. package/resource/doc/chatkit/vue/components/message-input.md +0 -1054
  429. package/resource/doc/chatkit/vue/components/message-list.md +0 -433
  430. package/resource/doc/chatkit/vue/components/tuikit.md +0 -31
  431. package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
  432. package/resource/doc/chatkit/vue/faq.md +0 -36
  433. package/resource/doc/chatkit/vue/integration.md +0 -428
  434. package/resource/doc/livekit/core-sdk/live/flutter/live-host-interaction.md +0 -866
  435. package/resource/doc/livekit/faq/common/error-code.md +0 -88
  436. package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
  437. package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -91
  438. package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -112
  439. package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -215
  440. package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +0 -300
  441. package/resource/doc/roomkit/faq/common/error-code.md +0 -67
  442. package/resource/doc/roomkit/vue/features/call-user-to-room.md +0 -220
  443. package/resource/doc/roomkit/vue/features/device-state.md +0 -460
  444. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +0 -215
  445. package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
  446. package/resource/doc/roomkit/vue/features/room-state.md +0 -282
  447. package/resource/doc/roomkit/vue/features/schedule-room.md +0 -318
  448. package/resource/doc/roomkit/vue/features/screen-share.md +0 -265
  449. package/resource/doc/roomkit/vue/features/virtual-background.md +0 -271
  450. package/resource/doc/roomkit/vue/integration.md +0 -315
  451. package/resource/doc/rtcengine/faq/common/error_code.md +0 -1
  452. package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
  453. package/resource/doc/rtcengine/web/.gitkeep +0 -0
  454. package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +0 -59
  455. package/resource/doc/trtc/C++/ITRTCCloud.md +0 -1970
  456. package/resource/doc/trtc/C++/ITRTCStatistics.md +0 -70
  457. package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -469
  458. package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -387
  459. package/resource/doc/trtc/C++/TRTCCloudCallback.md +0 -1082
  460. package/resource/doc/trtc/C++/TRTCTypeDef.md +0 -925
  461. package/resource/doc/trtc/C++/TXLiteAVCode.md +0 -129
  462. package/resource/doc/trtc/android/TRTCCloud.md +0 -1815
  463. package/resource/doc/trtc/android/TRTCCloudDef.md +0 -992
  464. package/resource/doc/trtc/android/TRTCCloudListener.md +0 -1004
  465. package/resource/doc/trtc/android/TRTCStatistics.md +0 -65
  466. package/resource/doc/trtc/android/TXAudioEffectManager.md +0 -469
  467. package/resource/doc/trtc/android/TXBeautyManager.md +0 -402
  468. package/resource/doc/trtc/android/TXDeviceManager.md +0 -173
  469. package/resource/doc/trtc/android/TXLiteAVCode.md +0 -127
  470. package/resource/doc/trtc/iOS/TRTCCloud.md +0 -2028
  471. package/resource/doc/trtc/iOS/TRTCCloudDef.md +0 -958
  472. package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +0 -1046
  473. package/resource/doc/trtc/iOS/TRTCStatistics.md +0 -65
  474. package/resource/doc/trtc/iOS/TXAudioEffectManager.md +0 -397
  475. package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -403
  476. package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -381
  477. package/resource/doc/trtc/iOS/TXLiteAVCode.md +0 -130
  478. package/tools/call/get_callkit_api.js +0 -33
  479. package/tools/call/get_callkit_api.js.map +0 -1
  480. package/tools/chat/get_native_chat_uikit_feature_detail.js +0 -35
  481. package/tools/chat/get_native_chat_uikit_feature_detail.js.map +0 -1
  482. package/tools/chat/get_web_chat_uikit_component_detail.js +0 -35
  483. package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
  484. package/tools/common/get_faq.js +0 -266
  485. package/tools/common/get_faq.js.map +0 -1
  486. package/tools/common/record_skill_session.js +0 -69
  487. package/tools/common/record_skill_session.js.map +0 -1
  488. package/tools/definitions/get_callkit_api_def.js +0 -29
  489. package/tools/definitions/get_callkit_api_def.js.map +0 -1
  490. package/tools/definitions/get_faq_def.js +0 -49
  491. package/tools/definitions/get_faq_def.js.map +0 -1
  492. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +0 -31
  493. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +0 -1
  494. package/tools/definitions/get_native_livekit_core_features_def.js +0 -34
  495. package/tools/definitions/get_native_livekit_core_features_def.js.map +0 -1
  496. package/tools/definitions/get_native_trtc_sdk_docs_def.js +0 -32
  497. package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +0 -1
  498. package/tools/definitions/get_web_chat_uikit_component_detail_def.js +0 -31
  499. package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +0 -1
  500. package/tools/definitions/get_web_livekit_api_def.js +0 -30
  501. package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
  502. package/tools/definitions/get_web_livekit_component_detail_def.js +0 -32
  503. package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
  504. package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -31
  505. package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
  506. package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -27
  507. package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
  508. package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -27
  509. package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
  510. package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -27
  511. package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +0 -1
  512. package/tools/definitions/record_skill_session_def.js +0 -31
  513. package/tools/definitions/record_skill_session_def.js.map +0 -1
  514. package/tools/live/get_native_livekit_core_features.js +0 -68
  515. package/tools/live/get_native_livekit_core_features.js.map +0 -1
  516. package/tools/live/get_web_livekit_api.js +0 -33
  517. package/tools/live/get_web_livekit_api.js.map +0 -1
  518. package/tools/live/get_web_livekit_component_detail.js +0 -35
  519. package/tools/live/get_web_livekit_component_detail.js.map +0 -1
  520. package/tools/room/get_web_roomkit_feature_detail.js +0 -69
  521. package/tools/room/get_web_roomkit_feature_detail.js.map +0 -1
  522. package/tools/rtcengine/get_web_trtc_sdk_api.js +0 -32
  523. package/tools/rtcengine/get_web_trtc_sdk_api.js.map +0 -1
  524. package/tools/rtcengine/get_web_trtc_sdk_integration.js +0 -32
  525. package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +0 -1
  526. package/tools/rtcengine/get_web_trtc_sdk_plugin.js +0 -32
  527. package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +0 -1
  528. package/tools/trtc/get_native_trtc_sdk_docs.js +0 -74
  529. package/tools/trtc/get_native_trtc_sdk_docs.js.map +0 -1
  530. package/utils/build-session-directives.js +0 -120
  531. package/utils/build-session-directives.js.map +0 -1
  532. package/utils/handle-framework.js +0 -9
  533. package/utils/handle-framework.js.map +0 -1
  534. package/utils/handle-state-name.js +0 -29
  535. package/utils/handle-state-name.js.map +0 -1
  536. package/utils/report-runtime-error-cls-client.js +0 -91
  537. package/utils/report-runtime-error-cls-client.js.map +0 -1
  538. /package/resource/{doc/livekit/preset/live/vue/faq.md → knowledge/push/config/donut.md} +0 -0
  539. /package/resource/{doc/roomkit/vue/faq.md → knowledge/push/integration/donut.md} +0 -0
  540. /package/resource/{doc → knowledge}/rtcengine/web/api.md +0 -0
  541. /package/resource/{doc/rtcengine/faq/web/web.md → knowledge/rtcengine/web/faq.md} +0 -0
  542. /package/resource/{doc → knowledge}/rtcengine/web/how_to_integrated_web_sdk.md +0 -0
  543. /package/resource/{doc → knowledge}/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +0 -0
  544. /package/resource/{doc → knowledge}/rtcengine/web/plugin/28-advanced-beauty.md +0 -0
  545. /package/resource/{doc → knowledge}/rtcengine/web/plugin/30-advanced-cross-room-link.md +0 -0
  546. /package/resource/{doc → knowledge}/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -0
  547. /package/resource/{doc → knowledge}/rtcengine/web/plugin/37-advanced-voice-changer.md +0 -0
  548. /package/resource/{doc → knowledge}/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -0
  549. /package/resource/{doc → knowledge}/rtcengine/web/plugin/40-advanced-video-mixer.md +0 -0
  550. /package/resource/{doc → knowledge}/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +0 -0
  551. /package/resource/{doc → knowledge}/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +0 -0
  552. /package/resource/{doc → knowledge}/rtcengine/web/plugin/43-advanced-face-detection.md +0 -0
@@ -0,0 +1,797 @@
1
+ `RoomParticipantStore` 是 `AtomicXCore` 中专用于房间参与者管理的模块。该模块为多人房间场景提供了核心能力,支持构建完整的成员管理体系。
2
+
3
+ ## 房间模式说明
4
+
5
+ 在开始使用成员管理功能之前,需要了解 `AtomicXCore` 中房间模块支持的两种房间模式,不同模式下的成员管理功能有所区别:
6
+ | <strong>标准房间模式(Standard Room)</strong> | <strong>网络研讨会房间模式(Webinar Room)</strong> |
7
+ | --- | --- |
8
+ | - <strong>适用场景:</strong>小型会议、团队协作、朋友聊天等。<br>- <strong>成员特点:</strong>所有成员都是参与者,可以自由开启/关闭音视频设备。<br>- <strong>管理特点:</strong>扁平化管理,房主可设置管理员进行协助管理。 | - <strong>适用场景</strong>:网络研讨会、在线培训等。<br>- <strong>成员特点</strong>:<br>- <strong>嘉宾(Participants)</strong>:可以开启音视频设备,参与互动。<br>- <strong>观众(Audience)</strong>:只能观看,无法开启音视频设备。<br>- <strong>管理特点</strong>:分层管理,支持观众与嘉宾身份转换。 |
9
+
10
+ ## 核心功能
11
+ - **获取参与者列表**:获取并展示当前房间内所有参与者信息。
12
+
13
+ - **获取观众列表:**获取网络研讨会房间模式下的观众列表信息。
14
+
15
+ - **搜索房间内成员:**搜索所在房间内的指定用户。
16
+
17
+ - **将观众提升为参与者:**网络研讨会房间模式下,可以将观众提升为参与者,提升为参与者的用户可以开启麦克风与其他房间内的参与者互动。
18
+
19
+ - **将参与者降级为观众:**网络研讨会房间模式下,可以将参与者降级为观众, 降级为观众的用户无法与房间内的参与者进行语音互动。
20
+
21
+ - **转移房主身份**:房主可以将房主身份转移给房间内任意一名参与者。
22
+
23
+ - **设置/撤销管理员**:房主可以设置参与者为管理员,同时也可撤销房间内的管理员。
24
+
25
+ - **将参与者移****出****房间**:房主或者管理员可以将房间内任意一名参与者移出房间。
26
+
27
+ - **更新参与者信息**:房间内所有人都可以更新自己的参与者信息。
28
+
29
+ - **音视频设备管理**:支持申请/邀请打开摄像头、麦克风,关闭远端摄像头、麦克风,以及房主和管理员设置全体静音,全体禁用摄像头功能。
30
+
31
+ ## 功能对比
32
+
33
+ |**功能**|**标准房间模式**|**网络研讨会房间模式**|
34
+ |---------|---------|---------|
35
+ |获取参与者列表|获取所有房间成员|获取嘉宾列表|
36
+ |获取观众列表|不适用|获取观众列表|
37
+ |搜索房间内成员|支持|支持|
38
+ |将观众提升为嘉宾|不适用|支持|
39
+ |将嘉宾降级为观众|不适用|支持|
40
+ |转移房主身份|支持|支持|
41
+ |设置/撤销管理员|支持|支持|
42
+ |移出房间|支持|支持|
43
+ |更新参与者信息|支持|支持|
44
+ |音视频设备管理|支持|支持|
45
+
46
+ ## 核心概念
47
+
48
+ 在开始集成之前,需要通过下表了解 `RoomParticipantStore` 相关的核心概念:
49
+ | <strong>核心概念</strong> | <strong>核心职责与描述</strong> |
50
+ | --- | --- |
51
+ | <a href="https://tencent-rtc.github.io/TUIKit_Flutter/api_room_room_participant_store/RoomParticipant-class.html">RoomParticipant</a> | 代表参与者的核心数据模型,封装了参与者的完整信息和状态管理能力。<br>核心功能包括:<br>- 参与者基本信息管理(用户 ID、用户名称、用户头像、房间内角色身份)。<br>- 参与者设备状态管理(麦克风状态,摄像头状态,屏幕分享状态,消息状态)。 |
52
+ | <a href="https://tencent-rtc.github.io/TUIKit_Flutter/api_room_room_participant_store/RoomParticipantState-class.html">RoomParticipantState</a> | 代表参与者状态管理的核心数据结构,负责维护房间内与参与者相关状态信息。<br>核心属性:<br>- <code>participantList</code> 存储了当前所在房间的所有参与者信息集合。<br>- <code>participantListCursor</code> 代表房间内参与者列表的分页快照。<br>- <code>localParticipant</code>代表自身所在房间内的参与者信息。 |
53
+ | <a href="https://tencent-rtc.github.io/TUIKit_Flutter/api_room_room_participant_store/RoomParticipantListener-class.html">RoomParticipantListener</a> | 代表房间内和参与者相关的实时事件。主要事件分为三大类:参与者进退房事件、 参与者身份改变事件,参与者设备控制事件。 |
54
+ | <a href="https://tencent-rtc.github.io/TUIKit_Flutter/api_room_room_participant_store/RoomParticipantStore-class.html">RoomParticipantStore</a> | 这是参与者控制相关的核心类。功能包含:控制房间内参与者音视频状态、执行参与者管理操作,并通过 <code>addRoomParticipantListener</code> 方法来接收实时事件。 |
55
+
56
+ ## 实现步骤
57
+
58
+ ### 步骤1:组件集成
59
+
60
+ 请参考 接入概览 集成 **AtomicXCore SDK**,并已完成 实现登录逻辑 部分接入。
61
+
62
+ ### 步骤2:获取参与者列表
63
+
64
+ 在加入房间后,调用`RoomParticipantStore`的`getParticipantList`接口获取到房间内参与者列表。
65
+ ``` java
66
+ import 'package:atomic_x_core/atomicxcore.dart';
67
+
68
+ Future<void> getParticipantList() async {
69
+ // 1. 业务逻辑说明
70
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
71
+ final participantStore = RoomParticipantStore.create("your_room_id");
72
+
73
+ // 2. 首次获取参与者列表(从头开始)
74
+ // 支持分页加载,可以通过 cursor 参数实现增量获取
75
+ final String? initialCursor = null; // null 表示从第一页开始获取
76
+
77
+ final result = await participantStore.getParticipantList(initialCursor);
78
+
79
+ if (result.isSuccess) {
80
+ print("成功获取参与者列表,数量: ${result.data?.length ?? 0}");
81
+ } else {
82
+ print("获取参与者列表失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
83
+ }
84
+ }
85
+ ```
86
+
87
+ ### 步骤3:获取观众列表
88
+
89
+ 在进入的房间类型为`webinar`类型时,可以通过调用`RoomParticipantStore`的`getAudienceList`接口获取房间内的观众列表。
90
+ ``` java
91
+ import 'package:atomic_x_core/atomicxcore.dart';
92
+
93
+ Future<void> getAudienceList() async {
94
+ // 前提:需要先完成进房操作,并且进房时 roomType 设置为 webinar 类型
95
+ // 通过进房的 roomID 创建 RoomParticipantStore 实例
96
+ final participantStore = RoomParticipantStore.create("your_room_id");
97
+
98
+ // 首次获取观众列表(从头开始)
99
+ // 支持分页加载,可以通过 cursor 参数实现增量获取
100
+ final String? initialCursor = null; // null 表示从第一页开始获取
101
+
102
+ final result = await participantStore.getAudienceList(initialCursor);
103
+
104
+ if (result.isSuccess) {
105
+ print("获取观众列表成功,观众数量: ${result.data?.length ?? 0}");
106
+ } else {
107
+ print("获取观众列表失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
108
+ }
109
+ }
110
+ ```
111
+
112
+ ### 步骤4:搜索房间内成员
113
+
114
+ 进入房间成功后,可以通过调用`RoomParticipantStore`的`searchUsers`接口搜索房间内的成员。
115
+ ``` java
116
+ import 'package:atomic_x_core/atomicxcore.dart';
117
+
118
+ Future<void> searchUsers() async {
119
+ // 前提:需要先完成进房操作
120
+ // 通过进房的 roomID 创建 RoomParticipantStore 实例
121
+ final participantStore = RoomParticipantStore.create("your_room_id");
122
+
123
+ // 通过用户名称为关键字搜索房间内成员
124
+ final keyword = "userName";
125
+
126
+ final result = await participantStore.searchUsers(keyword);
127
+
128
+ if (result.isSuccess) {
129
+ print("搜索房间成员成功,成员数量: ${result.data?.length ?? 0}");
130
+ } else {
131
+ print("搜索房间成员失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
132
+ }
133
+ }
134
+ ```
135
+
136
+ ### 步骤5:将**观众提升为参与者**
137
+
138
+ 作为房主或管理员,调用`RoomParticipantStore`的`promoteAudienceToParticipant`接口可以将房间内的观众提升成为参与者。
139
+ ``` java
140
+ import 'package:atomic_x_core/atomicxcore.dart';
141
+
142
+ Future<void> promoteAudienceToParticipant(String userID) async {
143
+ // 前提:需要先完成进房操作
144
+ // 通过进房的 roomID 创建 RoomParticipantStore 实例
145
+ final participantStore = RoomParticipantStore.create("your_room_id");
146
+
147
+ // 调用 RoomParticipantStore 提升观众为参与者接口
148
+ // 注意:只有房主或管理员才有权限执行此操作
149
+ final result = await participantStore.promoteAudienceToParticipant(userID);
150
+
151
+ if (result.isSuccess) {
152
+ print("提升为参与者成功");
153
+ } else {
154
+ print("提升为参与者失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
155
+ }
156
+ }
157
+ ```
158
+
159
+ 作为房间内成员订阅`RoomParticipantStore`的`RoomParticipantListener`中的`onAudiencePromotedToParticipant`事件,被动接收观众提升为参与者的变化通知。
160
+ ``` java
161
+ import 'package:atomic_x_core/atomicxcore.dart';
162
+
163
+ late RoomParticipantListener _listener;
164
+
165
+ void addParticipantListener() {
166
+ // 前提:需要先完成进房操作,通过进房的 roomID 创建 RoomParticipantStore 实例
167
+ final participantStore = RoomParticipantStore.create("your_room_id");
168
+
169
+ // 订阅参与者事件
170
+ _listener = RoomParticipantListener(
171
+ onAudiencePromotedToParticipant: (userInfo) {
172
+ print("观众被提升为参与者,userID: ${userInfo.userID}, userName: ${userInfo.userName}");
173
+ },
174
+ );
175
+
176
+ participantStore.addRoomParticipantListener(_listener);
177
+ }
178
+
179
+ void removeParticipantListener() {
180
+ final participantStore = RoomParticipantStore.create("your_room_id");
181
+ participantStore.removeRoomParticipantListener(_listener);
182
+ }
183
+ ```
184
+
185
+ ### 步骤6:将**参与者降级为观众**
186
+
187
+ 作为房主或管理员,调用`RoomParticipantStore`的`demoteParticipantToAudience`接口可以将房间内的参与者降级成为观众。
188
+ ``` java
189
+ import 'package:atomic_x_core/atomicxcore.dart';
190
+
191
+ Future<void> demoteParticipantToAudience(String userID) async {
192
+ // 前提:需要先完成进房操作
193
+ // 通过进房的 roomID 创建 RoomParticipantStore 实例
194
+ final participantStore = RoomParticipantStore.create("your_room_id");
195
+
196
+ // 调用 RoomParticipantStore 降级参与者为观众接口
197
+ // 注意:只有房主或管理员才有权限执行此操作
198
+ final result = await participantStore.demoteParticipantToAudience(userID);
199
+
200
+ if (result.isSuccess) {
201
+ print("降级为观众成功");
202
+ } else {
203
+ print("降级为观众失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
204
+ }
205
+ }
206
+ ```
207
+
208
+ 作为房间内成员订阅`RoomParticipantStore`的`RoomParticipantListener`中的`onParticipantDemotedToAudience`事件,被动接收参与者降级为观众的变化通知。
209
+ ``` java
210
+ import 'package:atomic_x_core/atomicxcore.dart';
211
+
212
+ late RoomParticipantListener _listener;
213
+
214
+ void addParticipantListener() {
215
+ // 前提:需要先完成进房操作,通过进房的 roomID 创建 RoomParticipantStore 实例
216
+ final participantStore = RoomParticipantStore.create("your_room_id");
217
+
218
+ // 订阅参与者事件
219
+ _listener = RoomParticipantListener(
220
+ onParticipantDemotedToAudience: (userInfo) {
221
+ print("参与者被降级为观众,userID: ${userInfo.userID}, userName: ${userInfo.userName}");
222
+ },
223
+ );
224
+
225
+ participantStore.addRoomParticipantListener(_listener);
226
+ }
227
+
228
+ void removeParticipantListener() {
229
+ final participantStore = RoomParticipantStore.create("your_room_id");
230
+ participantStore.removeRoomParticipantListener(_listener);
231
+ }
232
+ ```
233
+
234
+ ### 步骤7:房主转移
235
+
236
+ **作为房主:**调用`RoomParticipantStore`的`transferOwner`接口可以将房主身份直接转移给房间内任意一位参与者,转移后原房主身份将变为普通参与者,一个房间内有且仅有一名房主。
237
+ ``` java
238
+ import 'package:atomic_x_core/atomicxcore.dart';
239
+
240
+ Future<void> transferOwner(String userID) async {
241
+ // 1. 业务逻辑说明
242
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
243
+ final participantStore = RoomParticipantStore.create("your_room_id");
244
+
245
+ // 2. 调用 RoomParticipantStore 转移房主接口
246
+ // 注意:只有当前房主才有权限执行此操作,转移后原房主将变为普通用户
247
+ final result = await participantStore.transferOwner(userID);
248
+
249
+ if (result.isSuccess) {
250
+ print("房主权限转移成功,新房主: $userID");
251
+ } else {
252
+ print("转移房主权限失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
253
+ }
254
+ }
255
+ ```
256
+
257
+ **作为参与者:**监听`RoomParticipantListener`中的`onOwnerChanged`事件,被动接收房主变化通知。
258
+ ``` java
259
+ import 'package:atomic_x_core/atomicxcore.dart';
260
+
261
+ late RoomParticipantListener _participantListener;
262
+
263
+ void subscribeParticipantEvent() {
264
+ // 1. 业务逻辑说明
265
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
266
+ final participantStore = RoomParticipantStore.create("your_room_id");
267
+
268
+ // 2. 创建参与者事件监听器
269
+ // RoomParticipantListener 用于接收所有参与者相关的事件
270
+ _participantListener = RoomParticipantListener(
271
+ onOwnerChanged: (RoomUser newOwner, RoomUser oldOwner) {
272
+ print("房主变更通知,newOwner: ${newOwner.userName}, oldOwner: ${oldOwner.userName}");
273
+ },
274
+ );
275
+
276
+ // 3. 添加监听器
277
+ participantStore.addRoomParticipantListener(_participantListener);
278
+ }
279
+
280
+ void unsubscribeParticipantEvent() {
281
+ // 4. 移除监听器,避免内存泄漏
282
+ final participantStore = RoomParticipantStore.create("your_room_id");
283
+ participantStore.removeRoomParticipantListener(_participantListener);
284
+ }
285
+
286
+ ```
287
+
288
+ ### 步骤8:设置/撤销管理员
289
+
290
+ **作为房主:**调用`RoomParticipantStore`的`setAdmin`接口指定房间内任意成员成为管理员,也可以调用`revokeAdmin`接口将管理员身份撤销。
291
+ ``` java
292
+ import 'package:atomic_x_core/atomicxcore.dart';
293
+
294
+ // 业务逻辑说明
295
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
296
+ final participantStore = RoomParticipantStore.create("your_room_id");
297
+
298
+ /// 设置用户为管理员
299
+ Future<void> setUserAsAdmin(String userID) async {
300
+ final result = await participantStore.setAdmin(userID);
301
+
302
+ if (result.isSuccess) {
303
+ print("成功设置用户 $userID 为管理员");
304
+ } else {
305
+ print("设置管理员失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
306
+ }
307
+ }
308
+
309
+ /// 撤销用户的管理员权限
310
+ Future<void> revokeUserAdmin(String userID) async {
311
+ final result = await participantStore.revokeAdmin(userID);
312
+
313
+ if (result.isSuccess) {
314
+ print("成功撤销用户 $userID 的管理员权限");
315
+ } else {
316
+ print("撤销管理员失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
317
+ }
318
+ }
319
+
320
+ ```
321
+
322
+ **作为参与者:**监听`RoomParticipantListener`中的`onAdminSet`和`onAdminRevoked`事件,被动接收参与者身份变化通知。
323
+ ``` java
324
+ import 'package:atomic_x_core/atomicxcore.dart';
325
+
326
+ // 业务逻辑说明
327
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
328
+ final participantStore = RoomParticipantStore.create("your_room_id");
329
+
330
+ late RoomParticipantListener _participantListener;
331
+
332
+ /// 订阅参与者相关事件
333
+ void subscribeParticipantEvents() {
334
+ _participantListener = RoomParticipantListener(
335
+ onAdminSet: (RoomUser userInfo) {
336
+ print("设置管理员事件通知,userInfo: ${userInfo.userName}");
337
+ },
338
+ onAdminRevoked: (RoomUser userInfo) {
339
+ print("撤销管理员事件通知,userInfo: ${userInfo.userName}");
340
+ },
341
+ );
342
+
343
+ participantStore.addRoomParticipantListener(_participantListener);
344
+ }
345
+
346
+ /// 取消订阅参与者相关事件
347
+ void unsubscribeParticipantEvents() {
348
+ participantStore.removeRoomParticipantListener(_participantListener);
349
+ }
350
+ ```
351
+
352
+ ### 步骤9:将参与者移出房间
353
+
354
+ **作为房主和管理员:**调用`RoomParticipantStore`的 `kickUser` 可以将房间内参与者移出房间。
355
+ ``` java
356
+ import 'package:atomic_x_core/atomicxcore.dart';
357
+
358
+ // 业务逻辑说明
359
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
360
+ final participantStore = RoomParticipantStore.create("your_room_id");
361
+
362
+ Future<void> kickUser(String userID) async {
363
+ // 1. 业务逻辑说明
364
+ // kickUser 接口用于将指定用户移出房间
365
+ // 注意:只有房主或管理员才有权限执行此操作
366
+ // 被移出的用户将立即离开房间,并收到相应的通知
367
+
368
+ // 2. 调用 RoomParticipantStore 移出用户接口
369
+ final result = await participantStore.kickUser(userID);
370
+
371
+ if (result.isSuccess) {
372
+ print("用户移出成功,被移出用户: $userID");
373
+ } else {
374
+ print("移出用户失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
375
+ }
376
+ }
377
+ ```
378
+
379
+ **作为参与者:**监听`RoomParticipantListener`中的`onKickedFromRoom`事件,被动接收参与者被移出房间通知。
380
+ ``` java
381
+ import 'package:atomic_x_core/atomicxcore.dart';
382
+
383
+ // 业务逻辑说明
384
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
385
+ final participantStore = RoomParticipantStore.create("your_room_id");
386
+
387
+ late RoomParticipantListener _participantListener;
388
+
389
+ /// 订阅参与者相关事件
390
+ void subscribeParticipantEvent() {
391
+ _participantListener = RoomParticipantListener(
392
+ onKickedFromRoom: (KickedOutOfRoomReason reason, String message) {
393
+ print("已被移出房间,被移出原因:$reason, 额外信息:$message");
394
+ },
395
+ );
396
+
397
+ participantStore.addRoomParticipantListener(_participantListener);
398
+ }
399
+
400
+ /// 取消订阅参与者相关事件
401
+ void unsubscribeParticipantEvent() {
402
+ participantStore.removeRoomParticipantListener(_participantListener);
403
+ }
404
+ ```
405
+
406
+ ### 步骤10:更新参与者信息
407
+
408
+ 在加入房间后,调用`RoomParticipantStore`的`updateParticipantNameCard`、`updateParticipantMetaData`更新您在房间里的参与者信息,包含:参与者名片信息,参与者自定义信息。
409
+ ``` java
410
+ import 'package:atomic_x_core/atomicxcore.dart';
411
+
412
+ // 业务逻辑说明
413
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
414
+ final participantStore = RoomParticipantStore.create("your_room_id");
415
+
416
+ Future<void> updateParticipantNameCard(String userID, String nameCard) async {
417
+ // 1. 业务逻辑说明
418
+ // updateParticipantNameCard 接口用于更新指定参与者的名片信息
419
+ // 名片通常用于显示用户的自定义昵称或标识
420
+ // 注意:通常只有管理员或用户本人才能修改名片
421
+
422
+ // 2. 调用 RoomParticipantStore 更新名片接口
423
+ final result = await participantStore.updateParticipantNameCard(
424
+ userID: userID,
425
+ nameCard: nameCard,
426
+ );
427
+
428
+ if (result.isSuccess) {
429
+ print("名片更新成功,用户: $userID, 新名片: $nameCard");
430
+ } else {
431
+ print("名片更新失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
432
+ }
433
+ }
434
+
435
+ Future<void> updateParticipantMetaData(String userID, Map<String, String> metaData) async {
436
+ // 1. 业务逻辑说明
437
+ // updateParticipantMetaData 接口用于更新指定参与者的自定义信息
438
+ // 存储自定义的业务数据,如用户标签、扩展属性等
439
+ // 注意:自定义信息的键值对数量和大小有限制,键长度不能超过 50 字节,值长度不超过 200 字节
440
+
441
+ // 2. 调用 RoomParticipantStore 更新自定义信息接口
442
+ final result = await participantStore.updateParticipantMetaData(
443
+ userID: userID,
444
+ metaData: metaData,
445
+ );
446
+
447
+ if (result.isSuccess) {
448
+ print("自定义信息数据更新成功,用户: $userID, 键数量: ${metaData.length}");
449
+ } else {
450
+ print("自定义信息更新失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
451
+ }
452
+ }
453
+ ```
454
+
455
+ ### 步骤11:邀请打开设备
456
+
457
+ **作为房主和管理员:**调用`RoomParticipantStore`的`inviteToOpenDevice`接口,邀请房间内参与者打开摄像头,麦克风。
458
+ ``` java
459
+ import 'package:atomic_x_core/atomicxcore.dart';
460
+
461
+ // 业务逻辑说明
462
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
463
+ final participantStore = RoomParticipantStore.create("your_room_id");
464
+
465
+ Future<void> inviteUserToOpenDevice(String userID, DeviceType device, {int timeout = 30}) async {
466
+ // 1. 业务逻辑说明
467
+ // inviteToOpenDevice 接口用于邀请指定用户开启某个设备
468
+ // 通常用于管理员邀请参与者开启麦克风、摄像头或屏幕共享
469
+ // 被邀请的用户会收到邀请通知,可以选择接受或拒绝
470
+
471
+ // 2. 调用 RoomParticipantStore 邀请开启设备接口
472
+ final result = await participantStore.inviteToOpenDevice(
473
+ userID: userID,
474
+ device: device,
475
+ timeout: timeout,
476
+ );
477
+
478
+ if (result.isSuccess) {
479
+ print("设备邀请发送成功,用户: $userID, 设备: $device");
480
+ } else {
481
+ print("设备邀请发送失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
482
+ }
483
+ }
484
+ ```
485
+
486
+ **作为参与者:**
487
+ - 监听`RoomParticipantListener`中的`onDeviceInvitationReceived`事件,被动接收邀请打开设备通知。
488
+
489
+ - 接收到邀请打开设备通知后调用`RoomParticipantStore`的`acceptOpenDeviceInvitation`或者`declineOpenDeviceInvitation`接口接受或拒绝邀请。
490
+
491
+ ``` java
492
+ import 'package:atomic_x_core/atomicxcore.dart';
493
+
494
+ // 业务逻辑说明
495
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
496
+ final participantStore = RoomParticipantStore.create("your_room_id");
497
+ late RoomParticipantListener _participantListener;
498
+
499
+ /// 订阅参与者相关事件
500
+ void subscribeDeviceInvitationEvent() {
501
+ _participantListener = RoomParticipantListener(
502
+ onDeviceInvitationReceived: (invitation) {
503
+ print("收到设备邀请 - 设备: ${invitation.device}, 发送者: ${invitation.senderUserName}");
504
+ // 处理接受、拒绝设备邀请
505
+ },
506
+ );
507
+ participantStore.addRoomParticipantListener(_participantListener);
508
+ }
509
+
510
+ /// 取消订阅(在不需要时调用)
511
+ void unsubscribeDeviceInvitationEvent() {
512
+ participantStore.removeRoomParticipantListener(_participantListener);
513
+ }
514
+
515
+ Future<void> acceptOpenDeviceInvitation(String userID, DeviceType device) async {
516
+ // 处理接受邀请
517
+ final result = await participantStore.acceptOpenDeviceInvitation(
518
+ userID: userID,
519
+ device: device,
520
+ );
521
+
522
+ if (result.isSuccess) {
523
+ print("接受设备邀请成功 - 设备: $device");
524
+ } else {
525
+ print("接受设备邀请失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
526
+ }
527
+ }
528
+
529
+ Future<void> declineOpenDeviceInvitation(String userID, DeviceType device) async {
530
+ // 处理拒绝邀请
531
+ final result = await participantStore.declineOpenDeviceInvitation(
532
+ userID: userID,
533
+ device: device,
534
+ );
535
+
536
+ if (result.isSuccess) {
537
+ print("拒绝设备邀请成功 - 设备: $device");
538
+ } else {
539
+ print("拒绝设备邀请失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
540
+ }
541
+ }
542
+ ```
543
+
544
+ ### 步骤12:关闭远端参与者设备
545
+
546
+ **作为房主和管理员:**调用`RoomParticipantStore`的`closeParticipantDevice`可以主动关闭远端参与者的摄像头,麦克风。
547
+ ``` java
548
+ import 'package:atomic_x_core/atomicxcore.dart';
549
+
550
+ // 业务逻辑说明
551
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
552
+ final participantStore = RoomParticipantStore.create("your_room_id");
553
+
554
+ Future<void> closeParticipantDevice(String userID, DeviceType device) async {
555
+ // 1. 业务逻辑说明
556
+ // closeParticipantDevice 接口用于房主或管理员关闭指定参与者的某个设备
557
+ // 被关闭的用户会收到设备被关闭通知
558
+
559
+ // 2. 调用 RoomParticipantStore 关闭参与者设备接口
560
+ final result = await participantStore.closeParticipantDevice(
561
+ userID: userID,
562
+ device: device,
563
+ );
564
+
565
+ if (result.isSuccess) {
566
+ print("关闭参与者设备成功 - 用户: $userID, 设备: $device");
567
+ } else {
568
+ print("关闭参与者设备失败: [错误码: ${result.errorCode}]: ${result.errorMessage}");
569
+ }
570
+ }
571
+ ```
572
+
573
+ **作为参与者:**监听`RoomParticipantListener`中的`onParticipantDeviceClosed`事件,被动接收设备被关闭通知,并在 UI 上做出提示。
574
+ ``` java
575
+ import 'package:atomic_x_core/atomicxcore.dart';
576
+
577
+ // 业务逻辑说明
578
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
579
+ final participantStore = RoomParticipantStore.create("your_room_id");
580
+ late RoomParticipantListener _participantListener;
581
+
582
+ /// 订阅参与者相关事件
583
+ void subscribeDeviceClosedEvent() {
584
+ _participantListener = RoomParticipantListener(
585
+ onParticipantDeviceClosed: (device, operatorUser) {
586
+ print("设备被关闭 - 设备: $device, 操作者: ${operatorUser.userName}");
587
+ },
588
+ );
589
+ participantStore.addRoomParticipantListener(_participantListener);
590
+ }
591
+
592
+ /// 取消订阅(在不需要时调用)
593
+ void unsubscribeDeviceClosedEvent() {
594
+ participantStore.removeRoomParticipantListener(_participantListener);
595
+ }
596
+ ```
597
+
598
+ ### 步骤13:申请打开设备
599
+
600
+ **作为参与者:**调用`RoomParticipantStore`的`requestToOpenDevice`接口,可以在房间被房主或管理员设置全体静音,全体禁画的场景下,主动申请打开摄像头,麦克风。
601
+ ``` java
602
+ import 'package:atomic_x_core/atomicxcore.dart';
603
+
604
+ // 业务逻辑说明
605
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
606
+ final participantStore = RoomParticipantStore.create("your_room_id");
607
+
608
+ Future<void> requestToOpenDevice(DeviceType device, {int timeout = 30}) async {
609
+ // 1. 业务逻辑说明
610
+ // requestToOpenDevice 接口用于请求开启某个设备
611
+ // 通常用于参与者申请开启麦克风、摄像头或屏幕共享
612
+ // 房主和管理员会收到申请通知,可以选择同意或拒绝
613
+
614
+ // 2. 调用 RoomParticipantStore 请求开启设备接口
615
+ final result = await participantStore.requestToOpenDevice(
616
+ device: device,
617
+ timeout: timeout,
618
+ );
619
+
620
+ if (result.isSuccess) {
621
+ print("设备开启请求发送成功 - 设备: $device");
622
+ } else {
623
+ print("设备开启请求发送失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
624
+ }
625
+ }
626
+ ```
627
+
628
+ **作为房主和管理员:**
629
+ - 监听`RoomParticipantListener`中的`onDeviceRequestReceived`事件,被动接收申请打开设备通知。
630
+
631
+ - 接收到申请打开设备通知后,调用`RoomParticipantStore`的`approveOpenDeviceRequest`或者`rejectOpenDeviceRequest`接口,批准或者拒绝申请。
632
+
633
+ ``` java
634
+ import 'package:atomic_x_core/atomicxcore.dart';
635
+
636
+ // 业务逻辑说明
637
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
638
+ final participantStore = RoomParticipantStore.create("your_room_id");
639
+ late RoomParticipantListener _participantListener;
640
+
641
+ /// 订阅参与者相关事件
642
+ void subscribeDeviceRequestEvent() {
643
+ _participantListener = RoomParticipantListener(
644
+ onDeviceRequestReceived: (request) {
645
+ print("收到设备请求 - 用户: ${request.senderUserName}, 设备: ${request.device}");
646
+ // 批准、拒绝开启设备请求操作
647
+ },
648
+ );
649
+ participantStore.addRoomParticipantListener(_participantListener);
650
+ }
651
+
652
+ /// 取消订阅(在不需要时调用)
653
+ void unsubscribeDeviceRequestEvent() {
654
+ participantStore.removeRoomParticipantListener(_participantListener);
655
+ }
656
+
657
+ Future<void> approveOpenDeviceRequest(DeviceType device, String userID) async {
658
+ // 批准开启请求
659
+ final result = await participantStore.approveOpenDeviceRequest(
660
+ device: device,
661
+ userID: userID,
662
+ );
663
+
664
+ if (result.isSuccess) {
665
+ print("批准设备请求成功 - 用户: $userID, 设备: $device");
666
+ } else {
667
+ print("批准设备请求失败: ${result.errorMessage}");
668
+ }
669
+ }
670
+
671
+ Future<void> rejectOpenDeviceRequest(DeviceType device, String userID) async {
672
+ // 拒绝开启请求
673
+ final result = await participantStore.rejectOpenDeviceRequest(
674
+ device: device,
675
+ userID: userID,
676
+ );
677
+
678
+ if (result.isSuccess) {
679
+ print("拒绝设备请求成功 - 用户: $userID, 设备: $device");
680
+ } else {
681
+ print("拒绝设备请求失败: [错误码: ${result.errorCode}]: ${result.errorMessage}");
682
+ }
683
+ }
684
+ ```
685
+
686
+ ### 步骤14:全体静音、全体禁画
687
+
688
+ **作为房主和管理员:**调用`RoomParticipantStore`的`disableAllDevices`接口设置全员静音与全员禁用摄像头。开启后,房间内参与者的音视频开启权限将被限制,无法自主打开麦克风或摄像头设备。
689
+ ``` java
690
+ import 'package:atomic_x_core/atomicxcore.dart';
691
+
692
+ // 业务逻辑说明
693
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
694
+ final participantStore = RoomParticipantStore.create("your_room_id");
695
+
696
+ Future<void> disableAllDevices(DeviceType device, bool disable) async {
697
+ // 1. 业务逻辑说明
698
+ // disableAllDevices 接口用于房主或管理员设置房间禁用、解禁房间内全体成员麦克风,摄像头
699
+ // 设置后房间内参与者会收到禁用、解禁通知
700
+
701
+ // 2. 调用 RoomParticipantStore 禁用、解禁全体设备接口
702
+ final result = await participantStore.disableAllDevices(
703
+ device: device,
704
+ disable: disable,
705
+ );
706
+
707
+ final action = disable ? "禁用" : "启用";
708
+ if (result.isSuccess) {
709
+ print("$action所有$device成功");
710
+ } else {
711
+ print("$action所有$device失败 [错误码: ${result.errorCode}]: ${result.errorMessage}");
712
+ }
713
+ }
714
+ ```
715
+
716
+ **作为参与者:**监听`RoomParticipantListener`中的`onAllDevicesDisabled`事件,可以监听全员静音或禁画指令,并在 UI 界面同步受控状态。受限状态下,摄像头与麦克风的主动开启功能将被锁定,参与者需发起开启申请,待房主或管理员核准授权后方可使用。
717
+ ``` java
718
+ import 'package:atomic_x_core/atomicxcore.dart';
719
+
720
+ // 业务逻辑说明
721
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
722
+ final participantStore = RoomParticipantStore.create("your_room_id");
723
+ late RoomParticipantListener _participantListener;
724
+
725
+ /// 设置全局设备事件监听
726
+ void subscribeAllDevicesDisabledEvent() {
727
+ _participantListener = RoomParticipantListener(
728
+ onAllDevicesDisabled: (device, disable, operatorUser) {
729
+ final action = disable ? "禁用" : "启用";
730
+ print("所有$device被$action - 操作者: ${operatorUser.userName}");
731
+ },
732
+ );
733
+ participantStore.addRoomParticipantListener(_participantListener);
734
+ }
735
+
736
+ /// 取消订阅(在不需要时调用)
737
+ void unsubscribeAllDevicesDisabledEvent() {
738
+ participantStore.removeRoomParticipantListener(_participantListener);
739
+ }
740
+ ```
741
+
742
+ ### 步骤15:监听参与者事件及状态
743
+
744
+ 订阅`RoomParticipantListener`参与者相关的被动事件。以订阅参与者加入房间、离开房间为例,示例代码如下:
745
+ ``` java
746
+ import 'package:atomic_x_core/atomicxcore.dart';
747
+
748
+ // 业务逻辑说明
749
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
750
+ final participantStore = RoomParticipantStore.create("your_room_id");
751
+ late RoomParticipantListener _participantListener;
752
+
753
+ /// 设置参与者事件监听
754
+ void subscribeParticipantEvent() {
755
+ _participantListener = RoomParticipantListener(
756
+ onParticipantJoined: (participant) {
757
+ print("参与者加入房间 - 用户: ${participant.userName}, ID: ${participant.userID}");
758
+ },
759
+ onParticipantLeft: (participant) {
760
+ print("参与者离开房间 - 用户: ${participant.userName}, ID: ${participant.userID}");
761
+ },
762
+ );
763
+ participantStore.addRoomParticipantListener(_participantListener);
764
+ }
765
+
766
+ /// 取消订阅(在不需要时调用)
767
+ void unsubscribeParticipantEvent() {
768
+ participantStore.removeRoomParticipantListener(_participantListener);
769
+ }
770
+ ```
771
+
772
+ 订阅`RoomParticipantState`参与者相关的属性状态变化。以订阅房间内正在说话的用户为例,示例代码如下:
773
+ ``` java
774
+ import 'package:atomic_x_core/atomicxcore.dart';
775
+
776
+ // 业务逻辑说明
777
+ // 前提:需要先完成进房操作,通过进房的roomID创建RoomParticipantStore实例
778
+ final participantStore = RoomParticipantStore.create("your_room_id");
779
+
780
+ /// 使用 ValueListenableBuilder 监听参与者状态
781
+ Widget buildSpeakingUsersWidget() {
782
+ return ValueListenableBuilder(
783
+ valueListenable: participantStore.state.speakingUsers,
784
+ builder: (context, speakingUsers, child) {
785
+ print("说话用户状态变更 - 当前说话用户数: ${speakingUsers.length}");
786
+ // 根据 speakingUsers 构建 UI
787
+ return Container();
788
+ },
789
+ );
790
+ }
791
+
792
+ ```
793
+
794
+ ## API 文档
795
+ | <strong>Store</strong> | <strong>功能描述</strong> | <strong>API文档</strong> |
796
+ | --- | --- | --- |
797
+ | <strong>RoomParticipantStore</strong> | 房间内参与者管理:设置管理员 / 转移房主 / 获取参与者列表 / 移出房间 / 参与者设备控制(例如关闭、邀请打开摄像头、麦克风等)/ 申请打开设备(例如申请打开摄像头、麦克风等)。 | <a href="https://tencent-rtc.github.io/TUIKit_Flutter/api_room_room_participant_store/RoomParticipantStore-class.html">API 文档</a> |