@tencent-rtc/mcp 1.3.8 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/package.json +2 -2
  2. package/resource/doc/{tuicallkit/iOS/faq.md → callkit/faq/android-faq.md} +10 -22
  3. package/resource/doc/{tuicallkit/android/faq.md → callkit/faq/flutter-faq.md} +10 -22
  4. package/resource/doc/{tuicallkit/flutter/faq.md → callkit/faq/ios-faq.md} +10 -22
  5. package/resource/doc/callkit/preset/android/api.md +296 -0
  6. package/resource/doc/callkit/preset/android/integration.md +430 -0
  7. package/resource/doc/callkit/preset/flutter/api.md +410 -0
  8. package/resource/doc/{tuicallkit → callkit/preset}/flutter/integration.md +35 -97
  9. package/resource/doc/callkit/preset/ios/api.md +80 -0
  10. package/resource/doc/{tuicallkit/iOS → callkit/preset/ios}/integration.md +37 -118
  11. package/resource/doc/callkit/preset/react/api.md +501 -0
  12. package/resource/doc/{tuicallkit → callkit/preset}/react/integration.md +5 -20
  13. package/resource/doc/callkit/preset/vue/api.md +501 -0
  14. package/resource/doc/{tuicallkit → callkit/preset}/vue/integration.md +4 -19
  15. package/resource/doc/{chatuikit → chatkit}/android/faq.md +29 -38
  16. package/resource/doc/{chatuikit → chatkit}/android/features/theme.md +22 -166
  17. package/resource/doc/chatkit/android/integration.md +490 -0
  18. package/resource/doc/chatkit/faq/android_sdk/client-api.md +281 -0
  19. package/resource/doc/{chatuikit → chatkit}/faq/common/product.md +0 -1
  20. package/resource/doc/{chatuikit → chatkit}/faq/common/server.md +1 -1
  21. package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +199 -0
  22. package/resource/doc/{chatuikit → chatkit}/faq/flutter_sdk/faq.md +3 -3
  23. package/resource/doc/chatkit/faq/ios_sdk/client-api.md +235 -0
  24. package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/faq.md +3 -3
  25. package/resource/doc/{chatuikit → chatkit}/flutter/features/theme.md +22 -166
  26. package/resource/doc/{chatuikit → chatkit}/flutter/integration.md +19 -88
  27. package/resource/doc/{chatuikit/iOS → chatkit/ios}/faq.md +29 -38
  28. package/resource/doc/{chatuikit/iOS → chatkit/ios}/features/theme.md +27 -176
  29. package/resource/doc/{chatuikit/iOS → chatkit/ios}/integration.md +47 -165
  30. package/resource/doc/{chatuikit → chatkit}/react/components/avatar.md +0 -33
  31. package/resource/doc/{chatuikit → chatkit}/react/components/chat-header.md +8 -49
  32. package/resource/doc/{chatuikit → chatkit}/react/components/chat-setting.md +6 -35
  33. package/resource/doc/{chatuikit → chatkit}/react/components/chat.md +0 -6
  34. package/resource/doc/{chatuikit → chatkit}/react/components/component-list.md +0 -11
  35. package/resource/doc/{chatuikit → chatkit}/react/components/contact-list.md +96 -502
  36. package/resource/doc/chatkit/react/components/conversation-actions.md +174 -0
  37. package/resource/doc/chatkit/react/components/conversation-list.md +333 -0
  38. package/resource/doc/chatkit/react/components/conversation-preview.md +118 -0
  39. package/resource/doc/chatkit/react/components/conversation-search.md +60 -0
  40. package/resource/doc/{chatuikit → chatkit}/react/components/message-input.md +36 -337
  41. package/resource/doc/{chatuikit → chatkit}/react/components/message-list.md +20 -212
  42. package/resource/doc/chatkit/react/components/search.md +243 -0
  43. package/resource/doc/{chatuikit → chatkit}/react/components/tuikit.md +1 -47
  44. package/resource/doc/{chatuikit → chatkit}/react/integration.md +21 -81
  45. package/resource/doc/{chatuikit → chatkit}/vue/components/avatar.md +0 -33
  46. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-header.md +7 -48
  47. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-setting.md +3 -5
  48. package/resource/doc/{chatuikit → chatkit}/vue/components/chat.md +0 -5
  49. package/resource/doc/{chatuikit → chatkit}/vue/components/component-list.md +0 -15
  50. package/resource/doc/chatkit/vue/components/contact-list.md +271 -0
  51. package/resource/doc/chatkit/vue/components/conversation-actions.md +228 -0
  52. package/resource/doc/{chatuikit → chatkit}/vue/components/conversation-list.md +42 -492
  53. package/resource/doc/chatkit/vue/components/conversation-preview.md +213 -0
  54. package/resource/doc/chatkit/vue/components/conversation-search.md +50 -0
  55. package/resource/doc/{chatuikit → chatkit}/vue/components/message-input.md +2 -223
  56. package/resource/doc/{chatuikit → chatkit}/vue/components/message-list.md +23 -252
  57. package/resource/doc/{chatuikit → chatkit}/vue/components/search.md +73 -640
  58. package/resource/doc/{chatuikit → chatkit}/vue/components/tuikit.md +7 -21
  59. package/resource/doc/{chatuikit → chatkit}/vue/components/userpicker.md +3 -62
  60. package/resource/doc/{chatuikit → chatkit}/vue/faq.md +1 -1
  61. package/resource/doc/{chatuikit → chatkit}/vue/integration.md +22 -23
  62. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audience-list.md +18 -89
  63. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audio-effect.md +34 -192
  64. package/resource/doc/livekit/{live → core-sdk/live}/android/live-barrage.md +28 -141
  65. package/resource/doc/livekit/{live → core-sdk/live}/android/live-base-beauty.md +20 -112
  66. package/resource/doc/livekit/{live → core-sdk/live}/android/live-co-guest-interaction.md +59 -193
  67. package/resource/doc/livekit/{live → core-sdk/live}/android/live-gift.md +75 -455
  68. package/resource/doc/livekit/{live → core-sdk/live}/android/live-host-interaction.md +94 -344
  69. package/resource/doc/livekit/{live → core-sdk/live}/android/live-integration.md +107 -515
  70. package/resource/doc/livekit/{live → core-sdk/live}/android/live-live-list.md +33 -173
  71. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audience-list.md +14 -93
  72. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audio-effect.md +34 -179
  73. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-barrage.md +19 -107
  74. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-base-beauty.md +24 -166
  75. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-co-guest-interaction.md +56 -163
  76. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-gift.md +69 -443
  77. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-host-interaction.md +117 -364
  78. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-integration.md +107 -492
  79. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-live-list.md +23 -165
  80. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audience-list.md +35 -111
  81. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audio-effect.md +35 -193
  82. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-barrage.md +31 -144
  83. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-base-beauty.md +24 -116
  84. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-co-guest-interaction.md +37 -171
  85. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-gift.md +79 -459
  86. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-host-interaction.md +69 -320
  87. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-integration.md +85 -502
  88. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-live-list.md +32 -169
  89. package/resource/doc/livekit/core-sdk/voice/android/voice-audience-list.md +263 -0
  90. package/resource/doc/livekit/core-sdk/voice/android/voice-audio-effect.md +222 -0
  91. package/resource/doc/livekit/core-sdk/voice/android/voice-barrage.md +452 -0
  92. package/resource/doc/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +536 -0
  93. package/resource/doc/livekit/core-sdk/voice/android/voice-gift.md +442 -0
  94. package/resource/doc/livekit/core-sdk/voice/android/voice-host-interaction.md +489 -0
  95. package/resource/doc/livekit/core-sdk/voice/android/voice-integration.md +574 -0
  96. package/resource/doc/livekit/core-sdk/voice/android/voice-room-list.md +435 -0
  97. package/resource/doc/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +516 -0
  98. package/resource/doc/livekit/core-sdk/voice/flutter/voice-integration.md +576 -0
  99. package/resource/doc/livekit/core-sdk/voice/ios/voice-audience-list.md +263 -0
  100. package/resource/doc/livekit/core-sdk/voice/ios/voice-audio-effect.md +212 -0
  101. package/resource/doc/livekit/core-sdk/voice/ios/voice-barrage.md +404 -0
  102. package/resource/doc/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +499 -0
  103. package/resource/doc/livekit/core-sdk/voice/ios/voice-gift.md +403 -0
  104. package/resource/doc/livekit/core-sdk/voice/ios/voice-host-interaction.md +552 -0
  105. package/resource/doc/livekit/core-sdk/voice/ios/voice-integration.md +514 -0
  106. package/resource/doc/livekit/core-sdk/voice/ios/voice-room-list.md +348 -0
  107. package/resource/doc/livekit/faq/common/{error_code.md → error-code.md} +2 -2
  108. package/resource/doc/livekit/preset/live/vue/api-reference/index.md +780 -0
  109. package/resource/doc/livekit/preset/live/vue/components/barrage.md +291 -0
  110. package/resource/doc/livekit/{live → preset/live}/vue/components/co-guest-panel.md +10 -49
  111. package/resource/doc/livekit/{live → preset/live}/vue/components/live-audience-list.md +26 -144
  112. package/resource/doc/livekit/{live → preset/live}/vue/components/live-scene-panel.md +12 -75
  113. package/resource/doc/livekit/{live → preset/live}/vue/components/live-view.md +36 -227
  114. package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +215 -0
  115. package/resource/doc/livekit/preset/live/vue/faq.md +1 -0
  116. package/resource/doc/livekit/preset/live/vue/live-list-integration.md +241 -0
  117. package/resource/doc/livekit/preset/live/vue/live-player-desk-integration.md +299 -0
  118. package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +300 -0
  119. package/resource/doc/livekit/preset/live/vue/live-pusher-integration.md +743 -0
  120. package/resource/doc/roomkit/vue/faq.md +1 -0
  121. package/resource/doc/roomkit/vue/features/call-user-to-room.md +17 -53
  122. package/resource/doc/roomkit/vue/features/device-detection.md +30 -48
  123. package/resource/doc/roomkit/vue/features/device-state.md +24 -44
  124. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +13 -36
  125. package/resource/doc/roomkit/vue/features/room-chat.md +31 -89
  126. package/resource/doc/roomkit/vue/features/room-participant-state.md +28 -50
  127. package/resource/doc/roomkit/vue/features/room-state.md +25 -34
  128. package/resource/doc/roomkit/vue/features/room-view.md +30 -125
  129. package/resource/doc/roomkit/vue/features/schedule-room.md +9 -40
  130. package/resource/doc/roomkit/vue/features/screen-share.md +22 -90
  131. package/resource/doc/roomkit/vue/features/virtual-background.md +13 -29
  132. package/resource/doc/roomkit/vue/integration.md +173 -337
  133. package/resource/doc/rtcengine/faq/common/error_code.md +1 -0
  134. package/resource/doc/rtcengine/faq/web/web.md +14 -24
  135. package/resource/doc/rtcengine/web/api.md +1 -3
  136. package/resource/doc/rtcengine/web/how_to_integrated_web_sdk.md +3 -10
  137. package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +1 -5
  138. package/resource/doc/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +1 -2
  139. package/resource/doc/rtcengine/web/plugin/21-advanced-auto-play-policy.md +2 -4
  140. package/resource/doc/rtcengine/web/plugin/23-advanced-support-detection.md +3 -5
  141. package/resource/doc/rtcengine/web/plugin/24-advanced-network-quality.md +1 -7
  142. package/resource/doc/rtcengine/web/plugin/25-advanced-device-change.md +0 -2
  143. package/resource/doc/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +4 -8
  144. package/resource/doc/rtcengine/web/plugin/27-advanced-small-stream.md +11 -11
  145. package/resource/doc/rtcengine/web/plugin/28-advanced-beauty.md +12 -88
  146. package/resource/doc/rtcengine/web/plugin/31-advanced-plugins-overview.md +5 -5
  147. package/resource/doc/rtcengine/web/plugin/34-advanced-proxy.md +30 -37
  148. package/resource/doc/rtcengine/web/plugin/36-advanced-virtual-background.md +13 -90
  149. package/resource/doc/rtcengine/web/plugin/37-advanced-voice-changer.md +1 -2
  150. package/resource/doc/rtcengine/web/plugin/39-advanced-video-decoder.md +1 -2
  151. package/resource/doc/rtcengine/web/plugin/40-advanced-video-mixer.md +19 -19
  152. package/resource/doc/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +1 -1
  153. package/resource/doc/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +4 -5
  154. package/resource/doc/rtcengine/web/plugin/43-advanced-face-detection.md +3 -3
  155. package/resource/doc/trtc/C++/ITRTCCloud.md +686 -2835
  156. package/resource/doc/trtc/C++/ITRTCStatistics.md +53 -308
  157. package/resource/doc/trtc/C++/ITXAudioEffectManager.md +202 -1022
  158. package/resource/doc/trtc/C++/ITXDeviceManager.md +126 -767
  159. package/resource/doc/trtc/C++/TRTCCloudCallback.md +579 -2147
  160. package/resource/doc/trtc/C++/TRTCTypeDef.md +703 -3378
  161. package/resource/doc/trtc/C++/TXLiteAVCode.md +116 -908
  162. package/resource/doc/trtc/android/TRTCCloud.md +606 -2573
  163. package/resource/doc/trtc/android/TRTCCloudDef.md +752 -3640
  164. package/resource/doc/trtc/android/TRTCCloudListener.md +581 -2008
  165. package/resource/doc/trtc/android/TRTCStatistics.md +48 -278
  166. package/resource/doc/trtc/android/TXAudioEffectManager.md +202 -1022
  167. package/resource/doc/trtc/android/TXBeautyManager.md +127 -704
  168. package/resource/doc/trtc/android/TXDeviceManager.md +51 -318
  169. package/resource/doc/trtc/android/TXLiteAVCode.md +114 -892
  170. package/resource/doc/trtc/iOS/TRTCCloud.md +694 -2904
  171. package/resource/doc/trtc/iOS/TRTCCloudDef.md +726 -3498
  172. package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +543 -2028
  173. package/resource/doc/trtc/iOS/TRTCStatistics.md +48 -278
  174. package/resource/doc/trtc/iOS/TXAudioEffectManager.md +174 -877
  175. package/resource/doc/trtc/iOS/TXBeautyManager.md +128 -710
  176. package/resource/doc/trtc/iOS/TXDeviceManager.md +129 -772
  177. package/resource/doc/trtc/iOS/TXLiteAVCode.md +117 -915
  178. package/server.js +1 -5
  179. package/server.js.map +1 -1
  180. package/tools/call/get_callkit_api.js +32 -0
  181. package/tools/call/get_callkit_api.js.map +1 -0
  182. package/tools/call/get_native_call_uikit_integration.js +34 -0
  183. package/tools/call/get_native_call_uikit_integration.js.map +1 -0
  184. package/tools/call/{get-web-call-integration.js → get_web_call_uikit_integration.js} +13 -8
  185. package/tools/call/get_web_call_uikit_integration.js.map +1 -0
  186. package/tools/chat/get_native_chat_uikit_feature_detail.js +34 -0
  187. package/tools/chat/get_native_chat_uikit_feature_detail.js.map +1 -0
  188. package/tools/chat/get_native_chat_uikit_integration.js +45 -0
  189. package/tools/chat/get_native_chat_uikit_integration.js.map +1 -0
  190. package/tools/chat/get_web_chat_uikit_component_detail.js +34 -0
  191. package/tools/chat/get_web_chat_uikit_component_detail.js.map +1 -0
  192. package/tools/chat/get_web_chat_uikit_integration.js +45 -0
  193. package/tools/chat/get_web_chat_uikit_integration.js.map +1 -0
  194. package/tools/common/get_faq.js +265 -0
  195. package/tools/common/get_faq.js.map +1 -0
  196. package/tools/common/{get-usersig.js → get_usersig.js} +6 -3
  197. package/tools/common/get_usersig.js.map +1 -0
  198. package/tools/common/present_framework_choice.js +63 -0
  199. package/tools/common/present_framework_choice.js.map +1 -0
  200. package/tools/definitions/get_callkit_api_def.js +29 -0
  201. package/tools/definitions/get_callkit_api_def.js.map +1 -0
  202. package/tools/definitions/get_faq_def.js +17 -18
  203. package/tools/definitions/get_faq_def.js.map +1 -1
  204. package/tools/definitions/get_native_call_uikit_integration_def.js +15 -18
  205. package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
  206. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +31 -0
  207. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +1 -0
  208. package/tools/definitions/get_native_chat_uikit_integration_def.js +16 -19
  209. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
  210. package/tools/definitions/get_native_livekit_core_features_def.js +34 -0
  211. package/tools/definitions/get_native_livekit_core_features_def.js.map +1 -0
  212. package/tools/definitions/get_native_livekit_core_integration_def.js +34 -0
  213. package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -0
  214. package/tools/definitions/get_native_trtc_sdk_docs_def.js +32 -0
  215. package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +1 -0
  216. package/tools/definitions/get_usersig_def.js +17 -22
  217. package/tools/definitions/get_usersig_def.js.map +1 -1
  218. package/tools/definitions/get_web_call_uikit_integration_def.js +15 -7
  219. package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
  220. package/tools/definitions/get_web_chat_uikit_component_detail_def.js +17 -49
  221. package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +1 -1
  222. package/tools/definitions/get_web_chat_uikit_integration_def.js +16 -19
  223. package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
  224. package/tools/definitions/get_web_live_uikit_integration_def.js +15 -18
  225. package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
  226. package/tools/definitions/get_web_livekit_api_def.js +30 -0
  227. package/tools/definitions/get_web_livekit_api_def.js.map +1 -0
  228. package/tools/definitions/get_web_livekit_component_detail_def.js +32 -0
  229. package/tools/definitions/get_web_livekit_component_detail_def.js.map +1 -0
  230. package/tools/definitions/get_web_room_uikit_integration_def.js +15 -30
  231. package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
  232. package/tools/definitions/get_web_roomkit_feature_detail_def.js +31 -0
  233. package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +1 -0
  234. package/tools/definitions/get_web_trtc_sdk_api_def.js +27 -0
  235. package/tools/definitions/get_web_trtc_sdk_api_def.js.map +1 -0
  236. package/tools/definitions/get_web_trtc_sdk_integration_def.js +27 -0
  237. package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +1 -0
  238. package/tools/definitions/get_web_trtc_sdk_plugin_def.js +27 -0
  239. package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +1 -0
  240. package/tools/definitions/present_framework_choice_def.js +24 -12
  241. package/tools/definitions/present_framework_choice_def.js.map +1 -1
  242. package/tools/index.js +47 -59
  243. package/tools/index.js.map +1 -1
  244. package/tools/live/get_native_livekit_core_features.js +65 -0
  245. package/tools/live/get_native_livekit_core_features.js.map +1 -0
  246. package/tools/live/get_native_livekit_core_integration.js +59 -0
  247. package/tools/live/get_native_livekit_core_integration.js.map +1 -0
  248. package/tools/live/get_web_live_uikit_integration.js +48 -0
  249. package/tools/live/get_web_live_uikit_integration.js.map +1 -0
  250. package/tools/live/get_web_livekit_api.js +32 -0
  251. package/tools/live/get_web_livekit_api.js.map +1 -0
  252. package/tools/live/get_web_livekit_component_detail.js +34 -0
  253. package/tools/live/get_web_livekit_component_detail.js.map +1 -0
  254. package/tools/room/{get-web-room-integration.js → get_web_room_uikit_integration.js} +13 -14
  255. package/tools/room/get_web_room_uikit_integration.js.map +1 -0
  256. package/tools/room/{get-web-room-feature-detail.js → get_web_roomkit_feature_detail.js} +30 -31
  257. package/tools/room/get_web_roomkit_feature_detail.js.map +1 -0
  258. package/tools/rtcengine/get_web_trtc_sdk_api.js +31 -0
  259. package/tools/rtcengine/get_web_trtc_sdk_api.js.map +1 -0
  260. package/tools/rtcengine/get_web_trtc_sdk_integration.js +31 -0
  261. package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +1 -0
  262. package/tools/rtcengine/get_web_trtc_sdk_plugin.js +31 -0
  263. package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +1 -0
  264. package/tools/trtc/get_native_trtc_sdk_docs.js +73 -0
  265. package/tools/trtc/get_native_trtc_sdk_docs.js.map +1 -0
  266. package/utils/generate-structured-result.js +61 -17
  267. package/utils/generate-structured-result.js.map +1 -1
  268. package/utils/report-cls-client.js +12 -1
  269. package/utils/report-cls-client.js.map +1 -1
  270. package/utils/report-es-client.js +2 -2
  271. package/resource/doc/chatuikit/android/integration.md +0 -287
  272. package/resource/doc/chatuikit/faq/android_sdk/client-api.md +0 -1371
  273. package/resource/doc/chatuikit/faq/flutter_sdk/client-api.md +0 -932
  274. package/resource/doc/chatuikit/faq/ios_sdk/client-api.md +0 -1119
  275. package/resource/doc/chatuikit/flutter/workflow.md +0 -941
  276. package/resource/doc/chatuikit/iOS/workflow.md +0 -0
  277. package/resource/doc/chatuikit/react/components/conversation-list.md +0 -1017
  278. package/resource/doc/chatuikit/react/components/search.md +0 -745
  279. package/resource/doc/chatuikit/react/create-group.md +0 -23
  280. package/resource/doc/chatuikit/react/init.md +0 -26
  281. package/resource/doc/chatuikit/react/workflow.md +0 -258
  282. package/resource/doc/chatuikit/vue/components/contact-list.md +0 -679
  283. package/resource/doc/chatuikit/vue/create-group.md +0 -25
  284. package/resource/doc/chatuikit/vue/init.md +0 -40
  285. package/resource/doc/chatuikit/vue/workflow.md +0 -395
  286. package/resource/doc/livekit/live/android/workflow.md +0 -320
  287. package/resource/doc/livekit/live/flutter/workflow.md +0 -353
  288. package/resource/doc/livekit/live/ios/workflow.md +0 -454
  289. package/resource/doc/livekit/live/vue/components/barrage.md +0 -616
  290. package/resource/doc/livekit/live/vue/components/stream-mixer.md +0 -446
  291. package/resource/doc/livekit/live/vue/faq.md +0 -0
  292. package/resource/doc/livekit/live/vue/live-list-integration.md +0 -200
  293. package/resource/doc/livekit/live/vue/live-player-desk-integration.md +0 -269
  294. package/resource/doc/livekit/live/vue/live-player-h5-integration.md +0 -269
  295. package/resource/doc/livekit/live/vue/live-pusher-integration.md +0 -595
  296. package/resource/doc/livekit/live/vue/states/live-state.md +0 -3591
  297. package/resource/doc/livekit/live/vue/workflow.md +0 -218
  298. package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +0 -312
  299. package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +0 -430
  300. package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +0 -679
  301. package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +0 -671
  302. package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +0 -271
  303. package/resource/doc/native_live/android/V2TXLivePusherObserver_api_android.md +0 -849
  304. package/resource/doc/native_live/android/V2TXLivePusher_api_android.md +0 -1046
  305. package/resource/doc/native_live/flutter/V2TXLiveCode_api_flutter.md +0 -460
  306. package/resource/doc/native_live/flutter/V2TXLiveDef_api_flutter.md +0 -558
  307. package/resource/doc/native_live/flutter/V2TXLivePlayerObserver_api_flutter.md +0 -865
  308. package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +0 -657
  309. package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +0 -437
  310. package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +0 -335
  311. package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +0 -748
  312. package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +0 -327
  313. package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +0 -507
  314. package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +0 -507
  315. package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +0 -659
  316. package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +0 -284
  317. package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +0 -814
  318. package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +0 -1000
  319. package/resource/doc/roomkit/vue/features/workflow.md +0 -553
  320. package/resource/doc/roomkit/vue/workflow.md +0 -487
  321. package/resource/doc/tuicallkit/android/integration.md +0 -286
  322. package/resource/doc/tuicallkit/android/workflow.md +0 -0
  323. package/resource/doc/tuicallkit/faq/android_sdk/call-observer-api.md +0 -784
  324. package/resource/doc/tuicallkit/faq/android_sdk/callkit-api.md +0 -610
  325. package/resource/doc/tuicallkit/faq/flutter_sdk/call-define-api.md +0 -938
  326. package/resource/doc/tuicallkit/faq/flutter_sdk/call-observer-api.md +0 -897
  327. package/resource/doc/tuicallkit/faq/flutter_sdk/callkit-api.md +0 -469
  328. package/resource/doc/tuicallkit/faq/ios_sdk/call-observer-api.md +0 -781
  329. package/resource/doc/tuicallkit/faq/ios_sdk/callkit-api.md +0 -398
  330. package/resource/doc/tuicallkit/flutter/workflow.md +0 -331
  331. package/resource/doc/tuicallkit/react/api.md +0 -1404
  332. package/resource/doc/tuicallkit/vue/api.md +0 -1406
  333. package/resource/doc/tuicallkit/vue/faq.md +0 -36
  334. package/tools/call/get-native-call-integration.js +0 -43
  335. package/tools/call/get-native-call-integration.js.map +0 -1
  336. package/tools/call/get-web-call-api.js +0 -27
  337. package/tools/call/get-web-call-api.js.map +0 -1
  338. package/tools/call/get-web-call-integration.js.map +0 -1
  339. package/tools/chat/get-native-chat-feature-detail.js +0 -30
  340. package/tools/chat/get-native-chat-feature-detail.js.map +0 -1
  341. package/tools/chat/get-native-chat-integration.js +0 -45
  342. package/tools/chat/get-native-chat-integration.js.map +0 -1
  343. package/tools/chat/get-web-chat-component-detail.js +0 -31
  344. package/tools/chat/get-web-chat-component-detail.js.map +0 -1
  345. package/tools/chat/get-web-chat-integration.js +0 -45
  346. package/tools/chat/get-web-chat-integration.js.map +0 -1
  347. package/tools/chat/get-web-chat-uikit-init.js +0 -28
  348. package/tools/chat/get-web-chat-uikit-init.js.map +0 -1
  349. package/tools/chat/get-web-create-group-doc.js +0 -28
  350. package/tools/chat/get-web-create-group-doc.js.map +0 -1
  351. package/tools/common/get-faq.js +0 -91
  352. package/tools/common/get-faq.js.map +0 -1
  353. package/tools/common/get-usersig.js.map +0 -1
  354. package/tools/common/present-framework-choice.js +0 -16
  355. package/tools/common/present-framework-choice.js.map +0 -1
  356. package/tools/common/record-prompt.js +0 -55
  357. package/tools/common/record-prompt.js.map +0 -1
  358. package/tools/common/record-result.js +0 -60
  359. package/tools/common/record-result.js.map +0 -1
  360. package/tools/definitions/get_native_chat_feature_detail_def.js +0 -32
  361. package/tools/definitions/get_native_chat_feature_detail_def.js.map +0 -1
  362. package/tools/definitions/get_native_live_api_def.js +0 -23
  363. package/tools/definitions/get_native_live_api_def.js.map +0 -1
  364. package/tools/definitions/get_native_live_uikit_extra_features_def.js +0 -87
  365. package/tools/definitions/get_native_live_uikit_extra_features_def.js.map +0 -1
  366. package/tools/definitions/get_native_live_uikit_integration_def.js +0 -49
  367. package/tools/definitions/get_native_live_uikit_integration_def.js.map +0 -1
  368. package/tools/definitions/get_native_live_uikit_interaction_def.js +0 -74
  369. package/tools/definitions/get_native_live_uikit_interaction_def.js.map +0 -1
  370. package/tools/definitions/get_trtc_native_api_def.js +0 -16
  371. package/tools/definitions/get_trtc_native_api_def.js.map +0 -1
  372. package/tools/definitions/get_web_call_uikit_api_def.js +0 -23
  373. package/tools/definitions/get_web_call_uikit_api_def.js.map +0 -1
  374. package/tools/definitions/get_web_chat_uikit_init_def.js +0 -23
  375. package/tools/definitions/get_web_chat_uikit_init_def.js.map +0 -1
  376. package/tools/definitions/get_web_create_group_doc_def.js +0 -18
  377. package/tools/definitions/get_web_create_group_doc_def.js.map +0 -1
  378. package/tools/definitions/get_web_live_state_detail_def.js +0 -19
  379. package/tools/definitions/get_web_live_state_detail_def.js.map +0 -1
  380. package/tools/definitions/get_web_live_uikit_component_detail_def.js +0 -27
  381. package/tools/definitions/get_web_live_uikit_component_detail_def.js.map +0 -1
  382. package/tools/definitions/get_web_room_feature_detail_def.js +0 -95
  383. package/tools/definitions/get_web_room_feature_detail_def.js.map +0 -1
  384. package/tools/definitions/get_web_room_state_detail_def.js +0 -19
  385. package/tools/definitions/get_web_room_state_detail_def.js.map +0 -1
  386. package/tools/definitions/record_prompt_def.js +0 -53
  387. package/tools/definitions/record_prompt_def.js.map +0 -1
  388. package/tools/definitions/record_result_def.js +0 -30
  389. package/tools/definitions/record_result_def.js.map +0 -1
  390. package/tools/live/get-native-live-uikit-integration.js +0 -101
  391. package/tools/live/get-native-live-uikit-integration.js.map +0 -1
  392. package/tools/live/get-web-live-component-detail.js +0 -31
  393. package/tools/live/get-web-live-component-detail.js.map +0 -1
  394. package/tools/live/get-web-live-state-detail.js +0 -31
  395. package/tools/live/get-web-live-state-detail.js.map +0 -1
  396. package/tools/live/get-web-live-uikit-integration.js +0 -52
  397. package/tools/live/get-web-live-uikit-integration.js.map +0 -1
  398. package/tools/live/get_native_live_uikit_extra_features.js +0 -105
  399. package/tools/live/get_native_live_uikit_extra_features.js.map +0 -1
  400. package/tools/live/get_native_live_uikit_interaction.js +0 -101
  401. package/tools/live/get_native_live_uikit_interaction.js.map +0 -1
  402. package/tools/native_live/get-native-live-api.js +0 -31
  403. package/tools/native_live/get-native-live-api.js.map +0 -1
  404. package/tools/room/get-web-room-feature-detail.js.map +0 -1
  405. package/tools/room/get-web-room-integration.js.map +0 -1
  406. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js +0 -28
  407. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js.map +0 -1
  408. package/tools/rtcengine/get-trtc-sdk-faq.js +0 -32
  409. package/tools/rtcengine/get-trtc-sdk-faq.js.map +0 -1
  410. package/tools/rtcengine/get-trtc-web-sdk-api.js +0 -28
  411. package/tools/rtcengine/get-trtc-web-sdk-api.js.map +0 -1
  412. package/tools/rtcengine/get-trtc-web-sdk-faq.js +0 -30
  413. package/tools/rtcengine/get-trtc-web-sdk-faq.js.map +0 -1
  414. package/tools/rtcengine/get-trtc-web-sdk-integration.js +0 -29
  415. package/tools/rtcengine/get-trtc-web-sdk-integration.js.map +0 -1
  416. package/tools/rtcengine/get-trtc-web-sdk-plugin.js +0 -45
  417. package/tools/rtcengine/get-trtc-web-sdk-plugin.js.map +0 -1
  418. package/tools/trtc/get-trtc-native-api.js +0 -31
  419. package/tools/trtc/get-trtc-native-api.js.map +0 -1
  420. package/utils/handle-component-name.js +0 -33
  421. package/utils/handle-component-name.js.map +0 -1
  422. /package/resource/doc/{chatuikit/android/workflow.md → callkit/core-sdk/.gitkeep} +0 -0
  423. /package/resource/doc/{tuicallkit/faq/common/error_code.md → callkit/faq/common/error-code.md} +0 -0
  424. /package/resource/doc/{tuicallkit/react/faq.md → callkit/faq/web-faq.md} +0 -0
  425. /package/resource/doc/{chatuikit → chatkit}/faq/common/server_error_code.md +0 -0
  426. /package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/error_code.md +0 -0
  427. /package/resource/doc/{chatuikit → chatkit}/flutter/faq.md +0 -0
  428. /package/resource/doc/{chatuikit → chatkit}/react/faq.md +0 -0
  429. /package/resource/doc/roomkit/faq/common/{error_code.md → error-code.md} +0 -0
@@ -0,0 +1,222 @@
1
+ This document provides guidance on integrating audio effect controls into your live streaming application using the `AudioEffectStore` and `DeviceStore` modules from the **AtomicXCore** framework. These modules enable features such as microphone volume control, ear monitoring, and a variety of voice changing and reverb effects.
2
+
3
+ ## Core Features
4
+
5
+ By combining `AudioEffectStore` and DeviceStore, you can implement the following core features:
6
+ - **Microphone Volume Adjustment**: Control the local microphone (capture) volume, which determines the volume your audience hears.
7
+
8
+ - **Ear Monitoring**: Allow hosts or co-hosts to hear their own voice in real time through headphones for monitoring and pronunciation correction.
9
+
10
+ - **Voice Effects**: Apply various voice changing effects, such as "Little Girl", "Deep Male", "Naughty Child", and more.
11
+
12
+ - **Reverb Effects**: Simulate different acoustic environments, such as KTV, metallic, deep, bright, and others.
13
+
14
+ ## Core Concepts
15
+ | **Core Concept** | **Type** | **Core Responsibility & Description** |
16
+ | --- | --- | --- |
17
+ | `AudioChangerType` | `enum` | Enumerates available voice effects, such as "child", "man", etc. |
18
+ | `AudioReverbType` | `enum` | Enumerates available reverb effects, such as "ktv", "hall", etc. |
19
+ | `AudioEffectState` | `data` | Represents the current state of the audio effect module, typically used for UI rendering. Includes voice effect state, reverb state, ear monitoring enabled state, and ear monitor volume. |
20
+ | `AudioEffectStore` | `abstract` | Singleton data management class for audio effects. Use it to invoke audio effect APIs. After calling an API, the corresponding state property is automatically updated. Subscribe to this reactive state to receive and monitor updates. |
21
+ | `DeviceState` | `data` | Represents the current state of the device module, typically used for UI rendering. Core properties include camera and microphone status. |
22
+ | `DeviceStore` | `abstract` | Singleton data management class for device operations. Use it to control the camera and microphone. After calling an API, the corresponding state property is automatically updated. Subscribe to this reactive state to receive and monitor updates. |
23
+
24
+ ## Implementation
25
+
26
+ ### Step 1: Component Integration
27
+ - **Video Live Streaming**: Please refer to Quick Start to integrate **AtomicXCore.**
28
+
29
+ - **Voice Chat Room**: Please refer to Quick Start to integrate **AtomicXCore**.
30
+
31
+ ### Step 2: Obtain Store Instances
32
+
33
+ `AudioEffectStore` and `DeviceStore` are singleton objects. Access their instances anywhere in your project via the shared property. For a complete implementation example, see [AudioEffectPanel.kt](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/live/tuilivekit/src/main/java/com/trtc/uikit/livekit/component/audioeffect/AudioEffectPanel.kt) in the TUILiveKit open-source UI demo.
34
+ ``` java
35
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
36
+ import io.trtc.tuikit.atomicxcore.api.device.DeviceStore
37
+
38
+ val audioEffectStore = AudioEffectStore.shared()
39
+ val deviceStore = DeviceStore.shared()
40
+ ```
41
+
42
+ ### Step 3: Implement In-Ear Monitoring
43
+
44
+ Ear monitoring allows users to hear their own microphone audio in real time. Manage ear monitoring using the following APIs.
45
+
46
+ > **Note:**Ear monitoring typically requires headphones to function properly.
47
+ >
48
+
49
+ #### Implementation
50
+ 1. **Toggle Ear Monitoring**: Use a `Switch` control to enable or disable ear monitoring.
51
+
52
+ 2. **Set Ear Monitor Volume**: Use a `SeekBar` (or similar control) to adjust the ear monitor volume. Map the UI control's value to the [0, 150] range and call setVoiceEarMonitorVolume(volume).
53
+
54
+ 3. **Listen for State Updates**: Subscribe to ear monitor state changes to update the UI in real time.
55
+
56
+ #### Code Example
57
+ ``` java
58
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
59
+ import kotlinx.coroutines.CoroutineScope
60
+ import kotlinx.coroutines.Dispatchers
61
+ import kotlinx.coroutines.launch
62
+
63
+ // 1. Enable ear monitoring (prompt the user to connect headphones)
64
+ audioEffectStore.setVoiceEarMonitorEnable(true)
65
+
66
+ // 2. Set ear monitor volume
67
+ audioEffectStore.setVoiceEarMonitorVolume(80)
68
+
69
+ // 3. Disable ear monitoring
70
+ audioEffectStore.setVoiceEarMonitorEnable(false)
71
+
72
+ // 4. Listen for state updates
73
+ CoroutineScope(Dispatchers.Main).launch {
74
+ audioEffectStore.audioEffectState.earMonitorVolume.collect {
75
+ print("Ear monitor volume: $it")
76
+ // Update UI with the value
77
+ }
78
+ }
79
+ ```
80
+
81
+ #### setVoiceEarMonitorEnable Parameters
82
+ | **Parameter Name** | **Type** | **Description** |
83
+ | --- | --- | --- |
84
+ | `enable` | `Boolean` | Whether to enable ear monitoring.<br>- true: Enable<br>- false: Disable |
85
+
86
+ #### setVoiceEarMonitorVolume Parameters
87
+ | **Parameter Name** | **Type** | **Description** |
88
+ | --- | --- | --- |
89
+ | `volume` | `Int` | Ear monitor volume.<br>- Range: [0, 150]<br>- Default: 100 |
90
+
91
+ ### Step 4: Implement Microphone Volume Adjustment
92
+
93
+ To adjust the microphone (capture) volume, call `setCaptureVolume(volume) `on `DeviceStore` with the desired value.
94
+
95
+ #### Implementation
96
+ 1. **Set Capture Volume**: Use a `SeekBar` or similar control to adjust the microphone volume. Map the UI control's value to the [0, 150] range and call `setCaptureVolume(volume)`.
97
+
98
+ 2. **Listen for State Updates**: Subscribe to capture volume state changes to update the UI in real time.
99
+
100
+ #### Code Example
101
+ ``` java
102
+ import kotlinx.coroutines.CoroutineScope
103
+ import kotlinx.coroutines.Dispatchers
104
+ import kotlinx.coroutines.launch
105
+ import io.trtc.tuikit.atomicxcore.api.device.DeviceStore
106
+
107
+ // 1. Adjust microphone volume
108
+ deviceStore.setCaptureVolume(80)
109
+
110
+ // 2. Listen for volume changes
111
+ CoroutineScope(Dispatchers.Main).launch {
112
+ deviceStore.deviceState.captureVolume.collect {
113
+ print("Capture volume: $it")
114
+ // Update UI with the value
115
+ }
116
+ }
117
+ ```
118
+
119
+ #### setCaptureVolume Parameters
120
+ | **Parameter Name** | **Type** | **Description** |
121
+ | --- | --- | --- |
122
+ | `volume` | `Int` | Microphone (capture) volume.<br>- Range: [0, 150]<br>- Default: 100 |
123
+
124
+ ### Step 5: Implement Voice Effects
125
+
126
+ To apply a voice effect, call `setAudioChangerType(type)` with the desired `AudioChangerType` enum value.
127
+
128
+ #### Code Example
129
+ ``` java
130
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
131
+ import io.trtc.tuikit.atomicxcore.api.device.AudioChangerType
132
+
133
+ // Set voice effect to "Little Girl"
134
+ audioEffectStore.setAudioChangerType(AudioChangerType.LITTLE_GIRL)
135
+
136
+ // Disable voice effect
137
+ audioEffectStore.setAudioChangerType(AudioChangerType.NONE)
138
+ ```
139
+
140
+ #### setAudioChangerType Parameters
141
+ | **Parameter Name** | **Type** | **Description** |
142
+ | --- | --- | --- |
143
+ | `type` | `AudioChangerType` | Voice effect enum value. |
144
+
145
+ ### Step 6: Implement Reverb Effects
146
+
147
+ To apply a reverb effect, call `setAudioReverbType(type)` with the desired `AudioReverbType` enum value.
148
+ ``` java
149
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
150
+ import io.trtc.tuikit.atomicxcore.api.device.AudioReverbType
151
+
152
+ // Set reverb to "KTV"
153
+ audioEffectStore.setAudioReverbType(AudioReverbType.KTV)
154
+
155
+ // Disable reverb
156
+ audioEffectStore.setAudioReverbType(AudioReverbType.NONE)
157
+ ```
158
+
159
+ #### setAudioReverbType Parameters
160
+ | **Parameter Name** | **Type** | **Description** |
161
+ | --- | --- | --- |
162
+ | `type` | `AudioReverbType` | Reverb effect enum value. |
163
+
164
+ ### Step 7: Reset Audio Effect Settings
165
+
166
+ > **Note:**
167
+ >
168
+
169
+ > `AudioEffectStore` and `DeviceStore` are singletons, so audio effect and device settings are globally applied. To prevent settings from one live room affecting others, reset audio effect and device settings when the current live room ends.
170
+ >
171
+
172
+ Reset audio effect settings in the following scenarios:
173
+ 1. When the current live room ends.
174
+
175
+ 2. To provide a "one-click restore" feature, call the`reset()`() method on each store.
176
+
177
+ ``` java
178
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
179
+ import io.trtc.tuikit.atomicxcore.api.device.DeviceStore
180
+
181
+ // One-click reset for all voice and reverb effects
182
+ AudioEffectStore.shared().reset()
183
+ DeviceStore.shared().reset()
184
+ ```
185
+
186
+ ## API Documentation
187
+
188
+ For detailed information on all public interfaces and properties of [AudioEffectStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-audio-effect-store/index.html), [DeviceStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-device-store/index.html), and their related classes, refer to the official API documentation for the [AtomicXCore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore) framework.
189
+ | **Store/Component** | **Feature Description** | **API Documentation** |
190
+ | --- | --- | --- |
191
+ | AudioEffectStore | Manage audio effects: configure and retrieve real-time audio effect status. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-audio-effect-store/index.html) |
192
+ | DeviceStore | Manage devices: control camera and microphone, and retrieve real-time device status. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-device-store/index.html) |
193
+
194
+ ## FAQs
195
+
196
+ ### Are there any restrictions on when to call audio effect and device APIs?
197
+
198
+ No. `AudioEffectStore` and `DeviceStore` settings are globally effective. You can call relevant APIs (such as setting voice effects, reverb, or ear monitoring) at any time before or after entering a live room. Settings take effect immediately and persist.
199
+
200
+ ### What is the difference between "Microphone Volume" and "Ear Monitor Volume"?
201
+
202
+ This is a common point of confusion:
203
+ - **Microphone Volume (Capture Volume)**: Set via `DeviceStore.setCaptureVolume()`. Controls the volume your audience hears.
204
+
205
+ - **Ear Monitor Volume**: Set via `AudioEffectStore.setVoiceEarMonitorVolume()`. It only determines the volume level you hear in your in-ear monitor and does not affect the audience.
206
+
207
+ ### Why does a newly created live room already have audio effects, or why is the volume too high or too low?
208
+
209
+ Because `AudioEffectStore` and `DeviceStore` are singletons, audio effect and device settings are globally applied. If you previously set audio effects and did not reset them, those settings persist. Call the `reset()` method at the appropriate time to clear them.
210
+
211
+ ### Why can't I hear my own voice after enabling "Ear Monitoring"?
212
+
213
+ Check the following:
214
+ 1. **Are headphones connected?** Ear monitoring generally requires headphones. Ensure wired or Bluetooth headphones are connected.
215
+
216
+ 2. **Is the ear monitor volume set to 0?** Check that the ear monitor volume is above 0.
217
+
218
+ 3. **Is the microphone enabled?** Confirm that the microphone is enabled in DeviceStore (i.e., openLocalMicrophone has been called).
219
+
220
+ ### Can voice effects and reverb be enabled at the same time?
221
+
222
+ Yes. `AudioChangerType` and `AudioReverbType` can be enabled simultaneously. For example, you can set both `AudioChangerType.LITTLE_GIRL`and `AudioReverbType.KTV` at the same time.
@@ -0,0 +1,452 @@
1
+ This document provides a comprehensive guide for iOS developers to quickly integrate a feature-rich, high-performance live chat overlay (barrage/danmaku) system into your live streaming application using the `BarrageStore` module from the **AtomicXCore** framework.
2
+
3
+ ## Core Features
4
+
5
+ `BarrageStore` delivers a complete barrage solution for your live streaming app. Core features include:
6
+ - Receiving and displaying barrage messages in the live room.
7
+
8
+ - Sending text barrage messages to interact with viewers.
9
+
10
+ - Sending custom business barrage messages to support complex scenarios such as gifts and likes.
11
+
12
+ - Inserting system tips into the local message list (for example, "Welcome XX to the live room").
13
+
14
+ ## Core Concepts
15
+ | **Core Concept** | **Type** | **Core Responsibility & Description** |
16
+ | --- | --- | --- |
17
+ | [Barrage](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.barrage/-barrage/index.html) | data class | Represents a single barrage message. Contains sender info (sender), message content (textContent or data), and message type (messageType). |
18
+ | [BarrageState](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.barrage/-barrage-state/index.html) | data class | Represents the current state of the barrage module. The main property, messageList, is a StateFlow containing all barrage messages for the current live room, ordered chronologically. This serves as the UI data source. |
19
+ | [BarrageStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.barrage/-barrage-store/index.html) | abstract class | The main manager for barrage features. Use it to send messages (sendTextMessage, sendCustomMessage) and subscribe to barrage message updates via its state property. |
20
+
21
+ ## Implementation
22
+
23
+ ### Step 1: Component Integration
24
+ - **Video Live Streaming**: Please refer to Quick Start to integrate AtomicXCore.
25
+
26
+ - **Voice Chat Room**: Please refer to Quick Start to integrate AtomicXCore.
27
+
28
+ ### Step 2: Initialize and Listen to Barrages
29
+
30
+ Create a `BarrageStore` instance bound to the current live room's `liveId`, and subscribe to receive the latest barrage message list in real time.
31
+ ``` kotlin
32
+ import kotlinx.coroutines.*
33
+ import kotlinx.coroutines.flow.*
34
+ import io.trtc.tuikit.atomicxcore.api.barrage.Barrage
35
+ import io.trtc.tuikit.atomicxcore.api.barrage.BarrageStore
36
+
37
+ class BarrageManager(
38
+ private val liveId: String
39
+ ) {
40
+ private val barrageStore: BarrageStore = BarrageStore.create(liveId)
41
+ private val scope = CoroutineScope(Dispatchers.Main)
42
+
43
+ // Expose the [full] message list as a Flow for the UI layer to subscribe to
44
+ private val _messagesFlow = MutableStateFlow<List<Barrage>>(emptyList())
45
+ val messagesFlow: StateFlow<List<Barrage>> = _messagesFlow.asStateFlow()
46
+
47
+ init {
48
+ // Start listening for barrage messages immediately after initialization
49
+ subscribeToBarrageUpdates()
50
+ }
51
+
52
+ private fun subscribeToBarrageUpdates() {
53
+ scope.launch {
54
+ barrageStore.barrageState.messageList
55
+ .collect { messageList ->
56
+ // When messageList updates, pass the new list to the UI layer via Flow
57
+ // Note: This is the [complete list], including all historical messages
58
+ _messagesFlow.value = messageList
59
+ }
60
+ }
61
+ }
62
+ }
63
+ ```
64
+
65
+ ### Step 3: Send Text Barrages
66
+
67
+ Use `sendTextMessage` to broadcast a plain text message to all users in the live room.
68
+ ``` kotlin
69
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
70
+ import io.trtc.tuikit.atomicxcore.api.barrage.BarrageStore
71
+
72
+ class BarrageManager(
73
+ private val liveId: String
74
+ ) {
75
+ private val barrageStore: BarrageStore = BarrageStore.create(liveId)
76
+
77
+ // Send a text barrage
78
+ fun sendTextMessage(text: String) {
79
+ // We recommend adding a non-empty check to avoid sending invalid messages
80
+ if (text.isEmpty()) {
81
+ return
82
+ }
83
+
84
+ // Call the core API to send the message
85
+ barrageStore.sendTextMessage(
86
+ text,
87
+ mapOf(
88
+ "custom key" to "custom value",
89
+ ),
90
+ object : CompletionHandler {
91
+ override fun onSuccess() {
92
+ println("Text barrage '$text' sent successfully")
93
+ }
94
+
95
+ override fun onFailure(code: Int, desc: String) {
96
+ println("Failed to send text barrage: $desc")
97
+ }
98
+ }
99
+ )
100
+ }
101
+ }
102
+ ```
103
+
104
+ #### API Parameters
105
+ | **Parameter** | **Type** | **Description** |
106
+ | --- | --- | --- |
107
+ | `text` | `String?` | The text content to send. |
108
+ | `extensionInfo` | `Map<String, String>?` | Additional data for business customization. |
109
+ | `completion` | `CompletionHandler?` | Callback invoked after sending, indicating success or failure. |
110
+
111
+ ### Step 4: Send Custom Barrage
112
+
113
+ Send messages with custom business logic, such as gifts, likes, or gamification commands. The content format of this message is defined by the business layer. The receiver must parse and handle it based on the `businessId` and `data`.
114
+ ``` kotlin
115
+ class BarrageManager(
116
+ private val liveId: String
117
+ ) {
118
+ // Send a custom barrage, for example, to send a gift
119
+ fun sendGiftMessage(giftId: String, giftCount: Int) {
120
+ // 1. Define a business-recognizable ID
121
+ val businessId = "live_gift"
122
+
123
+ // 2. Encode business data as a JSON string
124
+ val giftData = mapOf(
125
+ "gift_id" to giftId,
126
+ "gift_count" to giftCount
127
+ )
128
+
129
+ val jsonString = try {
130
+ // Use Gson or another JSON library for serialization
131
+ // Here we assume Gson is used
132
+ Gson().toJson(giftData)
133
+ } catch (e: Exception) {
134
+ return
135
+ }
136
+
137
+ // 3. Call the core API to send the custom message
138
+ barrageStore.sendCustomMessage(
139
+ businessId,
140
+ jsonString,
141
+ object : CompletionHandler {
142
+ override fun onSuccess() {
143
+ println("Gift message (custom barrage) sent successfully")
144
+ }
145
+
146
+ override fun onFailure(code: Int, desc: String) {
147
+ println("Failed to send gift message: $desc")
148
+ }
149
+ }
150
+ )
151
+ }
152
+ }
153
+ ```
154
+
155
+ #### API Parameters
156
+ | **Parameter** | **Type** | **Description** |
157
+ | --- | --- | --- |
158
+ | businessId | String | Unique business identifier (e.g., "live_gift"). Used by receivers to distinguish custom messages. |
159
+ | data | String | Business data, typically a JSON string. |
160
+ | completion | CompletionHandler? | Callback after sending. |
161
+
162
+ ### Step 5: Insert Local Tip Messages
163
+
164
+ Insert a local message into the current user's message list. This message is not sent to other users and is ideal for displaying system prompts, warnings, or operation tips.
165
+ ``` kotlin
166
+ class BarrageManager(
167
+ private val liveId: String
168
+ ) {
169
+ // Insert a welcome tip into the local message list
170
+ fun showWelcomeMessage(user: LiveUserInfo) {
171
+ // 1. Create a Barrage message
172
+ val welcomeTip = Barrage(
173
+ liveID = liveId,
174
+ messageType = BarrageType.TEXT, // You can reuse the text type for display
175
+ textContent = "Welcome ${user.userName} to the live room!",
176
+ sender = LiveUserInfo() // sender can be left empty or set to a system user identifier
177
+ )
178
+
179
+ // 2. Call the API to append it to the local list
180
+ barrageStore.appendLocalTip(welcomeTip)
181
+ }
182
+ }
183
+ ```
184
+
185
+ #### API Parameters
186
+ | **Parameter** | **Type** | **Description** |
187
+ | --- | --- | --- |
188
+ | message | Barrage | The message object to insert locally. The SDK appends this to messageList in BarrageState. |
189
+
190
+ ### Step 6: Manage User Speaking Permissions (Mute and Unmute)
191
+
192
+ As a host or administrator, you can control user messaging permissions to maintain a healthy community environment.
193
+
194
+ #### Mute/Unmute a Single User
195
+
196
+ Use the `disableSendMessage` method in `LiveAudienceStore` to mute or unmute a user. This state persists even if the user rejoins the live room.
197
+ ``` kotlin
198
+ import io.trtc.tuikit.atomicxcore.api.*
199
+ import io.trtc.tuikit.atomicxcore.api.live.LiveAudienceStore
200
+
201
+ // 1. Get the LiveAudienceStore instance bound to the current live room
202
+ val audienceStore = LiveAudienceStore.create(liveId)
203
+
204
+ // 2. Define the user ID to operate on and the mute status
205
+ val userIdToMute = "user_id_to_be_muted"
206
+ val shouldDisable = true // true to mute, false to unmute
207
+
208
+ // 3. Call the interface to perform the operation
209
+ audienceStore.disableSendMessage(
210
+ userIdToMute,
211
+ shouldDisable,
212
+ object : CompletionHandler {
213
+ override fun onSuccess() {
214
+ println("${if (shouldDisable) "Muted" else "Unmuted"} user $userIdToMute successfully")
215
+ }
216
+
217
+ override fun onFailure(code: Int, desc: String) {
218
+ println("Operation failed: $desc")
219
+ }
220
+ }
221
+ )
222
+ ```
223
+
224
+ #### Enable/Disable Global Mute
225
+
226
+ To mute all users in the live room (usually excluding the host), update the live room information via `LiveListStore`.
227
+ ``` kotlin
228
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
229
+ import io.trtc.tuikit.atomicxcore.api.live.LiveInfo
230
+ import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
231
+
232
+ // 1. Get the LiveListStore singleton
233
+ val liveListStore = LiveListStore.shared()
234
+
235
+ // 2. Get the current live room info and modify the global mute status
236
+ val currentLiveInfo = liveListStore.liveState.currentLive.value.copy(
237
+ isMessageDisable = true // true to enable global mute, false to disable
238
+ )
239
+
240
+ // 3. Call the update interface and specify the modification flag
241
+ liveListStore.updateLiveInfo(
242
+ currentLiveInfo,
243
+ listOf(LiveInfo.ModifyFlag.IS_MESSAGE_DISABLE),
244
+ object : CompletionHandler {
245
+ override fun onSuccess() {
246
+ println("Global mute status updated successfully")
247
+ }
248
+
249
+ override fun onFailure(code: Int, desc: String) {
250
+ println("Operation failed: $desc")
251
+ }
252
+ }
253
+ )
254
+ ```
255
+
256
+ ## Advanced Features: Performance Optimization in High-Concurrency Scenarios
257
+
258
+ After implementing barrage features with `BarrageStore`, use the following strategies to ensure smooth and stable user experiences in high-concurrency live streaming scenarios. This section provides optimization strategies and code samples for three core business scenarios.
259
+
260
+ ### Scenario 1: Handling "Barrage Storms" in Popular Live Rooms
261
+
262
+ #### Scenario Description
263
+
264
+ During popular events, a large number of viewers may flood into the live room, with barrages updating at dozens of messages per second.
265
+
266
+ #### Technical Challenge
267
+
268
+ The SDK returns the complete barrage list at a high frequency. If you call `adapter.notifyDataSetChanged()` on every update, the main thread may be blocked by intensive UI layout and rendering, causing UI lag.
269
+
270
+ #### Optimization: Batch Processing & Debouncing
271
+
272
+ Do not respond to every data update. Instead, set a time threshold (e.g., 300 ms). Only refresh the UI if the time since the last update exceeds this threshold. This reduces dozens of `notifyDataSetChanged()`calls per second to just 3–4, greatly improving smoothness.
273
+
274
+ #### Code Example
275
+
276
+ Create a `BarrageUIManager` class with a buffer and timer for batch updating data to the `RecyclerView`.
277
+ ``` kotlin
278
+ import android.os.Handler
279
+ import androidx.recyclerview.widget.RecyclerView
280
+ import io.trtc.tuikit.atomicxcore.api.barrage.Barrage
281
+
282
+ private const val UPDATE_DURATION_MS = 300L
283
+
284
+ class BarrageUIManager() {
285
+ private var timestampOnLastUpdate = 0L
286
+
287
+ private var dataSource: ArrayList<Barrage> = ArrayList()
288
+ private val updateViewTask = Runnable { notifyDataSetChanged() }
289
+ private val handler = Handler()
290
+ private val adapter = BarrageAdapter(dataSource)
291
+
292
+ // This method is called frequently from outside, passing in the latest full list
293
+ fun update(newList: List<Barrage>) {
294
+ handler.removeCallbacks(updateViewTask)
295
+ dataSource.clear()
296
+ dataSource.addAll(newList)
297
+ // If the refresh interval is less than 0.3 seconds, do not refresh
298
+ if (System.currentTimeMillis() - timestampOnLastUpdate < UPDATE_DURATION_MS) {
299
+ handler.postDelayed(updateViewTask, UPDATE_DURATION_MS)
300
+ return
301
+ }
302
+ }
303
+
304
+ private fun notifyDataSetChanged() {
305
+ adapter.notifyDataSetChanged()
306
+ timestampOnLastUpdate = System.currentTimeMillis()
307
+ }
308
+ }
309
+
310
+ class BarrageAdapter(dataSource: ArrayList<Barrage>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
311
+ // Implement adapter capabilities here
312
+ }
313
+ ```
314
+
315
+ ### Scenario 2: Ensuring Memory Stability for Long-Duration Live Streams
316
+
317
+ #### Scenario Description
318
+
319
+ Your app may need to support hours-long or even all-day continuous live streaming, such as game streaming or slow live streams. The app must remain stable and avoid crashes due to long-term operation.
320
+
321
+ #### Technical Challenge
322
+
323
+ The SDK returns a full `messageList` that grows indefinitely during long live streams. Even if the UI layer throttles updates, a large array in the data layer will continue consuming memory and may eventually cause the app to crash.
324
+
325
+ #### Optimization: Circular Buffer with Fixed Capacity
326
+
327
+ Ensure your data source holds only a limited number of messages. Regardless of the size of the full list returned by the SDK, only retain the latest portion for display.
328
+
329
+ #### Code Example
330
+
331
+ After receiving the full list from the SDK, take only the latest 500 messages (or another number you define) to update the UI.
332
+ ``` kotlin
333
+ class BarrageUIManager(
334
+ private val recyclerView: RecyclerView
335
+ ) {
336
+ private val capacity: Int = 500 // Only retain the latest 500 messages
337
+ // ... (other code as above) ...
338
+
339
+ private fun refreshUIIfNeeded() {
340
+ val fullList = this.latestMessageList ?: return
341
+ val adapter = recyclerView.adapter ?: return
342
+ this.latestMessageList = null
343
+
344
+ // Only take the latest N messages
345
+ val cappedList = fullList.takeLast(capacity)
346
+
347
+ dataSource.clear()
348
+ dataSource.addAll(cappedList)
349
+ adapter.notifyDataSetChanged()
350
+ }
351
+ }
352
+ ```
353
+
354
+ ### Scenario 3: Rendering Complex Barrage Styles with User Levels and Badges
355
+
356
+ #### Scenario Description
357
+
358
+ To enhance the live streaming atmosphere and highlight paying users, barrage messages may include rich visual elements such as usernames, user level icons, fan badges, and message content.
359
+
360
+ #### Technical Challenge
361
+
362
+ Rendering views with multiple images and texts, custom fonts, or complex layouts is more time-consuming than rendering plain text. High-frequency rendering of these complex views in a list increases the main thread's workload, causing lag during list scrolling.
363
+
364
+ #### Optimization: Asynchronous Drawing
365
+
366
+ Move the view rendering process off the main thread and onto a background thread. The main thread should only handle the final display of the already rendered bitmap, significantly reducing its computational load.
367
+
368
+ #### Code Example
369
+
370
+ In your custom `RecyclerView.ViewHolder`, use `AsyncLayoutInflater` or a preloading mechanism to perform rendering tasks on a background thread whenever possible.
371
+ ``` kotlin
372
+ import android.view.LayoutInflater
373
+ import androidx.asynclayoutinflater.view.AsyncLayoutInflater
374
+ import androidx.recyclerview.widget.RecyclerView
375
+
376
+ // In your custom Barrage ViewHolder
377
+ class BarrageViewHolder(
378
+ itemView: View
379
+ ) : RecyclerView.ViewHolder(itemView) {
380
+
381
+ // ... (Declarations for TextView, ImageView, etc.)
382
+
383
+ companion object {
384
+ fun create(parent: ViewGroup): BarrageViewHolder {
385
+ // Use async layout inflater to reduce main thread blocking
386
+ val inflater = AsyncLayoutInflater(parent.context)
387
+ val view = LayoutInflater.from(parent.context)
388
+ .inflate(R.layout.item_barrage, parent, false)
389
+ return BarrageViewHolder(view)
390
+ }
391
+ }
392
+
393
+ fun bind(viewModel: BarrageViewModel) {
394
+ // Set your TextView text, ImageView images, etc. here
395
+ // With async layout inflation, final rendering is done on a background thread whenever possible
396
+ }
397
+
398
+ // Advanced performance optimization: fully manual drawing
399
+ // For finer control, use Canvas to manually draw text and images
400
+ // Generate the Bitmap on a background thread, then draw it in the main thread's onDraw method for fully asynchronous rendering
401
+ }
402
+ ```
403
+
404
+ ## API Documentation
405
+
406
+ For detailed information on all public interfaces, properties, methods of [BarrageStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.barrage/-barrage-store/index.html) and its related classes, refer to the official API documentation included with the [AtomicXCore](https://tencent-rtc.github.io/TUIKit_Android/index.html) framework.
407
+
408
+ ## FAQs
409
+
410
+ ### In addition to basic text barrages, we also want to implement richer styles such as "colored barrages" and "gift barrages." How can we achieve this?
411
+
412
+ You can implement these features using custom messages with `sendCustomMessage`.
413
+
414
+ **Implementation Steps**
415
+ 1. **Define the Data Structure**: Collaborate with your client and server teams to define the JSON structure for custom messages. For example, a colored barrage can be defined as:
416
+
417
+ ``` json
418
+ { "type": "colored_text", "text": "This is a colored bullet comment!", "color": "#FF5733" }
419
+ ```
420
+ 2. **Sender**: When sending, serialize this JSON structure to a string and send it via the `data` parameter of `sendCustomMessage`. The businessID can be set to a unique identifier for your use case, such as `barrage_style_v1`.
421
+
422
+ 3. **Receiver**: Upon receiving a barrage message, check whether its messageType is `BarrageType.CUSTOM` and whether the `businessID` matches. If so, parse the data string (usually as JSON), and render your custom UI style based on the parsed data (such as `color`, `text`).
423
+
424
+ ### If I call BarrageStore.create(liveID = "some_id") in different classes or files, will this create multiple instances and cause confusion?
425
+
426
+ No. The internal mechanism of **AtomicXCore** ensures that as long as you pass in the same `liveID`, you always get the same `BarrageStore` instance for that live room. You do not need to manage singletons manually.
427
+
428
+ ### Why can't I see the message I sent after calling sendTextMessage in the message list?
429
+
430
+ **Troubleshooting steps:**
431
+ 1. **Check the completion callback**: The `sendTextMessage` method provides a completion callback. Check whether the callback indicates success or failure. If it fails, the error message will indicate the problem (such as "You have been muted," "Network error," etc.).
432
+
433
+ 2. **Confirm subscription timing**: Make sure you subscribe to `barrageStore.barrageState.messageList` after the live session for the corresponding `liveID` has started. If you start listening before joining the live room, you may miss some messages.
434
+
435
+ 3. **Check liveID**: Ensure that the liveID used when creating the BarrageStore instance, joining the live room, and sending messages is exactly the same, including case sensitivity.
436
+
437
+ 4. **Network issues**: Ensure the device's network connection is normal. Message sending depends on network connectivity.
438
+
439
+ ### How can new viewers see historical barrage messages sent before they joined the live room?
440
+
441
+ `AtomicXCore` supports retrieving historical chat messages, but you need to enable this feature in the **server console**. Once configured, the SDK handles everything automatically—no additional client code is required.
442
+
443
+ #### **Step 1: Configure in the Live Console**
444
+ 1. Log in to [**Console > Live > Configuration**](https://console.trtc.io/live/configuration), and select your target application at the top of the page.
445
+
446
+ 2. On the Live Configuration page, select **View Past Messages**, and set Previous Messages Viewable to specify the number of messages (up to a maximum of 50) that new viewers can see.
447
+
448
+ #### **Step 2: Automatic Retrieval on the Client Side**
449
+
450
+ After completing the above configuration, **no changes are needed** in your client code.
451
+
452
+ When a new user joins the live room, `AtomicXCore` automatically retrieves the configured number of historical chat messages in the background. These messages are delivered to the UI layer through the `BarrageState` subscription channel, just like real-time messages. Your application will receive and display these historical chat messages in the same way as live messages.