@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
@@ -1,866 +0,0 @@
1
- **AtomicXCore** provided [CoHostStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/CoHostStore-class.html) and [BattleStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html), two core modules used to process **cross-room connection and PK battle**. This document will guide you on how to use these two tools in combination to complete the complete process from connecting line to PK in live broadcasting scenario.
2
-
3
- ## Core Scenario
4
-
5
- A complete "anchor connection PK" usually consists of three core stages, and the overall process is as follows:
6
-
7
- ## Implementation Steps
8
-
9
- ### Step 1: Integrating the Component
10
-
11
- Refer to Quick Connection for seamless integration with **AtomicXCore** and complete **LiveCoreWidget** access.
12
-
13
- ### Step 2: Implementing Cross-Room Connection
14
-
15
- The goal of this step is to have two Anchors appear in the same view, and we will use [CoHostStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/api_live_co_host_store-library.html) to complete it.
16
-
17
- #### Inviter (Anchor A) Implementation
18
- 1. **Initiate connection invitation**
19
-
20
- When Anchor A selects target Anchor B on the interface and initiates connecting line, call the `requestHostConnection` method.
21
-
22
- ``` java
23
- import 'package:atomic_x_core/atomicxcore.dart';
24
-
25
- // Anchor A's webpage
26
- class AnchorAPage extends StatefulWidget {
27
- final String liveId;
28
-
29
- const AnchorAPage({Key? key, required this.liveId}) : super(key: key);
30
-
31
- @override
32
- State<AnchorAPage> createState() => _AnchorAPageState();
33
- }
34
-
35
- class _AnchorAPageState extends State<AnchorAPage> {
36
- late final CoHostStore _coHostStore;
37
- late final CoHostListener _coHostListener;
38
-
39
- @override
40
- void initState() {
41
- super.initState();
42
- _coHostStore = CoHostStore.create(widget.liveId);
43
- _setupListeners();
44
- }
45
-
46
- // User clicks the "connecting line" button and selected Anchor B
47
- Future<void> inviteHostB(String targetHostLiveId) async {
48
- final layout = CoHostLayoutTemplate.hostDynamicGrid; // Select a layout template
49
- const timeout = 30; // Invitation timeout duration (seconds)
50
-
51
- final result = await _coHostStore.requestHostConnection(
52
- targetHostLiveID: targetHostLiveId,
53
- layoutTemplate: layout,
54
- timeout: timeout,
55
- );
56
-
57
- if (result.isSuccess) {
58
- print('Connection invitation sent, waiting for peer to handle...');
59
- } else {
60
- print('Invitation sending failure: ${result.errorMessage}');
61
- }
62
- }
63
-
64
- @override
65
- void dispose() {
66
- _coHostStore.removeCoHostListener(_coHostListener);
67
- super.dispose();
68
- }
69
- }
70
- ```
71
- 2. **Listen for invitation result**
72
-
73
- Through `CoHostListener`, you can receive the Anchor B's processing result.
74
-
75
- ``` java
76
- // Set up monitoring when initializing _AnchorAPageState
77
- void _setupListeners() {
78
- _coHostListener = CoHostListener(
79
- onCoHostRequestAccepted: (invitee) {
80
- print('Anchor ${invitee.userName} granted your connection invitation');
81
- },
82
- onCoHostRequestRejected: (invitee) {
83
- print('Anchor ${invitee.userName} refused your invitation');
84
- },
85
- onCoHostRequestTimeout: (inviter, invitee) {
86
- print('Invitation timeout, no response from the other party');
87
- },
88
- onCoHostUserJoined: (userInfo) {
89
- print('Anchor ${userInfo.userName} joined the connecting line');
90
- },
91
- onCoHostUserLeft: (userInfo) {
92
- print('Anchor ${userInfo.userName} left the connecting line');
93
- },
94
- );
95
- _coHostStore.addCoHostListener(_coHostListener);
96
- }
97
- ```
98
-
99
- #### Invitee (Anchor B) Implementation
100
- 1. **Receive connection invitation**
101
-
102
- Through `CoHostListener`, Anchor B can listen to the invitation from Anchor A.
103
-
104
- ``` java
105
- import 'package:atomic_x_core/atomicxcore.dart';
106
-
107
- // Anchor B's webpage
108
- class AnchorBPage extends StatefulWidget {
109
- final String liveId;
110
-
111
- const AnchorBPage({Key? key, required this.liveId}) : super(key: key);
112
-
113
- @override
114
- State<AnchorBPage> createState() => _AnchorBPageState();
115
- }
116
-
117
- class _AnchorBPageState extends State<AnchorBPage> {
118
- late final CoHostStore _coHostStore;
119
- late final CoHostListener _coHostListener;
120
-
121
- @override
122
- void initState() {
123
- super.initState();
124
- _coHostStore = CoHostStore.create(widget.liveId);
125
- _setupListeners();
126
- }
127
-
128
- // Set up monitoring during initialization
129
- void _setupListeners() {
130
- _coHostListener = CoHostListener(
131
- onCoHostRequestReceived: (inviter, extensionInfo) {
132
- print('Received connection invitation from Anchor ${inviter.userName}');
133
- // _showInvitationDialog(inviter);
134
- },
135
- );
136
- _coHostStore.addCoHostListener(_coHostListener);
137
- }
138
-
139
- @override
140
- void dispose() {
141
- _coHostStore.removeCoHostListener(_coHostListener);
142
- super.dispose();
143
- }
144
- }
145
- ```
146
- 2. **Respond to connection invitation**
147
-
148
- When Anchor B makes a selection in the pop-up dialog box, call the method accordingly.
149
-
150
- ``` java
151
- // Part of _AnchorBPageState
152
- Future<void> acceptInvitation(String fromHostLiveId) async {
153
- final result = await _coHostStore.acceptHostConnection(fromHostLiveId);
154
- if (result.isSuccess) {
155
- print('Connection invitation accepted');
156
- } else {
157
- print('Connection acceptance failure: ${result.errorMessage}');
158
- }
159
- }
160
-
161
- Future<void> rejectInvitation(String fromHostLiveId) async {
162
- final result = await _coHostStore.rejectHostConnection(fromHostLiveId);
163
- if (result.isSuccess) {
164
- print('Connection invitation denied');
165
- } else {
166
- print('Connection rejection failure: ${result.errorMessage}');
167
- }
168
- }
169
- ```
170
-
171
- ### Step 3: Implement Anchor PK
172
-
173
- Upon success of the connecting line, either party can initiate PK. This step will be achieved by using [BattleStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html) to implement Anchor PK.
174
-
175
- #### Challenger (Such As Anchor A) Implementation
176
- 1. **Initiate PK challenge**
177
-
178
- When Anchor A clicks the "PK" button, call the `requestBattle` method.
179
-
180
- ``` java
181
- // Part of _AnchorAPageState
182
- late final BattleStore _battleStore;
183
- late final BattleListener _battleListener;
184
-
185
- @override
186
- void initState() {
187
- super.initState();
188
- _coHostStore = CoHostStore.create(widget.liveId);
189
- _battleStore = BattleStore.create(widget.liveId);
190
- _setupListeners();
191
- _setupBattleListeners();
192
- }
193
-
194
- Future<void> startPK(String opponentUserId) async {
195
- final config = BattleConfig(duration: 300); // PK lasts 5 minutes
196
- final result = await _battleStore.requestBattle(
197
- config: config,
198
- userIDList: [opponentUserId],
199
- timeout: 30,
200
- );
201
-
202
- if (result.isSuccess) {
203
- print('Battle request sent, battleID: ${result.battleID}');
204
- } else {
205
- print('PK request failure: ${result.errorMessage}');
206
- }
207
- }
208
- ```
209
- 2. **Listen for PK status**
210
-
211
- Listen for key events such as PK start and end via `BattleListener`.
212
-
213
- ``` java
214
- // Add to the _setupBattleListeners method in _AnchorAPageState
215
- void _setupBattleListeners() {
216
- _battleListener = BattleListener(
217
- onBattleStarted: (battleInfo, inviter, invitees) {
218
- print('PK started');
219
- },
220
- onBattleEnded: (battleInfo, reason) {
221
- print('PK ended, reason: $reason');
222
- },
223
- onUserJoinBattle: (battleID, battleUser) {
224
- print('User ${battleUser.userName} joined PK');
225
- },
226
- onUserExitBattle: (battleID, battleUser) {
227
- print('User ${battleUser.userName} left the PK');
228
- },
229
- );
230
- _battleStore.addBattleListener(_battleListener);
231
- }
232
-
233
- @override
234
- void dispose() {
235
- _coHostStore.removeCoHostListener(_coHostListener);
236
- _battleStore.removeBattleListener(_battleListener);
237
- super.dispose();
238
- }
239
- ```
240
-
241
- #### Challenger (Anchor B) Implementation
242
- 1. **Accept PK challenge**
243
-
244
- Listen for PK invitation via `BattleListener`.
245
-
246
- ``` java
247
- // Add to the _setupBattleListeners method in _AnchorBPageState
248
- void _setupBattleListeners() {
249
- _battleListener = BattleListener(
250
- onBattleRequestReceived: (battleId, inviter, invitee) {
251
- print('Received PK challenge from Anchor ${inviter.userName}');
252
- // Display a pop-up dialog box for Anchor B to select "Agree" or "Reject"
253
- // _showPKChallengeDialog(battleId);
254
- },
255
- onBattleStarted: (battleInfo, inviter, invitees) {
256
- print('PK started');
257
- },
258
- onBattleEnded: (battleInfo, reason) {
259
- print('PK ended');
260
- },
261
- );
262
- _battleStore.addBattleListener(_battleListener);
263
- }
264
- ```
265
- 2. **Respond to PK challenge**
266
-
267
- When Anchor B makes a selection, call the appropriate method.
268
-
269
- ``` java
270
- // Part of _AnchorBPageState
271
- // User click "Accept Challenge"
272
- Future<void> acceptPK(String battleId) async {
273
- final result = await _battleStore.acceptBattle(battleId);
274
- if (result.isSuccess) {
275
- print('PK challenge accepted');
276
- } else {
277
- print('PK acceptance failure: ${result.errorMessage}');
278
- }
279
- }
280
-
281
- // User click "Reject Challenge"
282
- Future<void> rejectPK(String battleId) async {
283
- final result = await _battleStore.rejectBattle(battleId);
284
- if (result.isSuccess) {
285
- print('PK challenge denied');
286
- } else {
287
- print('PK rejection failure: ${result.errorMessage}');
288
- }
289
- }
290
- ```
291
-
292
- ### Execution Effect
293
-
294
- After integrating the above feature implementation, perform the corresponding operation using Anchor A and Anchor B separately. The execution effect is as follows. You can refer to the next chapter Refine UI Detail to customize UI logic.
295
-
296
- ## Refine UI Detail
297
-
298
- You can use the "slot" capacity provided by the `VideoWidgetBuilder` parameter of `LiveCoreWidget` to add custom view on top of the video stream image for displaying nickname, avatar, PK progress bar, etc., or provide placeholder image when they turn camera off to optimize visual experience.
299
-
300
- ### Implementing Nickname Display on Video Stream Image
301
-
302
- #### Effect
303
-
304
- #### Implementation Method
305
- - **Step 1**: Create a foreground view (**CustomCoHostForegroundView**) to display user information above the video stream.
306
-
307
- > **Note:**
308
- >
309
-
310
- > You can also refer to the [co_host_foreground_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/decorations/co_host/co_host_foreground_widget.dart) and [co_host_background_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/decorations/co_host/co_host_background_widget.dart) files in the TUILiveKit open-source project to understand the complete implementation logic.
311
- >
312
-
313
- ``` java
314
- import 'package:flutter/material.dart';
315
- import 'package:rtc_room_engine/rtc_room_engine.dart';
316
-
317
- /// Custom connected host message floating view (foreground)
318
- class CustomCoHostForegroundView extends StatelessWidget {
319
- final SeatFullInfo seatInfo;
320
-
321
- const CustomCoHostForegroundView({
322
- Key? key,
323
- required this.seatInfo,
324
- }) : super(key: key);
325
-
326
- @override
327
- Widget build(BuildContext context) {
328
- return Container(
329
- color: Colors.transparent,
330
- child: Align(
331
- alignment: Alignment.bottomLeft,
332
- child: Container(
333
- margin: const EdgeInsets.all(5.0),
334
- padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
335
- decoration: BoxDecoration(
336
- color: Colors.black.withOpacity(0.5),
337
- borderRadius: BorderRadius.circular(12),
338
- ),
339
- child: Text(
340
- seatInfo.userInfo.userName,
341
- style: const TextStyle(
342
- color: Colors.white,
343
- fontSize: 14,
344
- ),
345
- ),
346
- ),
347
- ),
348
- );
349
- }
350
- }
351
- ```
352
- - **Step 2**: Create a background view (**CustomCoHostBackgroundView**) to display a placeholder image when there is no video stream from the user.
353
-
354
- ``` java
355
- import 'package:flutter/material.dart';
356
- import 'package:rtc_room_engine/rtc_room_engine.dart';
357
-
358
- /// Custom connected anchor avatar placeholder view (background)
359
- class CustomCoHostBackgroundView extends StatelessWidget {
360
- final SeatFullInfo seatInfo;
361
-
362
- const CustomCoHostBackgroundView({
363
- Key? key,
364
- required this.seatInfo,
365
- }) : super(key: key);
366
-
367
- @override
368
- Widget build(BuildContext context) {
369
- final avatarUrl = seatInfo.userInfo.avatarUrl;
370
- return Container(
371
- decoration: BoxDecoration(
372
- color: Colors.grey[800],
373
- ),
374
- child: Center(
375
- child: Column(
376
- mainAxisSize: MainAxisSize.min,
377
- children: [
378
- ClipOval(
379
- child: avatarUrl.isNotEmpty
380
- ? Image.network(
381
- avatarUrl,
382
- width: 60,
383
- height: 60,
384
- fit: BoxFit.cover,
385
- errorBuilder: (context, error, stackTrace) {
386
- return _buildDefaultAvatar();
387
- },
388
- )
389
- : _buildDefaultAvatar(),
390
- ),
391
- const SizedBox(height: 8),
392
- Text(
393
- seatInfo.userInfo.userName,
394
- style: const TextStyle(
395
- color: Colors.white,
396
- fontSize: 12,
397
- ),
398
- ),
399
- ],
400
- ),
401
- ),
402
- );
403
- }
404
-
405
- Widget _buildDefaultAvatar() {
406
- return Container(
407
- width: 60,
408
- height: 60,
409
- color: Colors.grey,
410
- child: const Icon(Icons.person, size: 40, color: Colors.white),
411
- );
412
- }
413
- }
414
- ```
415
- - **Step 3**: Build a custom view through the `VideoWidgetBuilder`'s `coHostWidgetBuilder` callback, and return the corresponding view based on the `viewLayer` value.
416
-
417
- ``` java
418
- import 'package:flutter/material.dart';
419
- import 'package:atomic_x_core/atomicxcore.dart';
420
- import 'package:rtc_room_engine/rtc_room_engine.dart';
421
-
422
- /// Live streaming page with custom connection view
423
- class CustomCoHostLiveWidget extends StatefulWidget {
424
- final String liveId;
425
-
426
- const CustomCoHostLiveWidget({
427
- Key? key,
428
- required this.liveId,
429
- }) : super(key: key);
430
-
431
- @override
432
- State<CustomCoHostLiveWidget> createState() => _CustomCoHostLiveWidgetState();
433
- }
434
-
435
- class _CustomCoHostLiveWidgetState extends State<CustomCoHostLiveWidget> {
436
- late LiveCoreController _controller;
437
-
438
- @override
439
- void initState() {
440
- super.initState();
441
- _controller = LiveCoreController.create();
442
- _controller.setLiveID(widget.liveId);
443
- }
444
-
445
- @override
446
- void dispose() {
447
- _controller.dispose();
448
- super.dispose();
449
- }
450
-
451
- /// Build a custom view for the connected host
452
- Widget _buildCoHostWidget(
453
- BuildContext context,
454
- SeatFullInfo seatFullInfo,
455
- ViewLayer viewLayer,
456
- ) {
457
- if (viewLayer == ViewLayer.foreground) {
458
- // Foreground layer: Always display on top of the video image for Nickname, information, etc.
459
- return CustomCoHostForegroundView(seatInfo: seatFullInfo);
460
- } else {
461
- // Background layer: Display only when the corresponding user has no video stream, used for avatar placeholder image
462
- return CustomCoHostBackgroundView(seatInfo: seatFullInfo);
463
- }
464
- }
465
-
466
- @override
467
- Widget build(BuildContext context) {
468
- return Scaffold(
469
- body: LiveCoreWidget(
470
- controller: _controller,
471
- videoWidgetBuilder: VideoWidgetBuilder(
472
- coHostWidgetBuilder: _buildCoHostWidget,
473
- ),
474
- ),
475
- );
476
- }
477
- }
478
- ```
479
-
480
- #### **Parameter description:**
481
- | **Parameter** | **Type** | **Note** |
482
- | --- | --- | --- |
483
- | `seatFullInfo` | `SeatFullInfo` | Seat information object, containing the Anchor's detailed information |
484
- | `seatFullInfo.userInfo.userId` | `String` | Anchor's user ID |
485
- | `seatFullInfo.userInfo.userName` | `String` | Anchor's Nickname |
486
- | `seatFullInfo.userInfo.avatarUrl` | `String` | Anchor's profile photo URL |
487
- | `viewLayer` | `ViewLayer` | View hierarchy enumeration<br>`ViewLayer.foreground` refers to the pendant view in the foreground, always displayed on top of the video image.<br>`ViewLayer.background` refers to the pendant view in the background, located in the lower layer of the foreground view. It is only displayed when the corresponding user has no video stream (such as when the camera is off), usually used for displaying the default avatar or placeholder image. |
488
-
489
- ### Implementing Score Display for PK User View
490
-
491
- When the Anchor starts PK, you can mount a custom view on the other party's video footage, usually used for showing the value of gifts received or other PK-related information.
492
-
493
- #### **Effect**
494
-
495
- #### Implementation Method
496
- - **Step 1**: Create a custom PK user view. You can refer to the [battle_member_info_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/decorations/battle/battle_member_info_widget.dart) file in the TUILiveKit open-source project to learn about the complete implementation logic.
497
-
498
- ``` java
499
- import 'package:flutter/material.dart';
500
- import 'package:atomic_x_core/atomicxcore.dart';
501
- import 'package:rtc_room_engine/rtc_room_engine.dart';
502
-
503
- /// Custom PK User View
504
- class CustomBattleUserView extends StatefulWidget {
505
- final String liveId;
506
- final TUIBattleUser battleUser;
507
-
508
- const CustomBattleUserView({
509
- Key? key,
510
- required this.liveId,
511
- required this.battleUser,
512
- }) : super(key: key);
513
-
514
- @override
515
- State<CustomBattleUserView> createState() => _CustomBattleUserViewState();
516
- }
517
-
518
- class _CustomBattleUserViewState extends State<CustomBattleUserView> {
519
- late final BattleStore _battleStore;
520
- late final VoidCallback _scoreChangedListener = _onScoreChanged;
521
- int _score = 0;
522
-
523
- @override
524
- void initState() {
525
- super.initState();
526
- _battleStore = BattleStore.create(widget.liveId);
527
- _subscribeBattleState();
528
- }
529
-
530
- /// Subscribe to PK score changes
531
- void _subscribeBattleState() {
532
- _battleStore.battleState.battleScore.addListener(_scoreChangedListener);
533
- // Initialize the score
534
- _updateScore(_battleStore.battleState.battleScore.value);
535
- }
536
-
537
- void _onScoreChanged() {
538
- _updateScore(_battleStore.battleState.battleScore.value);
539
- }
540
-
541
- void _updateScore(Map<String, int> battleScore) {
542
- final score = battleScore[widget.battleUser.userId] ?? 0;
543
- if (mounted && score != _score) {
544
- setState(() {
545
- _score = score;
546
- });
547
- }
548
- }
549
-
550
- @override
551
- void dispose() {
552
- _battleStore.battleState.battleScore.removeListener(_scoreChangedListener);
553
- super.dispose();
554
- }
555
-
556
- @override
557
- Widget build(BuildContext context) {
558
- return IgnorePointer(
559
- child: Align(
560
- alignment: Alignment.bottomRight,
561
- child: Container(
562
- margin: const EdgeInsets.all(5),
563
- padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
564
- decoration: BoxDecoration(
565
- color: Colors.black.withOpacity(0.4),
566
- borderRadius: BorderRadius.circular(12),
567
- ),
568
- child: Text(
569
- '$_score',
570
- style: const TextStyle(
571
- color: Colors.white,
572
- fontSize: 14,
573
- fontWeight: FontWeight.bold,
574
- ),
575
- ),
576
- ),
577
- ),
578
- );
579
- }
580
- }
581
- ```
582
- - **Step 2**: Build a custom PK view through the `battleWidgetBuilder` callback of `VideoWidgetBuilder`.
583
-
584
- ``` java
585
- import 'package:flutter/material.dart';
586
- import 'package:atomic_x_core/atomicxcore.dart';
587
- import 'package:rtc_room_engine/rtc_room_engine.dart';
588
-
589
- Live streaming page with custom PK view
590
- class CustomBattleLiveWidget extends StatefulWidget {
591
- final String liveId;
592
-
593
- const CustomBattleLiveWidget({
594
- Key? key,
595
- required this.liveId,
596
- }) : super(key: key);
597
-
598
- @override
599
- State<CustomBattleLiveWidget> createState() => _CustomBattleLiveWidgetState();
600
- }
601
-
602
- class _CustomBattleLiveWidgetState extends State<CustomBattleLiveWidget> {
603
- late LiveCoreController _controller;
604
-
605
- @override
606
- void initState() {
607
- super.initState();
608
- _controller = LiveCoreController.create();
609
- _controller.setLiveID(widget.liveId);
610
- }
611
-
612
- @override
613
- void dispose() {
614
- _controller.dispose();
615
- super.dispose();
616
- }
617
-
618
- /// Build Custom PK User View
619
- Widget _buildBattleWidget(BuildContext context, TUIBattleUser battleUser) {
620
- return CustomBattleUserView(
621
- liveId: widget.liveId,
622
- battleUser: battleUser,
623
- );
624
- }
625
-
626
- @override
627
- Widget build(BuildContext context) {
628
- return Scaffold(
629
- body: LiveCoreWidget(
630
- controller: _controller,
631
- videoWidgetBuilder: VideoWidgetBuilder(
632
- battleWidgetBuilder: _buildBattleWidget,
633
- ),
634
- ),
635
- );
636
- }
637
- }
638
- ```
639
-
640
- #### **Parameter description:**
641
- | **Parameter** | **Type** | **Note** |
642
- | --- | --- | --- |
643
- | `battleUser` | `TUIBattleUser` | PK user information object. |
644
- | `battleUser.roomId` | `String` | PK room ID. |
645
- | `battleUser.userId` | `String` | PK user ID. |
646
- | `battleUser.userName` | `String` | PK user nickname. |
647
- | `battleUser.avatarUrl` | `String` | PK user avatar address. |
648
- | `battleUser.score` | `int` | PK score. |
649
-
650
- ### Displaying PK Status on Video Stream Image
651
-
652
- #### **Effect**
653
-
654
- #### **Implementation Method**
655
- - **Step 1:** Create a custom PK global view **CustomBattleContainerView**. You can refer to the [battle_info_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/decorations/battle/battle_info_widget.dart) file in the TUILiveKit open-source project to achieve the same effect.
656
-
657
- - **Step 2**: Build a custom PK container view through the `battleContainerWidgetBuilder` callback of `VideoWidgetBuilder`.
658
-
659
- ``` java
660
- import 'package:flutter/material.dart';
661
- import 'package:atomic_x_core/atomicxcore.dart';
662
-
663
- Live streaming page with custom PK container view
664
- class CustomBattleContainerLiveWidget extends StatefulWidget {
665
- final String liveId;
666
-
667
- const CustomBattleContainerLiveWidget({
668
- Key? key,
669
- required this.liveId,
670
- }) : super(key: key);
671
-
672
- @override
673
- State<CustomBattleContainerLiveWidget> createState() => _CustomBattleContainerLiveWidgetState();
674
- }
675
-
676
- class _CustomBattleContainerLiveWidgetState extends State<CustomBattleContainerLiveWidget> {
677
- late LiveCoreController _controller;
678
-
679
- @override
680
- void initState() {
681
- super.initState();
682
- _controller = LiveCoreController.create();
683
- _controller.setLiveID(widget.liveId);
684
- }
685
-
686
- @override
687
- void dispose() {
688
- _controller.dispose();
689
- super.dispose();
690
- }
691
-
692
- /// Build PK Container View
693
- Widget _buildBattleContainerWidget(BuildContext context) {
694
- // CustomBattleContainerView is your custom PK global view
695
- return CustomBattleContainerView(liveId: widget.liveId);
696
- }
697
-
698
- @override
699
- Widget build(BuildContext context) {
700
- return Scaffold(
701
- body: LiveCoreWidget(
702
- controller: _controller,
703
- videoWidgetBuilder: VideoWidgetBuilder(
704
- battleContainerWidgetBuilder: _buildBattleContainerWidget,
705
- ),
706
- ),
707
- );
708
- }
709
- }
710
- ```
711
-
712
- ### Combine Multiple Custom Views
713
-
714
- In actual scenarios, you may need to customize the connected host view, PK user view, and PK container view at the same time. The following example shows how to use them in combination.
715
- ``` java
716
- import 'package:flutter/material.dart';
717
- import 'package:atomic_x_core/atomicxcore.dart';
718
- import 'package:rtc_room_engine/rtc_room_engine.dart';
719
-
720
- /// Complete custom view live streaming page
721
- class FullCustomLiveWidget extends StatefulWidget {
722
- final String liveId;
723
-
724
- const FullCustomLiveWidget({
725
- Key? key,
726
- required this.liveId,
727
- }) : super(key: key);
728
-
729
- @override
730
- State<FullCustomLiveWidget> createState() => _FullCustomLiveWidgetState();
731
- }
732
-
733
- class _FullCustomLiveWidgetState extends State<FullCustomLiveWidget> {
734
- late LiveCoreController _controller;
735
-
736
- @override
737
- void initState() {
738
- super.initState();
739
- _controller = LiveCoreController.create();
740
- _controller.setLiveID(widget.liveId);
741
- }
742
-
743
- @override
744
- void dispose() {
745
- _controller.dispose();
746
- super.dispose();
747
- }
748
-
749
- /// Build a custom view for the connected host
750
- Widget _buildCoHostWidget(
751
- BuildContext context,
752
- SeatFullInfo seatFullInfo,
753
- ViewLayer viewLayer,
754
- ) {
755
- if (viewLayer == ViewLayer.foreground) {
756
- return CustomCoHostForegroundView(seatInfo: seatFullInfo);
757
- } else {
758
- return CustomCoHostBackgroundView(seatInfo: seatFullInfo);
759
- }
760
- }
761
-
762
- /// Build Custom PK User View
763
- Widget _buildBattleWidget(BuildContext context, TUIBattleUser userInfo) {
764
- return CustomBattleUserView(
765
- liveId: widget.liveId,
766
- battleUser: userInfo,
767
- );
768
- }
769
-
770
- /// Build PK Container View
771
- Widget _buildBattleContainerWidget(BuildContext context) {
772
- return CustomBattleContainerView(liveId: widget.liveId);
773
- }
774
-
775
- @override
776
- Widget build(BuildContext context) {
777
- return Scaffold(
778
- body: LiveCoreWidget(
779
- controller: _controller,
780
- videoWidgetBuilder: VideoWidgetBuilder(
781
- coHostWidgetBuilder: _buildCoHostWidget,
782
- battleWidgetBuilder: _buildBattleWidget,
783
- battleContainerWidgetBuilder: _buildBattleContainerWidget,
784
- ),
785
- ),
786
- );
787
- }
788
- }
789
- ```
790
-
791
- ## Advanced Features
792
-
793
- ### Implement PK Score Update Via REST API
794
-
795
- In the **live streamer PK scenario**, the value of gifts received by the Anchor will be linked to the PK value (for example: when the audience sends a "rocket" gift, the Anchor's PK score increases by 500 points). You can easily implement real-time score updates in the live PK scenario through our REST API.
796
-
797
- > **Important Note:**
798
- >
799
-
800
- > The PK score system in the LiveKit backend uses pure numerical computation and cumulative mechanism. Therefore, you need to complete the PK score calculation before calling the update API based on your operational strategy and business requirement. See the following PK score calculation example:
801
- >
802
- | **Gift Type** | **Score Calculation Rule** | **Example** |
803
- | --- | --- | --- |
804
- | Basic Gift | Gift Value × 5 | 10 CNY Gift → 50 Points |
805
- | Intermediate Gift | Gift Value × 8 | 50 CNY Gift → 400 Points |
806
- | Senior Gift | Gift Value × 12 | 100 CNY Gift → 1200 Points |
807
- | Special Effect Gift | fixed high score | 520 CNY Gift → 1314 Points |
808
-
809
- #### REST API Call Process
810
-
811
- #### Key Process Description
812
- 1. **Obtain PK Status:**
813
-
814
- - **Callback Configuration**: Configure PK Status Callback to have the `LiveKit` backend actively notify your system when PK starts or ends.
815
-
816
- - **Active Query**: Your backend can call the PK Status Query API at any time to check the current PK status.
817
-
818
- 2. **PK Score Calculation**: Your backend calculates the PK score increment based on your business rules.
819
-
820
- 3. **PK Score Update**: Your backend calls the Update PK Score API to update the PK score in the LiveKit backend.
821
-
822
- 4. **LiveKit Backend Syncs to Client**: The backend automatically synchronizes the updated PK score to all clients.
823
-
824
- #### Involved REST API Endpoints
825
- | **API** | **Function Description** | **Request Example** |
826
- | --- | --- | --- |
827
- | Active API - Query PK Status | Check whether the current room is in PK | Example |
828
- | Active API - Update PK Score | Update the calculated PK score | Example |
829
- | Callback Configuration - PK Start Callback | Receive real-time notification when PK starts | Example |
830
- | Callback Configuration - PK End Callback | Receive real-time notification when PK ends | Example |
831
-
832
- ## API documentation
833
-
834
- For detailed information about all public interfaces, attributes, and methods of [CoHostStore](https://pub.dev/documentation/atomic_x_core/latest/api_live_co_host_store/CoHostStore-class.html) and its related classes, see the official API documentation of the [AtomicXCore](https://tencent-rtc.github.io/TUIKit_Flutter/index.html) framework. The related Store used in this guide is as follows:
835
- | **Store/Component** | **Feature Description** | **API Reference** |
836
- | --- | --- | --- |
837
- | **LiveCoreWidget** | The core view component for live video stream display and interaction: responsible for stream rendering and view widget processing, supporting scenarios such as anchor live streaming, audience mic connection, and cross-room connection with other anchors. | [API documentation](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/LiveCoreWidget-class.html) |
838
- | **LiveCoreController** | The controller of LiveCoreWidget: are used to set the live stream ID, control the preview, and perform other operations. | [API documentation](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/LiveCoreController-class.html) |
839
- | **VideoWidgetBuilder** | Video view adapter: used for custom pendant view of video stream in scenarios such as connected host, PK user, and PK containers. | [API documentation](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/VideoWidgetBuilder-class.html) |
840
- | **DeviceStore** | Audio/Video device control: microphone (on/off, volume), camera (on/off, switchover, video quality), screen sharing, and real-time monitoring of device status. | [API documentation](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_device_store/DeviceStore-class.html) |
841
- | **CoHostStore** | Anchor cross-room connection: supports multiple layout templates (dynamic grid, etc.), initiate/accept/reject connection, and manage interactive Anchor connections. | [API documentation](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/api_live_co_host_store-library.html) |
842
- | **BattleStore** | Anchor PK battle: trigger PK (duration configuration/competitor), manage PK status (started/ended), synchronize score, listen to battle results. | [API documentation](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html) |
843
-
844
- ## FAQs
845
-
846
- ### **Why Was the Connection Invitation Sent but Not Received by the Other Party?**
847
- - Please check whether `targetHostLiveId` is correct and the other party's live streaming room is in normal live streaming status.
848
-
849
- - Check the network connection is connected. The invitation signaling has a default timeout duration of 30 seconds.
850
-
851
- ### What to Do When Network Disconnection or App Crash Occurs during Connecting Line or PK for an Anchor?
852
-
853
- **CoHostStore** and **BattleStore** have internal heartbeat and timeout detection mechanisms. If one party exits abnormally, the other will receive notifications through events such as **onCoHostUserLeft** or **onUserExitBattle**. Based on these events, you can handle the UI, for example, prompt "The other party has gone offline" and end the interaction.
854
-
855
- ### Why Can PK Score Only Be Updated Via REST API?
856
-
857
- Because REST API can satisfy both the **security, real-timeness, and scalability** requirements of PK scores at the same time:
858
- - **Tamper-proof and fair**: Authentication + data validation is required. Each update can trace the source (such as gift actions) to prevent manual score changes or cheating, guaranteeing fair competitive gaming.
859
-
860
- - **Multi-end real-time synchronization**: Use a standardized format (such as JSON) to quickly connect the gift, PK, and show systems, ensuring real-time consistency of scores for anchors, audience, and backend with no latency.
861
-
862
- - **Flexible rule adaptation**: Just modify the backend configuration (such as adjusting the score corresponding to gifts or bonus points) to adapt to business changes, with no need to modify the frontend, reducing iteration cost.
863
-
864
- ### How to Manage the Lifecycle and Event of Custom Views Added Via `VideoWidgetBuilder`?
865
-
866
- **LiveCoreWidget** automatically manages the addition and removal of views returned by `coHostWidgetBuilder`, `battleWidgetBuilder`, and `battleContainerWidgetBuilder` callbacks, with no need for manual processing. If necessary to handle user interaction (such as click event) in custom views, just add the corresponding event when creating the view.