@tencentcloud/sdk-mcp 1.3.8 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (503) hide show
  1. package/index.js +1 -1
  2. package/index.js.map +1 -1
  3. package/package.json +2 -2
  4. package/resource/doc/{tuicallkit/android/faq.md → callkit/faq/android-faq.md} +75 -308
  5. package/resource/doc/{tuicallkit/faq/common/error_code.md → callkit/faq/common/error-code.md} +2 -2
  6. package/resource/doc/{tuicallkit/flutter/faq.md → callkit/faq/flutter-faq.md} +83 -315
  7. package/resource/doc/{tuicallkit/iOS/faq.md → callkit/faq/ios-faq.md} +76 -313
  8. package/resource/doc/{tuicallkit/react/faq.md → callkit/faq/web-faq.md} +78 -311
  9. package/resource/doc/callkit/preset/android/api.md +330 -0
  10. package/resource/doc/callkit/preset/android/integration.md +530 -0
  11. package/resource/doc/callkit/preset/flutter/api.md +401 -0
  12. package/resource/doc/{tuicallkit → callkit/preset}/flutter/integration.md +53 -273
  13. package/resource/doc/callkit/preset/ios/api.md +282 -0
  14. package/resource/doc/{tuicallkit/iOS → callkit/preset/ios}/integration.md +39 -120
  15. package/resource/doc/callkit/preset/react/api.md +600 -0
  16. package/resource/doc/{tuicallkit → callkit/preset}/react/integration.md +6 -6
  17. package/resource/doc/callkit/preset/vue/api.md +600 -0
  18. package/resource/doc/{tuicallkit → callkit/preset}/vue/integration.md +5 -5
  19. package/resource/doc/{chatuikit → chatkit}/android/faq.md +29 -37
  20. package/resource/doc/{chatuikit → chatkit}/android/features/theme.md +22 -166
  21. package/resource/doc/chatkit/android/integration.md +498 -0
  22. package/resource/doc/chatkit/faq/android_sdk/client-api.md +280 -0
  23. package/resource/doc/{chatuikit → chatkit}/faq/common/product.md +4 -17
  24. package/resource/doc/{chatuikit → chatkit}/faq/common/server.md +1 -2
  25. package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +183 -0
  26. package/resource/doc/{chatuikit → chatkit}/faq/flutter_sdk/faq.md +3 -3
  27. package/resource/doc/chatkit/faq/ios_sdk/client-api.md +279 -0
  28. package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/error_code.md +1 -1
  29. package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/faq.md +4 -4
  30. package/resource/doc/{chatuikit → chatkit}/flutter/features/theme.md +22 -166
  31. package/resource/doc/{chatuikit → chatkit}/flutter/integration.md +20 -95
  32. package/resource/doc/{chatuikit/iOS → chatkit/ios}/faq.md +29 -37
  33. package/resource/doc/{chatuikit/iOS → chatkit/ios}/features/theme.md +27 -176
  34. package/resource/doc/{chatuikit/iOS → chatkit/ios}/integration.md +78 -280
  35. package/resource/doc/{chatuikit/vue → chatkit/react}/components/avatar.md +0 -1
  36. package/resource/doc/{chatuikit → chatkit}/react/components/chat-header.md +7 -12
  37. package/resource/doc/{chatuikit → chatkit}/react/components/chat-setting.md +10 -17
  38. package/resource/doc/{chatuikit → chatkit}/react/components/chat.md +1 -1
  39. package/resource/doc/{chatuikit → chatkit}/react/components/component-list.md +0 -1
  40. package/resource/doc/{chatuikit → chatkit}/react/components/contact-list.md +122 -703
  41. package/resource/doc/chatkit/react/components/conversation-actions.md +174 -0
  42. package/resource/doc/chatkit/react/components/conversation-list.md +333 -0
  43. package/resource/doc/chatkit/react/components/conversation-preview.md +116 -0
  44. package/resource/doc/chatkit/react/components/conversation-search.md +57 -0
  45. package/resource/doc/{chatuikit → chatkit}/react/components/message-input.md +36 -186
  46. package/resource/doc/{chatuikit → chatkit}/react/components/message-list.md +21 -113
  47. package/resource/doc/chatkit/react/components/search.md +282 -0
  48. package/resource/doc/{chatuikit → chatkit}/react/components/tuikit.md +5 -26
  49. package/resource/doc/{chatuikit → chatkit}/react/integration.md +37 -104
  50. package/resource/doc/{chatuikit/react → chatkit/vue}/components/avatar.md +0 -1
  51. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-header.md +7 -13
  52. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-setting.md +13 -18
  53. package/resource/doc/{chatuikit → chatkit}/vue/components/chat.md +1 -2
  54. package/resource/doc/{chatuikit → chatkit}/vue/components/component-list.md +0 -1
  55. package/resource/doc/chatkit/vue/components/contact-list.md +271 -0
  56. package/resource/doc/chatkit/vue/components/conversation-actions.md +228 -0
  57. package/resource/doc/{chatuikit → chatkit}/vue/components/conversation-list.md +42 -316
  58. package/resource/doc/chatkit/vue/components/conversation-preview.md +213 -0
  59. package/resource/doc/chatkit/vue/components/conversation-search.md +50 -0
  60. package/resource/doc/{chatuikit → chatkit}/vue/components/message-input.md +1 -23
  61. package/resource/doc/{chatuikit → chatkit}/vue/components/message-list.md +23 -134
  62. package/resource/doc/{chatuikit → chatkit}/vue/components/search.md +73 -640
  63. package/resource/doc/chatkit/vue/components/tuikit.md +45 -0
  64. package/resource/doc/{chatuikit → chatkit}/vue/components/userpicker.md +4 -4
  65. package/resource/doc/{chatuikit → chatkit}/vue/faq.md +1 -1
  66. package/resource/doc/{chatuikit → chatkit}/vue/integration.md +53 -121
  67. package/resource/doc/livekit/core-sdk/live/android/api-reference/AudioEffectStore.md +283 -0
  68. package/resource/doc/livekit/core-sdk/live/android/api-reference/BarrageStore.md +148 -0
  69. package/resource/doc/livekit/core-sdk/live/android/api-reference/BattleStore.md +316 -0
  70. package/resource/doc/livekit/core-sdk/live/android/api-reference/CameraView.md +57 -0
  71. package/resource/doc/livekit/core-sdk/live/android/api-reference/CoGuestStore.md +419 -0
  72. package/resource/doc/livekit/core-sdk/live/android/api-reference/CoHostStore.md +325 -0
  73. package/resource/doc/livekit/core-sdk/live/android/api-reference/DeviceStore.md +436 -0
  74. package/resource/doc/livekit/core-sdk/live/android/api-reference/GiftStore.md +165 -0
  75. package/resource/doc/livekit/core-sdk/live/android/api-reference/LikeStore.md +49 -0
  76. package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveAudienceStore.md +239 -0
  77. package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveCoreView.md +74 -0
  78. package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveSeatStore.md +417 -0
  79. package/resource/doc/livekit/core-sdk/live/android/api-reference/LoginStore.md +207 -0
  80. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audience-list.md +17 -88
  81. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audio-effect.md +34 -192
  82. package/resource/doc/livekit/{live → core-sdk/live}/android/live-barrage.md +26 -139
  83. package/resource/doc/livekit/{live → core-sdk/live}/android/live-base-beauty.md +16 -99
  84. package/resource/doc/livekit/{live → core-sdk/live}/android/live-co-guest-interaction.md +54 -161
  85. package/resource/doc/livekit/{live → core-sdk/live}/android/live-gift.md +75 -455
  86. package/resource/doc/livekit/{live → core-sdk/live}/android/live-host-interaction.md +91 -338
  87. package/resource/doc/livekit/{live → core-sdk/live}/android/live-integration.md +108 -492
  88. package/resource/doc/livekit/{live → core-sdk/live}/android/live-live-list.md +27 -165
  89. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/AudioEffectStore.md +279 -0
  90. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BarrageStore.md +158 -0
  91. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BaseBeautyStore.md +155 -0
  92. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BattleStore.md +304 -0
  93. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoGuestStore.md +394 -0
  94. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoHostStore.md +303 -0
  95. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/DeviceStore.md +410 -0
  96. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/GiftStore.md +160 -0
  97. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LikeStore.md +51 -0
  98. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveAudienceStore.md +231 -0
  99. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveCoreView.md +143 -0
  100. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveSeatStore.md +375 -0
  101. package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LoginStore.md +170 -0
  102. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audience-list.md +13 -91
  103. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audio-effect.md +34 -177
  104. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-barrage.md +18 -102
  105. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-base-beauty.md +24 -164
  106. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-co-guest-interaction.md +56 -161
  107. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-gift.md +66 -460
  108. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-host-interaction.md +117 -364
  109. package/resource/doc/livekit/core-sdk/live/flutter/live-integration.md +687 -0
  110. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-live-list.md +22 -161
  111. package/resource/doc/livekit/core-sdk/live/ios/api-reference/AudioEffectStore.md +287 -0
  112. package/resource/doc/livekit/core-sdk/live/ios/api-reference/BarrageStore.md +165 -0
  113. package/resource/doc/livekit/core-sdk/live/ios/api-reference/BaseBeautyStore.md +143 -0
  114. package/resource/doc/livekit/core-sdk/live/ios/api-reference/BattleStore.md +298 -0
  115. package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoGuestStore.md +349 -0
  116. package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoHostStore.md +297 -0
  117. package/resource/doc/livekit/core-sdk/live/ios/api-reference/DeviceStore.md +471 -0
  118. package/resource/doc/livekit/core-sdk/live/ios/api-reference/GiftStore.md +179 -0
  119. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LikeStore.md +49 -0
  120. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveAudienceStore.md +238 -0
  121. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveCoreView.md +74 -0
  122. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveSeatStore.md +412 -0
  123. package/resource/doc/livekit/core-sdk/live/ios/api-reference/LoginStore.md +173 -0
  124. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audience-list.md +23 -96
  125. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audio-effect.md +33 -195
  126. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-barrage.md +35 -150
  127. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-base-beauty.md +20 -105
  128. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-co-guest-interaction.md +35 -140
  129. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-gift.md +77 -457
  130. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-host-interaction.md +70 -317
  131. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-integration.md +90 -473
  132. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-live-list.md +28 -163
  133. package/resource/doc/livekit/core-sdk/voice/android/voice-audience-list.md +264 -0
  134. package/resource/doc/livekit/core-sdk/voice/android/voice-audio-effect.md +226 -0
  135. package/resource/doc/livekit/core-sdk/voice/android/voice-barrage.md +456 -0
  136. package/resource/doc/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +539 -0
  137. package/resource/doc/livekit/core-sdk/voice/android/voice-gift.md +453 -0
  138. package/resource/doc/livekit/core-sdk/voice/android/voice-host-interaction.md +516 -0
  139. package/resource/doc/livekit/core-sdk/voice/android/voice-integration.md +509 -0
  140. package/resource/doc/livekit/core-sdk/voice/android/voice-room-list.md +365 -0
  141. package/resource/doc/livekit/core-sdk/voice/flutter/voice-audience-list.md +259 -0
  142. package/resource/doc/livekit/core-sdk/voice/flutter/voice-audio-effect.md +596 -0
  143. package/resource/doc/livekit/core-sdk/voice/flutter/voice-barrage.md +494 -0
  144. package/resource/doc/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +516 -0
  145. package/resource/doc/livekit/core-sdk/voice/flutter/voice-gift.md +418 -0
  146. package/resource/doc/livekit/core-sdk/voice/flutter/voice-integration.md +563 -0
  147. package/resource/doc/livekit/core-sdk/voice/flutter/voice-room-list.md +709 -0
  148. package/resource/doc/livekit/core-sdk/voice/ios/voice-audience-list.md +262 -0
  149. package/resource/doc/livekit/core-sdk/voice/ios/voice-audio-effect.md +211 -0
  150. package/resource/doc/livekit/core-sdk/voice/ios/voice-barrage.md +414 -0
  151. package/resource/doc/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +492 -0
  152. package/resource/doc/livekit/core-sdk/voice/ios/voice-gift.md +405 -0
  153. package/resource/doc/livekit/core-sdk/voice/ios/voice-host-interaction.md +611 -0
  154. package/resource/doc/livekit/core-sdk/voice/ios/voice-integration.md +478 -0
  155. package/resource/doc/livekit/core-sdk/voice/ios/voice-room-list.md +336 -0
  156. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-audience-list.md +234 -0
  157. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-audio-effect.md +218 -0
  158. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-barrage.md +376 -0
  159. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-co-guest-interaction.md +648 -0
  160. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-gift.md +362 -0
  161. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-integration.md +323 -0
  162. package/resource/doc/livekit/core-sdk/voice/uni-app/voice-room-list.md +470 -0
  163. package/resource/doc/livekit/faq/common/{error_code.md → error-code.md} +2 -3
  164. package/resource/doc/livekit/preset/live/vue/api-reference/index.md +780 -0
  165. package/resource/doc/livekit/preset/live/vue/components/barrage.md +291 -0
  166. package/resource/doc/livekit/{live → preset/live}/vue/components/co-guest-panel.md +9 -48
  167. package/resource/doc/livekit/{live → preset/live}/vue/components/live-audience-list.md +27 -145
  168. package/resource/doc/livekit/{live → preset/live}/vue/components/live-scene-panel.md +13 -76
  169. package/resource/doc/livekit/{live → preset/live}/vue/components/live-view.md +33 -224
  170. package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +211 -0
  171. package/resource/doc/livekit/preset/live/vue/faq.md +1 -0
  172. package/resource/doc/livekit/preset/live/vue/live-list-integration.md +244 -0
  173. package/resource/doc/livekit/preset/live/vue/live-player-desk-integration.md +301 -0
  174. package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +307 -0
  175. package/resource/doc/livekit/preset/live/vue/live-pusher-integration.md +754 -0
  176. package/resource/doc/roomkit/android/features/call-user-to-room.md +234 -0
  177. package/resource/doc/roomkit/android/features/room-participant-state.md +850 -0
  178. package/resource/doc/roomkit/android/features/room-state.md +358 -0
  179. package/resource/doc/roomkit/android/features/schedule-room.md +336 -0
  180. package/resource/doc/roomkit/android/integration.md +433 -0
  181. package/resource/doc/roomkit/{common/error_code.md → faq/common/error-code.md} +1 -1
  182. package/resource/doc/roomkit/flutter/features/call-user-to-room.md +228 -0
  183. package/resource/doc/roomkit/flutter/features/room-participant-state.md +796 -0
  184. package/resource/doc/roomkit/flutter/features/room-state.md +324 -0
  185. package/resource/doc/roomkit/flutter/features/schedule-room.md +324 -0
  186. package/resource/doc/roomkit/flutter/integration.md +405 -0
  187. package/resource/doc/roomkit/ios/features/call-user-to-room.md +226 -0
  188. package/resource/doc/roomkit/ios/features/room-participant-state.md +821 -0
  189. package/resource/doc/roomkit/ios/features/room-state.md +320 -0
  190. package/resource/doc/roomkit/ios/features/schedule-room.md +318 -0
  191. package/resource/doc/roomkit/ios/integration.md +384 -0
  192. package/resource/doc/roomkit/vue/faq.md +1 -0
  193. package/resource/doc/roomkit/vue/features/call-user-to-room.md +17 -53
  194. package/resource/doc/roomkit/vue/features/device-detection.md +30 -48
  195. package/resource/doc/roomkit/vue/features/device-state.md +24 -44
  196. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +13 -36
  197. package/resource/doc/roomkit/vue/features/room-chat.md +31 -89
  198. package/resource/doc/roomkit/vue/features/room-participant-state.md +28 -50
  199. package/resource/doc/roomkit/vue/features/room-state.md +25 -36
  200. package/resource/doc/roomkit/vue/features/room-view.md +30 -127
  201. package/resource/doc/roomkit/vue/features/schedule-room.md +9 -40
  202. package/resource/doc/roomkit/vue/features/screen-share.md +22 -90
  203. package/resource/doc/roomkit/vue/features/virtual-background.md +13 -34
  204. package/resource/doc/roomkit/vue/integration.md +118 -282
  205. package/resource/doc/rtcengine/faq/common/userSig.md +17 -141
  206. package/resource/doc/rtcengine/faq/web/web.md +15 -22
  207. package/resource/doc/rtcengine/web/api.md +17 -21
  208. package/resource/doc/rtcengine/web/how_to_integrated_web_sdk.md +4 -10
  209. package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +4 -8
  210. package/resource/doc/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +3 -3
  211. package/resource/doc/rtcengine/web/plugin/21-advanced-auto-play-policy.md +2 -3
  212. package/resource/doc/rtcengine/web/plugin/22-advanced-audio-mixer.md +6 -6
  213. package/resource/doc/rtcengine/web/plugin/23-advanced-support-detection.md +2 -2
  214. package/resource/doc/rtcengine/web/plugin/24-advanced-network-quality.md +2 -4
  215. package/resource/doc/rtcengine/web/plugin/25-advanced-device-change.md +1 -2
  216. package/resource/doc/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +2 -6
  217. package/resource/doc/rtcengine/web/plugin/27-advanced-small-stream.md +13 -14
  218. package/resource/doc/rtcengine/web/plugin/28-advanced-beauty.md +10 -90
  219. package/resource/doc/rtcengine/web/plugin/31-advanced-plugins-overview.md +5 -8
  220. package/resource/doc/rtcengine/web/plugin/34-advanced-proxy.md +31 -35
  221. package/resource/doc/rtcengine/web/plugin/35-advanced-ai-denoiser.md +0 -2
  222. package/resource/doc/rtcengine/web/plugin/36-advanced-virtual-background.md +7 -49
  223. package/resource/doc/rtcengine/web/plugin/37-advanced-voice-changer.md +1 -1
  224. package/resource/doc/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -3
  225. package/resource/doc/rtcengine/web/plugin/40-advanced-video-mixer.md +20 -20
  226. package/resource/doc/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +1 -1
  227. package/resource/doc/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +4 -4
  228. package/resource/doc/rtcengine/web/plugin/43-advanced-face-detection.md +3 -3
  229. package/resource/doc/trtc/C++/ITRTCCloud.md +718 -2847
  230. package/resource/doc/trtc/C++/ITRTCStatistics.md +53 -308
  231. package/resource/doc/trtc/C++/ITXAudioEffectManager.md +207 -1041
  232. package/resource/doc/trtc/C++/ITXDeviceManager.md +127 -768
  233. package/resource/doc/trtc/C++/TRTCCloudCallback.md +634 -2259
  234. package/resource/doc/trtc/C++/TRTCTypeDef.md +726 -3465
  235. package/resource/doc/trtc/C++/TXLiteAVCode.md +117 -916
  236. package/resource/doc/trtc/android/TRTCCloud.md +638 -2612
  237. package/resource/doc/trtc/android/TRTCCloudDef.md +769 -3697
  238. package/resource/doc/trtc/android/TRTCCloudListener.md +609 -2070
  239. package/resource/doc/trtc/android/TRTCStatistics.md +48 -278
  240. package/resource/doc/trtc/android/TXAudioEffectManager.md +207 -1049
  241. package/resource/doc/trtc/android/TXBeautyManager.md +127 -704
  242. package/resource/doc/trtc/android/TXDeviceManager.md +51 -318
  243. package/resource/doc/trtc/android/TXLiteAVCode.md +115 -900
  244. package/resource/doc/trtc/iOS/TRTCCloud.md +726 -2930
  245. package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +580 -2099
  246. package/resource/doc/trtc/iOS/TRTCStatistics.md +48 -278
  247. package/resource/doc/trtc/iOS/TXAudioEffectManager.md +179 -896
  248. package/resource/doc/trtc/iOS/TXBeautyManager.md +128 -710
  249. package/resource/doc/trtc/iOS/TXDeviceManager.md +129 -772
  250. package/resource/doc/trtc/iOS/TXLiteAVCode.md +117 -915
  251. package/resource/doc/trtc/iOS/TXLiveSDKTypeDef.md +747 -3559
  252. package/server.js +1 -5
  253. package/server.js.map +1 -1
  254. package/tools/call/get_callkit_api.js +32 -0
  255. package/tools/call/get_callkit_api.js.map +1 -0
  256. package/tools/call/get_native_call_uikit_integration.js +34 -0
  257. package/tools/call/get_native_call_uikit_integration.js.map +1 -0
  258. package/tools/call/{get-web-call-integration.js → get_web_call_uikit_integration.js} +13 -8
  259. package/tools/call/get_web_call_uikit_integration.js.map +1 -0
  260. package/tools/chat/get_native_chat_uikit_feature_detail.js +34 -0
  261. package/tools/chat/get_native_chat_uikit_feature_detail.js.map +1 -0
  262. package/tools/chat/get_native_chat_uikit_integration.js +45 -0
  263. package/tools/chat/get_native_chat_uikit_integration.js.map +1 -0
  264. package/tools/chat/get_web_chat_uikit_component_detail.js +34 -0
  265. package/tools/chat/get_web_chat_uikit_component_detail.js.map +1 -0
  266. package/tools/chat/get_web_chat_uikit_integration.js +45 -0
  267. package/tools/chat/get_web_chat_uikit_integration.js.map +1 -0
  268. package/tools/common/get_faq.js +265 -0
  269. package/tools/common/get_faq.js.map +1 -0
  270. package/tools/common/{get-usersig.js → get_usersig.js} +6 -3
  271. package/tools/common/get_usersig.js.map +1 -0
  272. package/tools/common/present_framework_choice.js +63 -0
  273. package/tools/common/present_framework_choice.js.map +1 -0
  274. package/tools/definitions/get_callkit_api_def.js +28 -0
  275. package/tools/definitions/get_callkit_api_def.js.map +1 -0
  276. package/tools/definitions/get_faq_def.js +18 -19
  277. package/tools/definitions/get_faq_def.js.map +1 -1
  278. package/tools/definitions/get_native_call_uikit_integration_def.js +15 -18
  279. package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
  280. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +31 -0
  281. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +1 -0
  282. package/tools/definitions/get_native_chat_uikit_integration_def.js +16 -19
  283. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
  284. package/tools/definitions/get_native_livekit_core_features_def.js +33 -0
  285. package/tools/definitions/get_native_livekit_core_features_def.js.map +1 -0
  286. package/tools/definitions/get_native_livekit_core_integration_def.js +33 -0
  287. package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -0
  288. package/tools/definitions/get_native_trtc_sdk_docs_def.js +32 -0
  289. package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +1 -0
  290. package/tools/definitions/get_usersig_def.js +17 -24
  291. package/tools/definitions/get_usersig_def.js.map +1 -1
  292. package/tools/definitions/get_web_call_uikit_integration_def.js +15 -7
  293. package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
  294. package/tools/definitions/get_web_chat_uikit_component_detail_def.js +17 -49
  295. package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +1 -1
  296. package/tools/definitions/get_web_chat_uikit_integration_def.js +16 -19
  297. package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
  298. package/tools/definitions/get_web_live_uikit_integration_def.js +13 -18
  299. package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
  300. package/tools/definitions/get_web_livekit_api_def.js +27 -0
  301. package/tools/definitions/get_web_livekit_api_def.js.map +1 -0
  302. package/tools/definitions/get_web_livekit_component_detail_def.js +29 -0
  303. package/tools/definitions/get_web_livekit_component_detail_def.js.map +1 -0
  304. package/tools/definitions/get_web_room_uikit_integration_def.js +13 -30
  305. package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
  306. package/tools/definitions/get_web_roomkit_feature_detail_def.js +30 -0
  307. package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +1 -0
  308. package/tools/definitions/get_web_trtc_sdk_api_def.js +25 -0
  309. package/tools/definitions/get_web_trtc_sdk_api_def.js.map +1 -0
  310. package/tools/definitions/get_web_trtc_sdk_integration_def.js +25 -0
  311. package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +1 -0
  312. package/tools/definitions/get_web_trtc_sdk_plugin_def.js +25 -0
  313. package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +1 -0
  314. package/tools/definitions/present_framework_choice_def.js +23 -12
  315. package/tools/definitions/present_framework_choice_def.js.map +1 -1
  316. package/tools/index.js +47 -59
  317. package/tools/index.js.map +1 -1
  318. package/tools/live/get_native_livekit_core_features.js +65 -0
  319. package/tools/live/get_native_livekit_core_features.js.map +1 -0
  320. package/tools/live/get_native_livekit_core_integration.js +59 -0
  321. package/tools/live/get_native_livekit_core_integration.js.map +1 -0
  322. package/tools/live/get_web_live_uikit_integration.js +48 -0
  323. package/tools/live/get_web_live_uikit_integration.js.map +1 -0
  324. package/tools/live/get_web_livekit_api.js +32 -0
  325. package/tools/live/get_web_livekit_api.js.map +1 -0
  326. package/tools/live/get_web_livekit_component_detail.js +34 -0
  327. package/tools/live/get_web_livekit_component_detail.js.map +1 -0
  328. package/tools/room/{get-web-room-integration.js → get_web_room_uikit_integration.js} +13 -14
  329. package/tools/room/get_web_room_uikit_integration.js.map +1 -0
  330. package/tools/room/{get-web-room-feature-detail.js → get_web_roomkit_feature_detail.js} +30 -31
  331. package/tools/room/get_web_roomkit_feature_detail.js.map +1 -0
  332. package/tools/rtcengine/get_web_trtc_sdk_api.js +31 -0
  333. package/tools/rtcengine/get_web_trtc_sdk_api.js.map +1 -0
  334. package/tools/rtcengine/get_web_trtc_sdk_integration.js +31 -0
  335. package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +1 -0
  336. package/tools/rtcengine/get_web_trtc_sdk_plugin.js +31 -0
  337. package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +1 -0
  338. package/tools/trtc/get_native_trtc_sdk_docs.js +73 -0
  339. package/tools/trtc/get_native_trtc_sdk_docs.js.map +1 -0
  340. package/utils/generate-structured-result.js +61 -17
  341. package/utils/generate-structured-result.js.map +1 -1
  342. package/utils/report-cls-client.js +12 -1
  343. package/utils/report-cls-client.js.map +1 -1
  344. package/utils/report-es-client.js +1 -1
  345. package/resource/doc/chatuikit/android/integration.md +0 -612
  346. package/resource/doc/chatuikit/android/workflow.md +0 -0
  347. package/resource/doc/chatuikit/faq/android_sdk/client-api.md +0 -1376
  348. package/resource/doc/chatuikit/faq/flutter_sdk/client-api.md +0 -860
  349. package/resource/doc/chatuikit/faq/ios_sdk/client-api.md +0 -1371
  350. package/resource/doc/chatuikit/flutter/workflow.md +0 -816
  351. package/resource/doc/chatuikit/iOS/workflow.md +0 -0
  352. package/resource/doc/chatuikit/react/components/conversation-list.md +0 -765
  353. package/resource/doc/chatuikit/react/components/search.md +0 -885
  354. package/resource/doc/chatuikit/react/create-group.md +0 -22
  355. package/resource/doc/chatuikit/react/init.md +0 -25
  356. package/resource/doc/chatuikit/react/workflow.md +0 -254
  357. package/resource/doc/chatuikit/uniapp-app/faq.md +0 -0
  358. package/resource/doc/chatuikit/uniapp-app/integration.md +0 -619
  359. package/resource/doc/chatuikit/uniapp-app/workflow.md +0 -576
  360. package/resource/doc/chatuikit/vue/components/contact-list.md +0 -679
  361. package/resource/doc/chatuikit/vue/components/tuikit.md +0 -110
  362. package/resource/doc/chatuikit/vue/create-group.md +0 -26
  363. package/resource/doc/chatuikit/vue/init.md +0 -35
  364. package/resource/doc/chatuikit/vue/workflow.md +0 -395
  365. package/resource/doc/livekit/live/android/workflow.md +0 -322
  366. package/resource/doc/livekit/live/flutter/live-integration.md +0 -1029
  367. package/resource/doc/livekit/live/flutter/workflow.md +0 -353
  368. package/resource/doc/livekit/live/ios/workflow.md +0 -352
  369. package/resource/doc/livekit/live/vue/components/barrage.md +0 -615
  370. package/resource/doc/livekit/live/vue/components/stream-mixer.md +0 -442
  371. package/resource/doc/livekit/live/vue/faq.md +0 -0
  372. package/resource/doc/livekit/live/vue/live-list-integration.md +0 -195
  373. package/resource/doc/livekit/live/vue/live-player-desk-integration.md +0 -293
  374. package/resource/doc/livekit/live/vue/live-player-h5-integration.md +0 -381
  375. package/resource/doc/livekit/live/vue/live-pusher-integration.md +0 -598
  376. package/resource/doc/livekit/live/vue/states/live-state.md +0 -2656
  377. package/resource/doc/livekit/live/vue/workflow.md +0 -219
  378. package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +0 -334
  379. package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +0 -434
  380. package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +0 -685
  381. package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +0 -712
  382. package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +0 -284
  383. package/resource/doc/native_live/android/V2TXLivePusherObserver_api_android.md +0 -849
  384. package/resource/doc/native_live/android/V2TXLivePusher_api_android.md +0 -1046
  385. package/resource/doc/native_live/flutter/V2TXLiveCode_api_flutter.md +0 -460
  386. package/resource/doc/native_live/flutter/V2TXLiveDef_api_flutter.md +0 -558
  387. package/resource/doc/native_live/flutter/V2TXLivePlayerObserver_api_flutter.md +0 -879
  388. package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +0 -668
  389. package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +0 -456
  390. package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +0 -332
  391. package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +0 -748
  392. package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +0 -328
  393. package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +0 -505
  394. package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +0 -507
  395. package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +0 -676
  396. package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +0 -284
  397. package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +0 -820
  398. package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +0 -1065
  399. package/resource/doc/roomkit/vue/features/workflow.md +0 -553
  400. package/resource/doc/roomkit/vue/workflow.md +0 -487
  401. package/resource/doc/tuicallkit/android/integration.md +0 -302
  402. package/resource/doc/tuicallkit/android/workflow.md +0 -0
  403. package/resource/doc/tuicallkit/faq/android_sdk/call-observer-api.md +0 -786
  404. package/resource/doc/tuicallkit/faq/android_sdk/callkit-api.md +0 -663
  405. package/resource/doc/tuicallkit/faq/flutter_sdk/call-define-api.md +0 -932
  406. package/resource/doc/tuicallkit/faq/flutter_sdk/call-observer-api.md +0 -926
  407. package/resource/doc/tuicallkit/faq/flutter_sdk/callkit-api.md +0 -452
  408. package/resource/doc/tuicallkit/faq/ios_sdk/call-observer-api.md +0 -779
  409. package/resource/doc/tuicallkit/faq/ios_sdk/callkit-api.md +0 -635
  410. package/resource/doc/tuicallkit/flutter/workflow.md +0 -331
  411. package/resource/doc/tuicallkit/react/api.md +0 -1512
  412. package/resource/doc/tuicallkit/vue/api.md +0 -1512
  413. package/resource/doc/tuicallkit/vue/faq.md +0 -986
  414. package/tools/call/get-native-call-integration.js +0 -43
  415. package/tools/call/get-native-call-integration.js.map +0 -1
  416. package/tools/call/get-web-call-api.js +0 -27
  417. package/tools/call/get-web-call-api.js.map +0 -1
  418. package/tools/call/get-web-call-integration.js.map +0 -1
  419. package/tools/chat/get-native-chat-feature-detail.js +0 -30
  420. package/tools/chat/get-native-chat-feature-detail.js.map +0 -1
  421. package/tools/chat/get-native-chat-integration.js +0 -45
  422. package/tools/chat/get-native-chat-integration.js.map +0 -1
  423. package/tools/chat/get-web-chat-component-detail.js +0 -31
  424. package/tools/chat/get-web-chat-component-detail.js.map +0 -1
  425. package/tools/chat/get-web-chat-integration.js +0 -45
  426. package/tools/chat/get-web-chat-integration.js.map +0 -1
  427. package/tools/chat/get-web-chat-uikit-init.js +0 -28
  428. package/tools/chat/get-web-chat-uikit-init.js.map +0 -1
  429. package/tools/chat/get-web-create-group-doc.js +0 -28
  430. package/tools/chat/get-web-create-group-doc.js.map +0 -1
  431. package/tools/common/get-faq.js +0 -91
  432. package/tools/common/get-faq.js.map +0 -1
  433. package/tools/common/get-usersig.js.map +0 -1
  434. package/tools/common/present-framework-choice.js +0 -16
  435. package/tools/common/present-framework-choice.js.map +0 -1
  436. package/tools/common/record-prompt.js +0 -55
  437. package/tools/common/record-prompt.js.map +0 -1
  438. package/tools/common/record-result.js +0 -60
  439. package/tools/common/record-result.js.map +0 -1
  440. package/tools/definitions/get_native_chat_feature_detail_def.js +0 -32
  441. package/tools/definitions/get_native_chat_feature_detail_def.js.map +0 -1
  442. package/tools/definitions/get_native_live_api_def.js +0 -22
  443. package/tools/definitions/get_native_live_api_def.js.map +0 -1
  444. package/tools/definitions/get_native_live_uikit_extra_features_def.js +0 -109
  445. package/tools/definitions/get_native_live_uikit_extra_features_def.js.map +0 -1
  446. package/tools/definitions/get_native_live_uikit_integration_def.js +0 -50
  447. package/tools/definitions/get_native_live_uikit_integration_def.js.map +0 -1
  448. package/tools/definitions/get_native_live_uikit_interaction_def.js +0 -115
  449. package/tools/definitions/get_native_live_uikit_interaction_def.js.map +0 -1
  450. package/tools/definitions/get_trtc_native_api_def.js +0 -17
  451. package/tools/definitions/get_trtc_native_api_def.js.map +0 -1
  452. package/tools/definitions/get_web_call_uikit_api_def.js +0 -23
  453. package/tools/definitions/get_web_call_uikit_api_def.js.map +0 -1
  454. package/tools/definitions/get_web_chat_uikit_init_def.js +0 -23
  455. package/tools/definitions/get_web_chat_uikit_init_def.js.map +0 -1
  456. package/tools/definitions/get_web_create_group_doc_def.js +0 -18
  457. package/tools/definitions/get_web_create_group_doc_def.js.map +0 -1
  458. package/tools/definitions/get_web_live_state_detail_def.js +0 -19
  459. package/tools/definitions/get_web_live_state_detail_def.js.map +0 -1
  460. package/tools/definitions/get_web_live_uikit_component_detail_def.js +0 -27
  461. package/tools/definitions/get_web_live_uikit_component_detail_def.js.map +0 -1
  462. package/tools/definitions/get_web_room_feature_detail_def.js +0 -95
  463. package/tools/definitions/get_web_room_feature_detail_def.js.map +0 -1
  464. package/tools/definitions/record_prompt_def.js +0 -53
  465. package/tools/definitions/record_prompt_def.js.map +0 -1
  466. package/tools/definitions/record_result_def.js +0 -30
  467. package/tools/definitions/record_result_def.js.map +0 -1
  468. package/tools/live/get-native-live-uikit-integration.js +0 -101
  469. package/tools/live/get-native-live-uikit-integration.js.map +0 -1
  470. package/tools/live/get-web-live-component-detail.js +0 -31
  471. package/tools/live/get-web-live-component-detail.js.map +0 -1
  472. package/tools/live/get-web-live-state-detail.js +0 -31
  473. package/tools/live/get-web-live-state-detail.js.map +0 -1
  474. package/tools/live/get-web-live-uikit-integration.js +0 -52
  475. package/tools/live/get-web-live-uikit-integration.js.map +0 -1
  476. package/tools/live/get_native_live_uikit_extra_features.js +0 -105
  477. package/tools/live/get_native_live_uikit_extra_features.js.map +0 -1
  478. package/tools/live/get_native_live_uikit_interaction.js +0 -101
  479. package/tools/live/get_native_live_uikit_interaction.js.map +0 -1
  480. package/tools/native_live/get-native-live-api.js +0 -31
  481. package/tools/native_live/get-native-live-api.js.map +0 -1
  482. package/tools/room/get-web-room-feature-detail.js.map +0 -1
  483. package/tools/room/get-web-room-integration.js.map +0 -1
  484. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js +0 -28
  485. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js.map +0 -1
  486. package/tools/rtcengine/get-trtc-sdk-faq.js +0 -32
  487. package/tools/rtcengine/get-trtc-sdk-faq.js.map +0 -1
  488. package/tools/rtcengine/get-trtc-web-sdk-api.js +0 -28
  489. package/tools/rtcengine/get-trtc-web-sdk-api.js.map +0 -1
  490. package/tools/rtcengine/get-trtc-web-sdk-faq.js +0 -30
  491. package/tools/rtcengine/get-trtc-web-sdk-faq.js.map +0 -1
  492. package/tools/rtcengine/get-trtc-web-sdk-integration.js +0 -29
  493. package/tools/rtcengine/get-trtc-web-sdk-integration.js.map +0 -1
  494. package/tools/rtcengine/get-trtc-web-sdk-plugin.js +0 -45
  495. package/tools/rtcengine/get-trtc-web-sdk-plugin.js.map +0 -1
  496. package/tools/trtc/get-trtc-native-api.js +0 -31
  497. package/tools/trtc/get-trtc-native-api.js.map +0 -1
  498. package/utils/handle-component-name.js +0 -33
  499. package/utils/handle-component-name.js.map +0 -1
  500. /package/resource/doc/{rtcengine/web → callkit/core-sdk}/.gitkeep +0 -0
  501. /package/resource/doc/{chatuikit → chatkit}/faq/common/server_error_code.md +0 -0
  502. /package/resource/doc/{chatuikit → chatkit}/flutter/faq.md +0 -0
  503. /package/resource/doc/{chatuikit → chatkit}/react/faq.md +0 -0
@@ -0,0 +1,516 @@
1
+ `AtomicXCore` 提供了 `CoHostStore` 和 `BattleStore` 两个模块,分别用于处理**跨房连线**和 **PK 对战**。本文将指导您如何组合使用这两个工具,完成语聊房场景下的连线和 PK 功能的开发。
2
+
3
+ ## 核心概念
4
+
5
+ 在开始集成之前,我们先通过下表了解一下跨房连线与 PK 相关的几个核心概念。
6
+ | **核心概念** | **类型** | **核心职责与描述** |
7
+ | --- | --- | --- |
8
+ | **CoHostStore** | 抽象类 | 管理主播间的连线生命周期,提供连线功能 API(requestHostConnection、acceptHostConnection)。 |
9
+ | **BattleStore** | 抽象类 | 管理跨房 PK 对战的信令与数据,包括 PK 状态。 |
10
+ | **LiveListStore** | 单例 | 提供直播房间列表的拉取功能 (`fetchLiveList`),用于获取可连线的其他房间信息。 |
11
+ | **LiveSeatStore** | 抽象类 | 管理房间内所有麦位状态(包括连线状态下的跨房间麦位),用于监听用户上下麦、麦克风等状态。 |
12
+ | **CoHostLayoutTemplate** | 枚举 | 连线时,用于指定房间麦位布局模板,例如 `HOST_STATIC_VOICE_6V6`。 |
13
+ | **BattleConfig** | 数据模型 | 配置 PK 的详细信息,例如 PK 时长 (`duration`) 和是否需要二次响应 (`needResponse`)。 |
14
+
15
+ ## 前提条件
16
+
17
+ 请参考 快速接入 集成 **AtomicXCore SDK**,并完成 **主播开播** 和 **观众观看** 的功能实现。
18
+
19
+ ## 主播发起一场连线
20
+
21
+ ### 步骤1:查看正在开播中的主播列表
22
+
23
+ 主播需要拉取当前的直播间列表,从中选择一个目标房间的主播发起连线或 PK。
24
+
25
+ **实现方式: **调用 `LiveListStore.shared().fetchLiveList`。
26
+
27
+ > **注意:**
28
+ >
29
+ > - 如果接口返回的列表中没有找到您想要的直播间,您需要检查开播时设置的 `TUILiveInfo` 的 `isPublicVisible` 字段是否为 `true`;
30
+ > - 该接口支持分页继续拉取,您可以使用接口 `onSuccess` 回调中 `cursor` 作为下一次续拉的游标,如果返回的 `cursor` 为空,则表示直播间列表已全部拉取完;
31
+ > - 为了性能考虑,建议您将pageCount设置为 20。
32
+
33
+ ``` java
34
+ import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
35
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
36
+
37
+ fun fetchLiveListForCoHost() {
38
+ val cursor = "" // 首次拉取,游标为空
39
+ val pageCount = 20 // 每次拉取 20 条数据
40
+
41
+ LiveListStore.shared().fetchLiveList(cursor, pageCount, object : CompletionHandler {
42
+ override fun onSuccess() {
43
+ println("直播间列表拉取成功")
44
+ // 拉取到的直播列表会更新到 LiveListStore.liveState.liveList 中,在拉取成功之后,更新连线邀请面板推荐的用户。
45
+ // inviteAdapter.submitList(LiveListStore.liveState.liveList))
46
+ }
47
+ override fun onFailure(code: Int, desc: String) {
48
+ println("邀请发送失败: $code")
49
+ }
50
+ })
51
+ }
52
+ ```
53
+
54
+ ### 步骤2:主播发起连线邀请
55
+
56
+ 您可以在主播选中指定的主播连线时,调用 `CoHostStore` 的 `requestHostConnection` 接口发起连线邀请。
57
+
58
+ > **说明:**
59
+ >
60
+ > 1. AtomicXCore最大支持 **9** 个房间互相连线,每个房间支持 **50 **路用户。
61
+ > 2. 该接口支持批量发起邀请,您可以按需使用;单个直播间是否邀请成功,您需要监听 `onSuccess` 回调并解析 `code` 枚举值是否为 `0`;
62
+ > 3. 该接口支持扩展字段,邀请发送成功后,该字段会随着 `CoHostListener` 的 `onCoHostRequestReceived` 回调通知给对端主播,您可以在这个字段中携带 “**是否立即开始 PK 对战**” 等信息,来实现自己的特殊业务。
63
+
64
+ ``` java
65
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostLayoutTemplate
66
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
67
+
68
+ // 从 LiveListStore 中获取的目标房间 ID
69
+ val targetHostLiveID = "target_host_room_id"
70
+ // 使用 6v6 语聊房静态布局为例
71
+ val layoutTemplate = CoHostLayoutTemplate.HOST_STATIC_VOICE_6V6
72
+ val timeout = 10 // 邀请超时时间(秒)
73
+ val extraInfo = "" // 额外的业务信息,用于“直连 PK”时携带标识
74
+
75
+ coHostStore.requestHostConnection(
76
+ targetHostLiveID,
77
+ layoutTemplate,
78
+ timeout,
79
+ extraInfo,
80
+ object : CompletionHandler {
81
+ override fun onSuccess() {
82
+ println("连线请求发送成功,等待对方处理...")
83
+ }
84
+ override fun onFailure(code: Int, desc: String) {
85
+ println("邀请发送失败: $desc")
86
+ }
87
+ }
88
+ )
89
+ ```
90
+
91
+ ### 步骤3:对端主播收到连线邀请
92
+
93
+ 当跨房连线邀请发送成功后,对端主播会收到 `CoHostListener` 的 `onCoHostRequestReceived` 回调,对端主播可以监听这个回调并在 UI 上提醒 “主播邀请您参与连线互动”。
94
+ ``` java
95
+ private val coHostListener = object : CoHostListener() {
96
+ override fun onCoHostRequestReceived(
97
+ inviter: SeatUserInfo, extensionInfo: String
98
+ ){
99
+ // 您可以在这里 UI 弹框提醒用户
100
+ }
101
+ }
102
+ ```
103
+
104
+ ### 步骤4:对端主播处理连线邀请
105
+
106
+ 对端主播在步骤 3 的 UI 面板中可以点击同意或者拒绝按钮时,您可以调用 `CoHostStore` 的 `acceptHostConnection` 和 `rejectHostConnection` 接口分别同意或拒绝连线邀请。
107
+ ``` java
108
+ private val coHostStore = CoHostStore.create(liveID)
109
+
110
+ private val coHostListener = object : CoHostListener() {
111
+ override fun onCoHostRequestReceived(
112
+ inviter: SeatUserInfo, extensionInfo: String
113
+ ){
114
+ // 接受连线
115
+ coHostStore.acceptHostConnection(fromHostLiveID, null)
116
+ //拒绝连线
117
+ // coHostStore.rejectHostConnection(fromHostLiveID, null)
118
+
119
+ }
120
+ }
121
+
122
+ ```
123
+
124
+ ### 步骤5:建立连线后,渲染 UI 布局
125
+
126
+ 连线成功后,UI 应当监听 `CoHostStore.coHostState.coHostStatus` 状态流,以及 `LiveSeatStore.liveSeatState.seatList` 状态流,以动态切换和刷新麦位布局。
127
+ ``` java
128
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostStatus
129
+ import io.trtc.tuikit.atomicxcore.api.live.LiveSeatStore
130
+ import io.trtc.tuikit.atomicxcore.api.live.SeatInfo
131
+ import kotlinx.coroutines.flow.collect
132
+
133
+ // 1. 获取 LiveSeatStore 实例 (通常在房间初始化时获取)
134
+ private val liveSeatStore = LiveSeatStore.create(liveID)
135
+
136
+ // 2. 监听连线状态
137
+ coHostStore.coHostState.coHostStatus.collect { status ->
138
+ if (status == CoHostStatus.CONNECTED) {
139
+ // 连线成功,开始渲染连线布局(例如 6v6)
140
+ }
141
+ }
142
+
143
+ // 3. 监听麦位信息,用于刷新连线布局中所有用户的头像、静音状态等
144
+ liveSeatStore.liveSeatState.seatList.collect { seatList: List<SeatInfo> ->
145
+ // 布局刷新逻辑:
146
+ // 根据 seatInfo.userInfo.liveID 区分本房间用户和对方房间用户。
147
+ // 根据 seatInfo.userInfo.microphoneStatus 刷新麦克风静音图标。
148
+ }
149
+ ```
150
+
151
+ ### 步骤6:连线过程中继续邀请其他主播参与连线
152
+
153
+ AtomicXCore 支持您在已经连线的过程中,还可以继续邀请其他主播参与连线,您可以继续调用`requestHostConnection`邀请新的主播参与连线。
154
+ ``` java
155
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostLayoutTemplate
156
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
157
+
158
+ // 从 LiveListStore 中获取的目标房间 ID
159
+ val targetHostLiveID = "target_host_room_id"
160
+ // 使用 6v6 语聊房静态布局为例
161
+ val layoutTemplate = CoHostLayoutTemplate.HOST_STATIC_VOICE_6V6
162
+ val timeout = 10 // 邀请超时时间(秒)
163
+ val extraInfo = "" // 额外的业务信息,用于“直连 PK”时携带标识
164
+
165
+ coHostStore.requestHostConnection(
166
+ targetHostLiveID,
167
+ layoutTemplate,
168
+ timeout,
169
+ extraInfo,
170
+ object : CompletionHandler {
171
+ override fun onSuccess() {
172
+ println("连线请求发送成功,等待对方处理...")
173
+ }
174
+ override fun onFailure(code: Int, desc: String) {
175
+ println("邀请发送失败: $desc")
176
+ }
177
+ }
178
+ )
179
+ ```
180
+
181
+ ### 步骤7:退出连线
182
+
183
+ 当您想退出连线,您可以调用 `CoHostStore` 的 `exitHostConnection` 接口退出;当您退出连线后,还处于连线状态的其他主播的 `LiveSeatStore` 的 `seatList` 会更新。其他还处于连线状态的主播重新根据麦位渲染 UI 即可。
184
+ ``` java
185
+ public void onExitButtonClicked() {
186
+ val coHostStore = CoHostStore.create(liveInfo.liveID)
187
+ coHostStore.exitHostConnection(object : CompletionHandler{
188
+ override fun onSuccess(){
189
+
190
+ }
191
+ override fun onFailure(code: Int, desc: String){
192
+
193
+ }
194
+ })
195
+ }
196
+ ```
197
+
198
+ ## 主播发起 PK
199
+
200
+ 主播发起 PK 支持两种主要业务流程,以满足不同直播互动需求。核心区别在于 PK 发起前房间的状态。
201
+ | **PK 模式** | **房间状态(PK 前)** | **房间状态(PK 后)** |
202
+ | --- | --- | --- |
203
+ | **场景一:主播在连线后再发起 PK** | 双方**已连线** | 恢复连线状态 |
204
+ | **场景二:主播发起带 PK 模式的连线** | 双方**未连线** | 恢复连线状态 |
205
+
206
+ ### 场景一:主播在连线后再发起 PK
207
+
208
+ AtomicXCore 支持您在这些主播中发起限时的对战 PK。交互如下图,主要包含以下 UI 交互:
209
+ 1. 发起连线邀请,对端被邀请的主播接受连线邀请。
210
+
211
+ 2. 参与连线的主播,点击 PK 按钮发起一场限时的对战,可以通过主播收到的礼物数来判定对战的胜负。
212
+
213
+ 3. 对端主播可以弹框提醒,并提示是否加入PK,当被邀请的主播同意后对战即刻开始。
214
+
215
+ 4. PK 开始后,UI 进入对战状态,显示 PK 进度条;该进度条可以是主播收到的礼物数,也可以是收到的点赞数等业务数据。
216
+
217
+ 5. PK 到时间后会自动停止,并且展示胜方和败方,并进入惩罚时间。
218
+
219
+ 6. 当 PK 完全结束后又恢复到连线状态。
220
+
221
+ #### 步骤 1. 连线主播发起 PK 邀请
222
+
223
+ 当主播已经处于跨房连线时,可以在参与连线的主播之间发起一场限时 PK,`AtomicXCore` 支持您设置 PK 的时长、是否需要对端主播同意才开始 PK 以及发起 PK 时携带扩展信息。您可以调用 `BattleStore` 的 `requestBattle` 接口发起 PK 邀请。
224
+
225
+ > **说明:**
226
+ >
227
+ > 1. 当您不设置 `BattleConfig` 的 `duration` 字段时, PK 默认时长为 5 分钟;
228
+ > 2. 当您不需要对端主播同意时,您可以设置 `TUIBattleConfig` 的 `needResponse` 字段为 `false`,当邀请发出后 PK 会立即开始;
229
+ > 3. 当 `BattleConfig` 的 `needResponse` 字段为 `false` 时,`requestBattle` 接口的 `timeout` 字段必须设置为 0;
230
+ > 4. 当设置了超时时间后,如果对端主播在 timeout 时间内还未同意,当次的 PK 邀请会超时,主播和对端主播都会收到 `BattleListener` 的 `onBattleRequestTimeout` 回调;参与连线的所有主播依然可以继续发起下一场 PK。
231
+
232
+ ``` java
233
+ // 对方主播的 User ID
234
+ val targetUserID = "target_host_user_id"
235
+
236
+ val config = BattleConfig(
237
+ duration = 30, // PK 持续 30 秒
238
+ needResponse = true, // 需要对方响应
239
+ extensionInfo = ""
240
+ )
241
+
242
+ battleStore.requestBattle(
243
+ config,
244
+ listOf(targetUserID),
245
+ timeout = 10, // 10 秒内等待响应
246
+ completion = null
247
+ )
248
+ ```
249
+
250
+ #### 步骤 2. 对端主播收到 PK 邀请
251
+
252
+ 当 PK 请求成功发出后,对端主播会收到 `BattleListener` 的 `onBattleRequestReceived` 回调,您可以在这个回调中给对端主播的UI 提醒 “有人邀请您 PK”,您也可以通过该回调的 battleInfo 参数的 config 字段中的 needResponse 信息确认是否需要 UI 提醒,例如:
253
+ - 当 needResponse 为 false 时,您无需提醒,直接进入 PK 状态(详见步骤 3)。
254
+
255
+ - 当 needResponse 为 true 时,您可以弹框提醒 “有人邀请您 PK”,当对端主播点击同意后进入 PK 状态(详见步骤 3)。
256
+
257
+ ``` java
258
+ private val mBattleListener: BattleListener = object : BattleListener() {
259
+ override fun onBattleRequestReceived(
260
+ battleId: String,
261
+ inviter: SeatUserInfo,
262
+ invitee: SeatUserInfo,
263
+ ) {
264
+ super.onBattleRequestReceived(battleInfo, inviter, invitee)
265
+ // 邀请者的信息
266
+ val userId = inviter.userId
267
+ val userName = inviter.userName
268
+ // 是否需要响应
269
+ val needResponse = battleInfo.config.needResponse
270
+ }
271
+ }
272
+ ```
273
+
274
+ #### 步骤 3. 进入 PK 状态
275
+
276
+ 如下图,当主播监听到 `BattleListener` 的 `onBattleStarted` 回调之后,**可以在 UI 上渲染 PK 进度条**。
277
+ - 当 `needResponse` 设置为 `false`, 则当邀请成功发出后,会自动进入 PK 状态。
278
+
279
+ - 当 `needResponse` 设置为 `true`,则当被邀请的所有对端主播都调用 `BattleStore` 的 `acceptBattle` 接口同意后进入 PK 状态。
280
+
281
+ - 当 `needResponse` 设置为 `true`,若对端主播同意 PK,则已加入 PK 的主播会收到 `BattleListener` 的 `onUserJoinBattle` 回调。
282
+
283
+ - 进入 PK 状态之后,参与 PK 的所有主播均会收到 `BattleListener` 的 `onBattleStarted` 回调。
284
+
285
+ #### 步骤 4. 结束 PK 状态
286
+
287
+ 有以下两种方式可以结束 PK 状态。
288
+
289
+ ##### 1. PK 时间结束
290
+
291
+ 当发起 PK 时设置的 `BattleConfig` 中的 `duration` 到时间后,PK 会自动结束,所有参与 PK 的主播均会收到 `BattleListener` 的 `onBattleEnded` 回调;
292
+
293
+ ##### 2. 主动调用 exitBattle 结束 PK
294
+
295
+ 在 PK 过程中,参与 PK 的任一主播均可以调用 `BattleStore` 的 `exitBattle` 退出 PK,其他主播依然处于 PK 中不受影响,且会收到 `BattleListener` 的 `onUserExitBattle` 回调,您可以在这个回调中提醒 “有人退出 PK”;如果在 PK 的 `duration` 还未结束之前,其余人都主动调用 `BattleStore` 的 `exitBattle` 结束 PK 后,整个 PK 同样也会提前结束,最后一个 PK 主播也会收到`BattleListener` 的 `onUserExitBattle` 回调。
296
+ ``` java
297
+ val battleStore:BattleStore = BattleStore.create(liveID)
298
+ battleID = battleStore.battleState.currentBattleInfo.value?.battleID
299
+ battleStore.exitBattle(battleID, null)
300
+ ```
301
+
302
+ 当 PK 结束之后 (也即 `BattleListener` 的 `onBattleEnded` 回调触发时),您可以通过该回调在 UI 上展示 PK 结束,并区分出胜负(详见区分胜负章节)
303
+
304
+ > **说明:**
305
+ >
306
+ > - 在连线过程中发起的 PK,当 PK 结束后会自动恢复到跨房连线状态。
307
+ > - 如果您想在 PK 结束之后同步结束跨房连线,可以调用 `CoHostStore` 的 `exitHostConnection` 结束连线。
308
+
309
+ ### 场景二:主播发起带 PK 模式的连线
310
+
311
+ AtomicXCore 支持您在房间内直播时,直接发起 PK (中间不经历连线的交互过程),当 PK 结束后自动恢复到房间内直播状态。如下图所示:
312
+ 1. 主播在个人直播过程中,点击 PK 按钮,打开 UI 面板展示当前正在开播的主播列表(详见《主播发起一场连线》的步骤 1)。
313
+
314
+ 2. 主播选中其中一个主播,发起 PK 邀请。
315
+
316
+ 3. 对端主播收到邀请后,会在 UI 上提示 “有人向您发来 PK”;选择同意或拒绝连线邀请。
317
+
318
+ 4. 当对端主播同意后,自动进入 PK 状态,PK 过程中可以通过送礼或者点赞来计分。
319
+
320
+ 5. 当 PK 结束之后,根据 PK 过程中的积分来区分胜负。
321
+
322
+ > **说明:**
323
+ >
324
+
325
+ > 该功能需要同时使用 CoHostStore 和 BattleStore,并且借助 BattleConfig 的 needResponse 为 false 完成。
326
+ >
327
+
328
+ #### 步骤 1. 主播发起连线请求
329
+
330
+ 此处的步骤与 《主播发起一场连线》中的步骤 1 和步骤 2 相似。唯一的区别在于:主播发起连线请求时,通过`CoHostStore` 的 `requestConnection` 接口设置 `extensionInfo` 字段来标识当前的连线发起后需要同步发起 PK,用于对端主播 UI 提示信息的区分。
331
+
332
+ 例如:
333
+ - 当 `extensionInfo` 设置为 {"withPK:true"} 时,对端主播收到连线请求后 UI 提示 “主播向您发起 PK”。
334
+
335
+ - 当 `extensionInfo` 设置为 {"withPK:false"} 时,对端主播收到连线请求后 UI 提示 “主播邀请您参与跨房连线”。
336
+
337
+ ``` java
338
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostLayoutTemplate
339
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
340
+
341
+ // 从 LiveListStore 中获取的目标房间 ID
342
+ val targetHostLiveID = "target_host_room_id"
343
+ // 使用 6v6 语聊房静态布局为例
344
+ val layoutTemplate = CoHostLayoutTemplate.HOST_STATIC_VOICE_6V6
345
+ val timeout = 10 // 邀请超时时间(秒)
346
+ val extraInfo = "withPK:true" // 对端主播收到连线请求后 UI 提示 “主播向您发起 PK”
347
+
348
+ coHostStore.requestHostConnection(
349
+ targetHostLiveID,
350
+ layoutTemplate,
351
+ timeout,
352
+ extraInfo,
353
+ object : CompletionHandler {
354
+ override fun onSuccess() {
355
+ println("连线请求发送成功,等待对方处理...")
356
+ }
357
+ override fun onFailure(code: Int, desc: String) {
358
+ println("邀请发送失败: $desc")
359
+ }
360
+ }
361
+ )
362
+
363
+ ```
364
+
365
+ #### 步骤 2. 对端主播收到连线请求后,确认加入
366
+
367
+ 当跨房连线邀请发送成功后,对端主播会收到 `CoHostListener` 的 `onCoHostRequestReceived` 回调,对端主播可以监听这个回调并在 UI 上提醒 “主播邀请您参与连线互动”。
368
+ ``` java
369
+ private val coHostListener = object : CoHostListener() {
370
+ override fun onCoHostRequestReceived(
371
+ inviter: SeatUserInfo, extensionInfo: String
372
+ ){
373
+ // 您可以在这里 UI 弹框提醒用户
374
+ }
375
+ }
376
+ ```
377
+
378
+ 对端主播在步骤 3 的 UI 面板中可以点击同意或者拒绝按钮时,您可以调用 `CoHostStore` 的 `acceptHostConnection` 和 `rejectHostConnection` 接口分别同意或拒绝连线邀请。
379
+ ``` java
380
+ private val coHostStore = CoHostStore.create(liveID)
381
+
382
+ private val coHostListener = object : CoHostListener() {
383
+ override fun onCoHostRequestReceived(
384
+ inviter: SeatUserInfo, extensionInfo: String
385
+ ){
386
+ // 接受连线
387
+ coHostStore.acceptHostConnection(fromHostLiveID, null)
388
+ //拒绝连线
389
+ // coHostStore.rejectHostConnection(fromHostLiveID, null)
390
+
391
+ }
392
+ }
393
+ ```
394
+
395
+ #### 步骤 3. 主播监听到对端主播同意加入后,无感知发起 PK
396
+
397
+ 当主播监听到对端主播同意加入连线的通知后,会收到 `CoHostListener` 的 `onCoHostRequestReceived` 回调,此时可以在当前回调中立即调用 `BattleStore` 的 `requestBattle` 接口发起一场无需对端主播同意(也即 `TUIBattleConfig` 的 `needResponse` 为 `false`)的 PK。
398
+ ``` java
399
+ // 在接收方 CoHostListener 中处理:
400
+ override fun onCoHostRequestReceived(inviter: SeatUserInfo, extensionInfo: String) {
401
+ coHostStore.acceptHostConnection(inviter.liveID, null)
402
+
403
+ val directPKConfig = BattleConfig(
404
+ duration = 30,
405
+ needResponse = false, // 关键:无需对方二次同意
406
+ extensionInfo = ""
407
+ )
408
+ // 立即向连线发起方发起 PK
409
+ battleStore.requestBattle(
410
+ directPKConfig,
411
+ listOf(inviter.userID),
412
+ timeout = 0, // 无需等待响应
413
+ completion = null
414
+ )
415
+
416
+ }
417
+ ```
418
+
419
+ #### 步骤 4. 自动进入 PK 状态
420
+
421
+ 此步骤同《主播在连线后再发起 PK》的步骤 3相同,此处不再赘述。
422
+
423
+ ## PK 分数更新与胜负判断
424
+
425
+ ### 通过 REST API 实现 PK 分数更新
426
+
427
+ 通常在**直播主播 PK 场景**下,会将主播收到的礼物价值与 PK 数值挂钩(例如:观众送 "火箭" 礼物,主播 PK 分数增加 500 分),您可以通过我们的 REST API,轻松实现直播 PK 场景下的分数实时更新。
428
+
429
+ > **重要说明:**
430
+ >
431
+
432
+ > LiveKit 后台的 PK 分数系统采用纯数值计算和累加机制,所以您需要根据自身的运营策略和业务需求,调用更新接口前完成 PK 分数的计算,您可以参考以下的 PK 分数计算示例:
433
+ >
434
+ | 礼物类型 | 分数计算规则 | 示例 |
435
+ | --- | --- | --- |
436
+ | ​基础礼物​ | 礼物价值 × 5 | 10元礼物 → 50分 |
437
+ | ​中级礼物​ | 礼物价值 × 8 | 50元礼物 → 400分 |
438
+ | ​高级礼物​ | 礼物价值 × 12 | 100元礼物 → 1200分 |
439
+ | ​特效礼物​ | 固定高分数 | 520元礼物 → 1314分 |
440
+
441
+ #### REST API 调用流程
442
+
443
+ #### 关键流程说明
444
+ 1. ​**获取 PK 状态​**:
445
+
446
+ - 回调配置​:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
447
+
448
+ - 主动查询​:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
449
+
450
+ 2. **PK 分数计算**​:您的后台服务根据业务规则(例如上述示例),计算 PK 分数增量。
451
+
452
+ 3. **PK 分数更新​**:您的后台服务调用 修改 PK 分数 接口,向 LiveKit 后台更新 PK 分数。
453
+
454
+ 4. **LiveKit 后台 同步客户端**​:LiveKit 后台自动将更新后的 PK 分数同步到所有客户端。
455
+
456
+ #### 涉及的 REST API 接口
457
+ | 接口 | 功能描述 | 请求示例 |
458
+ | --- | --- | --- |
459
+ | 主动接口 - 查询 PK 状态 | 可根据此接口查询当前房间是否在 PK | 请求示例 |
460
+ | 主动接口 - 修改 PK 分数 | 将计算后的 PK 数值通过此接口更新 | 请求示例 |
461
+ | 回调配置 - PK 开始时回调 | 客户后台可以通过该回调及时知晓 PK 开启 | 回调示例 |
462
+ | 回调配置 - PK 结束时回调 | 客户后台可以通过该回调及时知晓 PK 结束 | 回调示例 |
463
+
464
+ ### 区分 PK 胜负
465
+
466
+ 通常在**主播 PK 场景**下,需将主播收到的礼物价值与 PK 分值挂钩(例如:观众送 “火箭” 礼物,主播 PK 分值增加 500 分),通过礼物互动提升 PK 竞技性与直播氛围。RoomEngine 的 PK 模块提供了 PK 分值的更新与广播系统,您只需要将观众送礼与之相关联即可。
467
+
468
+ 如上图所示,当您的计费系统检测到有观众送礼并且计费成功后,您可以调用 修改 PK 分数的 REST API 更新当前主播的 PK 分值。当主播的 PK 分值发生变化后,参与 PK 的直播间中的所有用户(包含主播和观众)的 `BattleState` 的 `battleScore` 均会发生改变。您可以在 `battleScore` 发生改变的时候,更新 PK 进度条中的分值。
469
+ ``` java
470
+ private fun observeBattleScore() {
471
+ val job = lifecycleScope.launch {
472
+ battleStore?.battleState?.battleScore?.collect { battleScore ->
473
+ // 您可以在此处更新 PK 进度条中的分值。
474
+ }
475
+ }
476
+ collectJobs.add(job)
477
+ }
478
+ ```
479
+
480
+ ## API 文档
481
+
482
+ 关于 `CoHostStore`、`BattleStore`、`LiveListStore` 和 `LiveSeatStore` 及其相关类的所有公开接口、属性和方法的详细信息,请参阅随 [**AtomicXCore**](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore) 框架的官方 API 文档。
483
+ | **Store/Component** | **功能描述** | **API 文档** |
484
+ | --- | --- | --- |
485
+ | **CoHostStore** | 直播视频流展示与交互的核心视图组件:负责视频流渲染和视图挂件处理,支持主播直播、观众连麦、主播连线等场景。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-co-host-store/index.html) |
486
+ | **BattleStore** | 直播间全生命周期管理:创建 / 加入 / 离开 / 销毁房间,查询房间列表,修改直播信息(名称、公告等),监听直播状态(例如被踢出、结束)。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-battle-store/index.html) |
487
+ | **LiveListStore** | 直播间全生命周期管理:查询房间列表,修改直播信息等。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-list-store/index.html) |
488
+ | **LiveSeatStore** | 麦位状态管理: 管理房间内所有麦位状态(包括连线状态下的跨房间麦位),用于监听用户上下麦、麦克风、麦位状态等信息。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-seat-store/index.html) |
489
+
490
+ ## 常见问题
491
+
492
+ #### 连线或 PK 时,最大支持的连线房间数量和用户数量限制是多少?
493
+
494
+ 按用户维度计算,最大支持9 个房间互相连线,每个房间支持 50 路用户。
495
+
496
+ #### 如何实现 PK 失败后的惩罚时间?
497
+
498
+ 您可以在收到 `BattleListener` 的 `onBattleEnded` 回调后,根据 `BattleState` 的 `battleScore` 来判别胜负。虽然此时 PK 业务结束,但连线依然处于进行中,您可以自定义 30 秒的时间用于惩罚环节,待 30 秒倒计时结束之后断开连线。
499
+
500
+ #### **为什么发起了连线邀请,对方却没收到?**
501
+ - 请检查 **targetHostLiveId** 是否正确,并且对方直播间处于正常开播状态。
502
+
503
+ - 检查网络连接是否通畅,邀请信令有30秒的默认超时时间。
504
+
505
+ #### 连线或 PK 过程中,一方主播网络断开或App崩溃了怎么办?
506
+
507
+ **CoHostStore** 和 **BattleStore** 内部都有心跳和超时检测机制。如果一方异常退出,另一方会通过 `onCoHostUserLeft` 或 `onUserExitBattle` 等事件收到通知,您可以根据这些事件来处理UI,例如提示"对方已掉线"并结束互动。
508
+
509
+ #### 为什么 PK 分数只能通过 REST API 更新?
510
+
511
+ 因为 REST API能同时满足 PK 分数的**安全性、实时性、扩展性**需求:
512
+ - **防篡改保公平**:需鉴权 + 数据校验,每笔更新可追溯来源(例如礼物行为),杜绝手动改分、刷分,保障竞技公平。
513
+
514
+ - **多端实时同步**:用标准化格式(例如 JSON)快速对接礼物、PK、展示系统,确保主播 / 观众 / 后台分数实时一致,无延迟。
515
+
516
+ - **灵活适配规则**:后端改配置(例如调整礼物对应分数、加成分数)即可适配业务变化,无需改前端,降低迭代成本。