@tencentcloud/sdk-mcp 1.3.9 → 1.4.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.
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/resource/doc/{tuicallkit/android/faq.md → callkit/faq/android-faq.md} +75 -308
- package/resource/doc/{tuicallkit/faq/common/error_code.md → callkit/faq/common/error-code.md} +2 -2
- package/resource/doc/{tuicallkit/flutter/faq.md → callkit/faq/flutter-faq.md} +83 -315
- package/resource/doc/{tuicallkit/iOS/faq.md → callkit/faq/ios-faq.md} +76 -313
- package/resource/doc/{tuicallkit/vue/faq.md → callkit/faq/web-faq.md} +78 -311
- package/resource/doc/callkit/preset/android/api.md +330 -0
- package/resource/doc/{tuicallkit → callkit/preset}/android/integration.md +63 -420
- package/resource/doc/callkit/preset/flutter/api.md +401 -0
- package/resource/doc/{tuicallkit → callkit/preset}/flutter/integration.md +53 -273
- package/resource/doc/callkit/preset/ios/api.md +282 -0
- package/resource/doc/{tuicallkit/iOS → callkit/preset/ios}/integration.md +39 -120
- package/resource/doc/callkit/preset/react/api.md +600 -0
- package/resource/doc/{tuicallkit → callkit/preset}/react/integration.md +6 -6
- package/resource/doc/callkit/preset/vue/api.md +600 -0
- package/resource/doc/{tuicallkit → callkit/preset}/vue/integration.md +5 -5
- package/resource/doc/{chatuikit → chatkit}/android/faq.md +29 -37
- package/resource/doc/{chatuikit → chatkit}/android/features/theme.md +22 -166
- package/resource/doc/{chatuikit → chatkit}/android/integration.md +30 -126
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +280 -0
- package/resource/doc/{chatuikit → chatkit}/faq/common/product.md +4 -17
- package/resource/doc/{chatuikit → chatkit}/faq/common/server.md +1 -2
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +183 -0
- package/resource/doc/{chatuikit → chatkit}/faq/flutter_sdk/faq.md +3 -3
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +279 -0
- package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/error_code.md +1 -1
- package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/faq.md +4 -4
- package/resource/doc/{chatuikit → chatkit}/flutter/features/theme.md +22 -166
- package/resource/doc/{chatuikit → chatkit}/flutter/integration.md +20 -95
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/faq.md +29 -37
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/features/theme.md +27 -176
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/integration.md +78 -280
- package/resource/doc/{chatuikit/vue → chatkit/react}/components/avatar.md +0 -1
- package/resource/doc/{chatuikit → chatkit}/react/components/chat-header.md +7 -12
- package/resource/doc/{chatuikit → chatkit}/react/components/chat-setting.md +10 -17
- package/resource/doc/{chatuikit → chatkit}/react/components/chat.md +1 -1
- package/resource/doc/{chatuikit → chatkit}/react/components/component-list.md +0 -1
- package/resource/doc/{chatuikit → chatkit}/react/components/contact-list.md +122 -703
- package/resource/doc/chatkit/react/components/conversation-actions.md +174 -0
- package/resource/doc/chatkit/react/components/conversation-list.md +333 -0
- package/resource/doc/chatkit/react/components/conversation-preview.md +116 -0
- package/resource/doc/chatkit/react/components/conversation-search.md +57 -0
- package/resource/doc/{chatuikit → chatkit}/react/components/message-input.md +36 -186
- package/resource/doc/{chatuikit → chatkit}/react/components/message-list.md +21 -113
- package/resource/doc/chatkit/react/components/search.md +282 -0
- package/resource/doc/{chatuikit → chatkit}/react/components/tuikit.md +5 -26
- package/resource/doc/{chatuikit → chatkit}/react/integration.md +37 -104
- package/resource/doc/{chatuikit/react → chatkit/vue}/components/avatar.md +0 -1
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat-header.md +7 -13
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat-setting.md +13 -18
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat.md +1 -2
- package/resource/doc/{chatuikit → chatkit}/vue/components/component-list.md +0 -1
- package/resource/doc/chatkit/vue/components/contact-list.md +271 -0
- package/resource/doc/chatkit/vue/components/conversation-actions.md +228 -0
- package/resource/doc/{chatuikit → chatkit}/vue/components/conversation-list.md +42 -316
- package/resource/doc/chatkit/vue/components/conversation-preview.md +213 -0
- package/resource/doc/chatkit/vue/components/conversation-search.md +50 -0
- package/resource/doc/{chatuikit → chatkit}/vue/components/message-input.md +1 -23
- package/resource/doc/{chatuikit → chatkit}/vue/components/message-list.md +23 -134
- package/resource/doc/{chatuikit → chatkit}/vue/components/search.md +73 -640
- package/resource/doc/chatkit/vue/components/tuikit.md +45 -0
- package/resource/doc/{chatuikit → chatkit}/vue/components/userpicker.md +4 -4
- package/resource/doc/{chatuikit → chatkit}/vue/faq.md +1 -1
- package/resource/doc/{chatuikit → chatkit}/vue/integration.md +53 -121
- package/resource/doc/livekit/core-sdk/live/android/api-reference/AudioEffectStore.md +283 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/BarrageStore.md +148 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/BattleStore.md +316 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CameraView.md +57 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CoGuestStore.md +419 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CoHostStore.md +325 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/DeviceStore.md +436 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/GiftStore.md +165 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LikeStore.md +49 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveAudienceStore.md +239 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveCoreView.md +74 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveSeatStore.md +417 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LoginStore.md +207 -0
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-audience-list.md +17 -88
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-audio-effect.md +34 -192
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-barrage.md +26 -139
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-base-beauty.md +16 -99
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-co-guest-interaction.md +54 -161
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-gift.md +75 -455
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-host-interaction.md +91 -338
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-integration.md +108 -492
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-live-list.md +27 -165
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/AudioEffectStore.md +279 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BarrageStore.md +158 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BaseBeautyStore.md +155 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BattleStore.md +304 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoGuestStore.md +394 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoHostStore.md +303 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/DeviceStore.md +410 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/GiftStore.md +160 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LikeStore.md +51 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveAudienceStore.md +231 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveCoreView.md +143 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveSeatStore.md +375 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LoginStore.md +170 -0
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audience-list.md +13 -91
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audio-effect.md +34 -177
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-barrage.md +18 -102
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-base-beauty.md +24 -164
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-co-guest-interaction.md +56 -161
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-gift.md +66 -460
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-host-interaction.md +117 -364
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-integration.md +160 -543
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-live-list.md +22 -161
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/AudioEffectStore.md +287 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BarrageStore.md +165 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BaseBeautyStore.md +143 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BattleStore.md +298 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoGuestStore.md +349 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoHostStore.md +297 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/DeviceStore.md +471 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/GiftStore.md +179 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LikeStore.md +49 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveAudienceStore.md +238 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveCoreView.md +74 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveSeatStore.md +412 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LoginStore.md +173 -0
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audience-list.md +23 -96
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audio-effect.md +33 -195
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-barrage.md +35 -150
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-base-beauty.md +20 -105
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-co-guest-interaction.md +35 -140
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-gift.md +77 -457
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-host-interaction.md +70 -317
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-integration.md +90 -473
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-live-list.md +28 -163
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-audience-list.md +17 -88
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-audio-effect.md +34 -192
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-barrage.md +26 -139
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-co-guest-interaction.md +53 -262
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-gift.md +75 -455
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-host-interaction.md +60 -272
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-integration.md +63 -440
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-room-list.md +23 -151
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-audience-list.md +13 -91
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-audio-effect.md +34 -177
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-barrage.md +18 -102
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-co-guest-interaction.md +44 -201
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-gift.md +66 -460
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-integration.md +57 -419
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-room-list.md +24 -157
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-audience-list.md +23 -96
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-audio-effect.md +33 -195
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-barrage.md +35 -150
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-co-guest-interaction.md +45 -254
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-gift.md +77 -457
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-host-interaction.md +52 -261
- package/resource/doc/livekit/core-sdk/voice/ios/voice-integration.md +478 -0
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-room-list.md +36 -167
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-audience-list.md +15 -45
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-audio-effect.md +23 -137
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-barrage.md +25 -131
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-co-guest-interaction.md +70 -366
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-gift.md +70 -424
- package/resource/doc/livekit/core-sdk/voice/uni-app/voice-integration.md +323 -0
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-room-list.md +24 -116
- package/resource/doc/livekit/faq/common/{error_code.md → error-code.md} +2 -3
- package/resource/doc/livekit/preset/live/vue/api-reference/index.md +780 -0
- package/resource/doc/livekit/preset/live/vue/components/barrage.md +291 -0
- package/resource/doc/livekit/{live → preset/live}/vue/components/co-guest-panel.md +9 -48
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-audience-list.md +27 -145
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-scene-panel.md +13 -76
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-view.md +33 -224
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +211 -0
- package/resource/doc/livekit/preset/live/vue/faq.md +1 -0
- package/resource/doc/livekit/preset/live/vue/live-list-integration.md +244 -0
- package/resource/doc/livekit/preset/live/vue/live-player-desk-integration.md +301 -0
- package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +307 -0
- package/resource/doc/livekit/preset/live/vue/live-pusher-integration.md +754 -0
- package/resource/doc/roomkit/android/features/call-user-to-room.md +234 -0
- package/resource/doc/roomkit/android/features/room-participant-state.md +850 -0
- package/resource/doc/roomkit/android/features/room-state.md +358 -0
- package/resource/doc/roomkit/android/features/schedule-room.md +336 -0
- package/resource/doc/roomkit/android/integration.md +433 -0
- package/resource/doc/roomkit/{common/error_code.md → faq/common/error-code.md} +1 -1
- package/resource/doc/roomkit/flutter/features/call-user-to-room.md +228 -0
- package/resource/doc/roomkit/flutter/features/room-participant-state.md +796 -0
- package/resource/doc/roomkit/flutter/features/room-state.md +324 -0
- package/resource/doc/roomkit/flutter/features/schedule-room.md +324 -0
- package/resource/doc/roomkit/flutter/integration.md +405 -0
- package/resource/doc/roomkit/ios/features/call-user-to-room.md +226 -0
- package/resource/doc/roomkit/ios/features/room-participant-state.md +821 -0
- package/resource/doc/roomkit/ios/features/room-state.md +320 -0
- package/resource/doc/roomkit/ios/features/schedule-room.md +318 -0
- package/resource/doc/roomkit/ios/integration.md +384 -0
- package/resource/doc/roomkit/vue/faq.md +1 -0
- package/resource/doc/roomkit/vue/features/call-user-to-room.md +17 -53
- package/resource/doc/roomkit/vue/features/device-detection.md +30 -48
- package/resource/doc/roomkit/vue/features/device-state.md +24 -44
- package/resource/doc/roomkit/vue/features/free-beauty-panel.md +13 -36
- package/resource/doc/roomkit/vue/features/room-chat.md +31 -89
- package/resource/doc/roomkit/vue/features/room-participant-state.md +28 -50
- package/resource/doc/roomkit/vue/features/room-state.md +25 -36
- package/resource/doc/roomkit/vue/features/room-view.md +30 -127
- package/resource/doc/roomkit/vue/features/schedule-room.md +9 -40
- package/resource/doc/roomkit/vue/features/screen-share.md +22 -90
- package/resource/doc/roomkit/vue/features/virtual-background.md +13 -34
- package/resource/doc/roomkit/vue/integration.md +21 -80
- package/resource/doc/rtcengine/faq/common/userSig.md +17 -141
- package/resource/doc/rtcengine/faq/web/web.md +15 -22
- package/resource/doc/rtcengine/web/api.md +17 -21
- package/resource/doc/rtcengine/web/how_to_integrated_web_sdk.md +4 -10
- package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +4 -8
- package/resource/doc/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +3 -3
- package/resource/doc/rtcengine/web/plugin/21-advanced-auto-play-policy.md +2 -3
- package/resource/doc/rtcengine/web/plugin/22-advanced-audio-mixer.md +6 -6
- package/resource/doc/rtcengine/web/plugin/23-advanced-support-detection.md +2 -2
- package/resource/doc/rtcengine/web/plugin/24-advanced-network-quality.md +2 -4
- package/resource/doc/rtcengine/web/plugin/25-advanced-device-change.md +1 -2
- package/resource/doc/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +2 -6
- package/resource/doc/rtcengine/web/plugin/27-advanced-small-stream.md +13 -14
- package/resource/doc/rtcengine/web/plugin/28-advanced-beauty.md +10 -90
- package/resource/doc/rtcengine/web/plugin/31-advanced-plugins-overview.md +5 -8
- package/resource/doc/rtcengine/web/plugin/34-advanced-proxy.md +31 -35
- package/resource/doc/rtcengine/web/plugin/35-advanced-ai-denoiser.md +0 -2
- package/resource/doc/rtcengine/web/plugin/36-advanced-virtual-background.md +7 -49
- package/resource/doc/rtcengine/web/plugin/37-advanced-voice-changer.md +1 -1
- package/resource/doc/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -3
- package/resource/doc/rtcengine/web/plugin/40-advanced-video-mixer.md +20 -20
- package/resource/doc/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +1 -1
- package/resource/doc/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +4 -4
- package/resource/doc/rtcengine/web/plugin/43-advanced-face-detection.md +3 -3
- package/resource/doc/trtc/C++/ITRTCCloud.md +718 -2847
- package/resource/doc/trtc/C++/ITRTCStatistics.md +53 -308
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +207 -1041
- package/resource/doc/trtc/C++/ITXDeviceManager.md +127 -768
- package/resource/doc/trtc/C++/TRTCCloudCallback.md +634 -2259
- package/resource/doc/trtc/C++/TRTCTypeDef.md +726 -3465
- package/resource/doc/trtc/C++/TXLiteAVCode.md +117 -916
- package/resource/doc/trtc/android/TRTCCloud.md +638 -2612
- package/resource/doc/trtc/android/TRTCCloudDef.md +769 -3697
- package/resource/doc/trtc/android/TRTCCloudListener.md +609 -2070
- package/resource/doc/trtc/android/TRTCStatistics.md +48 -278
- package/resource/doc/trtc/android/TXAudioEffectManager.md +207 -1049
- package/resource/doc/trtc/android/TXBeautyManager.md +127 -704
- package/resource/doc/trtc/android/TXDeviceManager.md +51 -318
- package/resource/doc/trtc/android/TXLiteAVCode.md +115 -900
- package/resource/doc/trtc/iOS/TRTCCloud.md +726 -2930
- package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +580 -2099
- package/resource/doc/trtc/iOS/TRTCStatistics.md +48 -278
- package/resource/doc/trtc/iOS/TXAudioEffectManager.md +179 -896
- package/resource/doc/trtc/iOS/TXBeautyManager.md +128 -710
- package/resource/doc/trtc/iOS/TXDeviceManager.md +129 -772
- package/resource/doc/trtc/iOS/TXLiteAVCode.md +117 -915
- package/resource/doc/trtc/iOS/TXLiveSDKTypeDef.md +747 -3559
- package/server.js +1 -5
- package/server.js.map +1 -1
- package/tools/call/get_callkit_api.js +32 -0
- package/tools/call/get_callkit_api.js.map +1 -0
- package/tools/call/get_native_call_uikit_integration.js +34 -0
- package/tools/call/get_native_call_uikit_integration.js.map +1 -0
- package/tools/call/{get-web-call-integration.js → get_web_call_uikit_integration.js} +13 -8
- package/tools/call/get_web_call_uikit_integration.js.map +1 -0
- package/tools/chat/get_native_chat_uikit_feature_detail.js +34 -0
- package/tools/chat/get_native_chat_uikit_feature_detail.js.map +1 -0
- package/tools/chat/get_native_chat_uikit_integration.js +45 -0
- package/tools/chat/get_native_chat_uikit_integration.js.map +1 -0
- package/tools/chat/get_web_chat_uikit_component_detail.js +34 -0
- package/tools/chat/get_web_chat_uikit_component_detail.js.map +1 -0
- package/tools/chat/get_web_chat_uikit_integration.js +45 -0
- package/tools/chat/get_web_chat_uikit_integration.js.map +1 -0
- package/tools/common/get_faq.js +265 -0
- package/tools/common/get_faq.js.map +1 -0
- package/tools/common/{get-usersig.js → get_usersig.js} +6 -3
- package/tools/common/get_usersig.js.map +1 -0
- package/tools/common/present_framework_choice.js +63 -0
- package/tools/common/present_framework_choice.js.map +1 -0
- package/tools/common/record_skill_session.js +58 -0
- package/tools/common/record_skill_session.js.map +1 -0
- package/tools/definitions/get_callkit_api_def.js +28 -0
- package/tools/definitions/get_callkit_api_def.js.map +1 -0
- package/tools/definitions/get_faq_def.js +18 -19
- package/tools/definitions/get_faq_def.js.map +1 -1
- package/tools/definitions/get_native_call_uikit_integration_def.js +15 -34
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +31 -0
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +1 -0
- package/tools/definitions/get_native_chat_uikit_integration_def.js +16 -41
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_livekit_core_features_def.js +33 -0
- package/tools/definitions/get_native_livekit_core_features_def.js.map +1 -0
- package/tools/definitions/get_native_livekit_core_integration_def.js +33 -0
- package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -0
- package/tools/definitions/get_native_trtc_sdk_docs_def.js +32 -0
- package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +1 -0
- package/tools/definitions/get_usersig_def.js +17 -24
- package/tools/definitions/get_usersig_def.js.map +1 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js +15 -7
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js +17 -49
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js +16 -19
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +13 -18
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_livekit_api_def.js +27 -0
- package/tools/definitions/get_web_livekit_api_def.js.map +1 -0
- package/tools/definitions/get_web_livekit_component_detail_def.js +29 -0
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +1 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +13 -46
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +30 -0
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_api_def.js +25 -0
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +25 -0
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +25 -0
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +23 -12
- package/tools/definitions/present_framework_choice_def.js.map +1 -1
- package/tools/definitions/record_skill_session_def.js +31 -0
- package/tools/definitions/record_skill_session_def.js.map +1 -0
- package/tools/index.js +49 -61
- package/tools/index.js.map +1 -1
- package/tools/live/get_native_livekit_core_features.js +65 -0
- package/tools/live/get_native_livekit_core_features.js.map +1 -0
- package/tools/live/get_native_livekit_core_integration.js +59 -0
- package/tools/live/get_native_livekit_core_integration.js.map +1 -0
- package/tools/live/get_web_live_uikit_integration.js +48 -0
- package/tools/live/get_web_live_uikit_integration.js.map +1 -0
- package/tools/live/get_web_livekit_api.js +32 -0
- package/tools/live/get_web_livekit_api.js.map +1 -0
- package/tools/live/get_web_livekit_component_detail.js +34 -0
- package/tools/live/get_web_livekit_component_detail.js.map +1 -0
- package/tools/room/{get-web-room-integration.js → get_web_room_uikit_integration.js} +13 -14
- package/tools/room/get_web_room_uikit_integration.js.map +1 -0
- package/tools/room/{get-web-room-feature-detail.js → get_web_roomkit_feature_detail.js} +30 -31
- package/tools/room/get_web_roomkit_feature_detail.js.map +1 -0
- package/tools/rtcengine/get_web_trtc_sdk_api.js +31 -0
- package/tools/rtcengine/get_web_trtc_sdk_api.js.map +1 -0
- package/tools/rtcengine/get_web_trtc_sdk_integration.js +31 -0
- package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +1 -0
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js +31 -0
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +1 -0
- package/tools/trtc/get_native_trtc_sdk_docs.js +73 -0
- package/tools/trtc/get_native_trtc_sdk_docs.js.map +1 -0
- package/utils/generate-structured-result.js +61 -17
- package/utils/generate-structured-result.js.map +1 -1
- package/utils/report-cls-client.js +21 -1
- package/utils/report-cls-client.js.map +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/doc/chatuikit/android/workflow.md +0 -713
- package/resource/doc/chatuikit/faq/android_sdk/client-api.md +0 -1376
- package/resource/doc/chatuikit/faq/flutter_sdk/client-api.md +0 -860
- package/resource/doc/chatuikit/faq/ios_sdk/client-api.md +0 -1371
- package/resource/doc/chatuikit/flutter/workflow.md +0 -816
- package/resource/doc/chatuikit/iOS/workflow.md +0 -0
- package/resource/doc/chatuikit/react/components/conversation-list.md +0 -765
- package/resource/doc/chatuikit/react/components/search.md +0 -885
- package/resource/doc/chatuikit/react/create-group.md +0 -22
- package/resource/doc/chatuikit/react/init.md +0 -25
- package/resource/doc/chatuikit/react/workflow.md +0 -254
- package/resource/doc/chatuikit/uniapp-app/faq.md +0 -0
- package/resource/doc/chatuikit/uniapp-app/integration.md +0 -619
- package/resource/doc/chatuikit/uniapp-app/workflow.md +0 -576
- package/resource/doc/chatuikit/vue/components/contact-list.md +0 -679
- package/resource/doc/chatuikit/vue/components/tuikit.md +0 -110
- package/resource/doc/chatuikit/vue/create-group.md +0 -26
- package/resource/doc/chatuikit/vue/init.md +0 -35
- package/resource/doc/chatuikit/vue/workflow.md +0 -395
- package/resource/doc/livekit/live/android/workflow.md +0 -322
- package/resource/doc/livekit/live/flutter/workflow.md +0 -353
- package/resource/doc/livekit/live/ios/workflow.md +0 -352
- package/resource/doc/livekit/live/vue/components/barrage.md +0 -615
- package/resource/doc/livekit/live/vue/components/stream-mixer.md +0 -442
- package/resource/doc/livekit/live/vue/faq.md +0 -0
- package/resource/doc/livekit/live/vue/live-list-integration.md +0 -195
- package/resource/doc/livekit/live/vue/live-player-desk-integration.md +0 -293
- package/resource/doc/livekit/live/vue/live-player-h5-integration.md +0 -381
- package/resource/doc/livekit/live/vue/live-pusher-integration.md +0 -598
- package/resource/doc/livekit/live/vue/states/live-state.md +0 -2656
- package/resource/doc/livekit/live/vue/workflow.md +0 -219
- package/resource/doc/livekit/voice/android/workflow.md +0 -333
- package/resource/doc/livekit/voice/flutter/workflow.md +0 -359
- package/resource/doc/livekit/voice/ios/voice-integration.md +0 -853
- package/resource/doc/livekit/voice/ios/workflow.md +0 -358
- package/resource/doc/livekit/voice/uni-app/voice-integration.md +0 -613
- package/resource/doc/livekit/voice/uni-app/workflow.md +0 -369
- package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +0 -334
- package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +0 -434
- package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +0 -685
- package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +0 -712
- package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +0 -284
- package/resource/doc/native_live/android/V2TXLivePusherObserver_api_android.md +0 -849
- package/resource/doc/native_live/android/V2TXLivePusher_api_android.md +0 -1046
- package/resource/doc/native_live/flutter/V2TXLiveCode_api_flutter.md +0 -460
- package/resource/doc/native_live/flutter/V2TXLiveDef_api_flutter.md +0 -558
- package/resource/doc/native_live/flutter/V2TXLivePlayerObserver_api_flutter.md +0 -879
- package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +0 -668
- package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +0 -456
- package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +0 -332
- package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +0 -748
- package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +0 -328
- package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +0 -505
- package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +0 -507
- package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +0 -676
- package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +0 -284
- package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +0 -820
- package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +0 -1065
- package/resource/doc/roomkit/vue/features/workflow.md +0 -553
- package/resource/doc/roomkit/vue/workflow.md +0 -733
- package/resource/doc/tuicallkit/android/workflow.md +0 -432
- package/resource/doc/tuicallkit/faq/android_sdk/call-observer-api.md +0 -786
- package/resource/doc/tuicallkit/faq/android_sdk/callkit-api.md +0 -663
- package/resource/doc/tuicallkit/faq/flutter_sdk/call-define-api.md +0 -932
- package/resource/doc/tuicallkit/faq/flutter_sdk/call-observer-api.md +0 -926
- package/resource/doc/tuicallkit/faq/flutter_sdk/callkit-api.md +0 -452
- package/resource/doc/tuicallkit/faq/ios_sdk/call-observer-api.md +0 -779
- package/resource/doc/tuicallkit/faq/ios_sdk/callkit-api.md +0 -635
- package/resource/doc/tuicallkit/flutter/workflow.md +0 -331
- package/resource/doc/tuicallkit/react/api.md +0 -1512
- package/resource/doc/tuicallkit/react/faq.md +0 -986
- package/resource/doc/tuicallkit/vue/api.md +0 -1512
- package/tools/call/get-native-call-integration.js +0 -43
- package/tools/call/get-native-call-integration.js.map +0 -1
- package/tools/call/get-web-call-api.js +0 -27
- package/tools/call/get-web-call-api.js.map +0 -1
- package/tools/call/get-web-call-integration.js.map +0 -1
- package/tools/chat/get-native-chat-feature-detail.js +0 -30
- package/tools/chat/get-native-chat-feature-detail.js.map +0 -1
- package/tools/chat/get-native-chat-integration.js +0 -45
- package/tools/chat/get-native-chat-integration.js.map +0 -1
- package/tools/chat/get-web-chat-component-detail.js +0 -31
- package/tools/chat/get-web-chat-component-detail.js.map +0 -1
- package/tools/chat/get-web-chat-integration.js +0 -45
- package/tools/chat/get-web-chat-integration.js.map +0 -1
- package/tools/chat/get-web-chat-uikit-init.js +0 -28
- package/tools/chat/get-web-chat-uikit-init.js.map +0 -1
- package/tools/chat/get-web-create-group-doc.js +0 -28
- package/tools/chat/get-web-create-group-doc.js.map +0 -1
- package/tools/common/get-faq.js +0 -91
- package/tools/common/get-faq.js.map +0 -1
- package/tools/common/get-usersig.js.map +0 -1
- package/tools/common/present-framework-choice.js +0 -16
- package/tools/common/present-framework-choice.js.map +0 -1
- package/tools/common/present-scenario-choice.js +0 -16
- package/tools/common/present-scenario-choice.js.map +0 -1
- package/tools/common/record-prompt.js +0 -55
- package/tools/common/record-prompt.js.map +0 -1
- package/tools/common/record-result.js +0 -60
- package/tools/common/record-result.js.map +0 -1
- package/tools/definitions/get_native_chat_feature_detail_def.js +0 -32
- package/tools/definitions/get_native_chat_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_native_live_api_def.js +0 -22
- package/tools/definitions/get_native_live_api_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_extra_features_def.js +0 -109
- package/tools/definitions/get_native_live_uikit_extra_features_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_integration_def.js +0 -75
- package/tools/definitions/get_native_live_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_interaction_def.js +0 -63
- package/tools/definitions/get_native_live_uikit_interaction_def.js.map +0 -1
- package/tools/definitions/get_trtc_native_api_def.js +0 -17
- package/tools/definitions/get_trtc_native_api_def.js.map +0 -1
- package/tools/definitions/get_web_call_uikit_api_def.js +0 -23
- package/tools/definitions/get_web_call_uikit_api_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_init_def.js +0 -23
- package/tools/definitions/get_web_chat_uikit_init_def.js.map +0 -1
- package/tools/definitions/get_web_create_group_doc_def.js +0 -18
- package/tools/definitions/get_web_create_group_doc_def.js.map +0 -1
- package/tools/definitions/get_web_live_state_detail_def.js +0 -19
- package/tools/definitions/get_web_live_state_detail_def.js.map +0 -1
- package/tools/definitions/get_web_live_uikit_component_detail_def.js +0 -27
- package/tools/definitions/get_web_live_uikit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_room_feature_detail_def.js +0 -92
- package/tools/definitions/get_web_room_feature_detail_def.js.map +0 -1
- package/tools/definitions/present_scenario_choice_def.js +0 -53
- package/tools/definitions/present_scenario_choice_def.js.map +0 -1
- package/tools/definitions/record_prompt_def.js +0 -58
- package/tools/definitions/record_prompt_def.js.map +0 -1
- package/tools/definitions/record_result_def.js +0 -46
- package/tools/definitions/record_result_def.js.map +0 -1
- package/tools/live/get-native-live-uikit-integration.js +0 -177
- package/tools/live/get-native-live-uikit-integration.js.map +0 -1
- package/tools/live/get-web-live-component-detail.js +0 -31
- package/tools/live/get-web-live-component-detail.js.map +0 -1
- package/tools/live/get-web-live-state-detail.js +0 -31
- package/tools/live/get-web-live-state-detail.js.map +0 -1
- package/tools/live/get-web-live-uikit-integration.js +0 -52
- package/tools/live/get-web-live-uikit-integration.js.map +0 -1
- package/tools/live/get_native_live_uikit_extra_features.js +0 -105
- package/tools/live/get_native_live_uikit_extra_features.js.map +0 -1
- package/tools/live/get_native_live_uikit_interaction.js +0 -194
- package/tools/live/get_native_live_uikit_interaction.js.map +0 -1
- package/tools/native_live/get-native-live-api.js +0 -31
- package/tools/native_live/get-native-live-api.js.map +0 -1
- package/tools/room/get-web-room-feature-detail.js.map +0 -1
- package/tools/room/get-web-room-integration.js.map +0 -1
- package/tools/rtcengine/get-rtcengine-web-sdk-integration.js +0 -28
- package/tools/rtcengine/get-rtcengine-web-sdk-integration.js.map +0 -1
- package/tools/rtcengine/get-trtc-sdk-faq.js +0 -32
- package/tools/rtcengine/get-trtc-sdk-faq.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-api.js +0 -28
- package/tools/rtcengine/get-trtc-web-sdk-api.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-faq.js +0 -30
- package/tools/rtcengine/get-trtc-web-sdk-faq.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-integration.js +0 -29
- package/tools/rtcengine/get-trtc-web-sdk-integration.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-plugin.js +0 -45
- package/tools/rtcengine/get-trtc-web-sdk-plugin.js.map +0 -1
- package/tools/trtc/get-trtc-native-api.js +0 -31
- package/tools/trtc/get-trtc-native-api.js.map +0 -1
- package/utils/handle-component-name.js +0 -33
- package/utils/handle-component-name.js.map +0 -1
- /package/resource/doc/{rtcengine/web → callkit/core-sdk}/.gitkeep +0 -0
- /package/resource/doc/{chatuikit → chatkit}/faq/common/server_error_code.md +0 -0
- /package/resource/doc/{chatuikit → chatkit}/flutter/faq.md +0 -0
- /package/resource/doc/{chatuikit → chatkit}/react/faq.md +0 -0
|
@@ -6,14 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
通过下方的视图层级示意图,您可以直观了解 **LiveCoreWidget** 在直播界面中的位置和作用:
|
|
8
8
|
|
|
9
|
-

|
|
10
|
-
|
|
11
|
-
|
|
12
9
|
## 准备工作
|
|
13
10
|
|
|
14
11
|
### 步骤1:开通服务
|
|
15
12
|
|
|
16
|
-
请参见
|
|
13
|
+
请参见 开通服务,获取体验版或付费版 SDK。
|
|
17
14
|
|
|
18
15
|
### 步骤2:在当前项目中导入 AtomicXCore
|
|
19
16
|
1. **安装组件**:请在您的 `pubspec.yaml` 文件中添加 `atomic_x_core` 依赖,然后执行 `flutter pub get`。
|
|
@@ -24,9 +21,6 @@
|
|
|
24
21
|
```
|
|
25
22
|
2. **配置工程权限:**Android 和 iOS 工程都需要配置权限。
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
24
|
【Android】
|
|
31
25
|
|
|
32
26
|
请在 `android/app/src/main/AndroidManifest.xml` 文件中添加相机和麦克风的使用权限说明。
|
|
@@ -58,24 +52,20 @@ end
|
|
|
58
52
|
**Info.plist**
|
|
59
53
|
``` xml
|
|
60
54
|
<key>NSCameraUsageDescription</key>
|
|
61
|
-
<string>TUILiveKit
|
|
55
|
+
<string>TUILiveKit需要访问您的相机权限,开启后录制的视频才会有画面</string>
|
|
62
56
|
<key>NSMicrophoneUsageDescription</key>
|
|
63
57
|
<string>TUILiveKit需要访问您的麦克风权限,开启后录制的视频才会有声音</string>
|
|
64
58
|
```
|
|
65
59
|
|
|
66
|
-

|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
60
|
### 步骤3:实现登录逻辑
|
|
71
61
|
|
|
72
62
|
在您的项目中调用 `LoginStore.shared.login` 完成登录,**这是使用 AtomicXCore 所有功能的关键前提**。
|
|
73
63
|
|
|
74
64
|
> **重要:**
|
|
75
|
-
>
|
|
65
|
+
>
|
|
76
66
|
|
|
77
67
|
> 推荐在您 App 自身的用户账户登录成功后,再调用 LoginStore.shared.login,以确保登录业务逻辑的清晰和一致。
|
|
78
|
-
>
|
|
68
|
+
>
|
|
79
69
|
|
|
80
70
|
``` java
|
|
81
71
|
import 'package:flutter/material.dart';
|
|
@@ -101,48 +91,18 @@ void main() async {
|
|
|
101
91
|
```
|
|
102
92
|
|
|
103
93
|
**登录接口参数说明:**
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
<td rowspan="1" colSpan="1" >**说明**</td>
|
|
111
|
-
</tr>
|
|
112
|
-
|
|
113
|
-
<tr>
|
|
114
|
-
<td rowspan="1" colSpan="1" >`sdkAppID`</td>
|
|
115
|
-
|
|
116
|
-
<td rowspan="1" colSpan="1" >`int`</td>
|
|
117
|
-
|
|
118
|
-
<td rowspan="1" colSpan="1" >从 [控制台](https://console.cloud.tencent.com/trtc) 获取,通常是以 `140` 或 `160` 开头的 10 位整数。</td>
|
|
119
|
-
</tr>
|
|
120
|
-
|
|
121
|
-
<tr>
|
|
122
|
-
<td rowspan="1" colSpan="1" >`userID`</td>
|
|
123
|
-
|
|
124
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
125
|
-
|
|
126
|
-
<td rowspan="1" colSpan="1" >当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。为避免多端登录冲突,**请勿使用**`1`、`123`**等简单 ID**。</td>
|
|
127
|
-
</tr>
|
|
128
|
-
|
|
129
|
-
<tr>
|
|
130
|
-
<td rowspan="1" colSpan="1" >`userSig`</td>
|
|
131
|
-
|
|
132
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
133
|
-
|
|
134
|
-
<td rowspan="1" colSpan="1" >用于腾讯云鉴权的票据。请注意:<br>- 开发环境:您可以采用本地 `GenerateTestUserSig.genTestSig` 函数生成 userSig 或者通过 [UserSig 辅助工具](https://console.cloud.tencent.com/im/tool-usersig) 生成临时的 UserSig。<br>- 生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参考 [服务端生成 UserSig](https://cloud.tencent.com/document/product/647/17275)。<br>更多信息请参见 [如何计算及使用 UserSig](https://cloud.tencent.com/document/product/647/17275)。</td>
|
|
135
|
-
</tr>
|
|
136
|
-
</table>
|
|
137
|
-
|
|
94
|
+
| **参数** | **类型** | **说明** |
|
|
95
|
+
| --- | --- | --- |
|
|
96
|
+
| `sdkAppID` | `int` | 从 [控制台](https://console.cloud.tencent.com/trtc) 获取,通常是以 `140` 或 `160` 开头的 10 位整数。 |
|
|
97
|
+
| `userID` | `String` | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。为避免多端登录冲突,**请勿使用**`1`、`123`**等简单 ID**。 |
|
|
98
|
+
| `userSig` | `String` | 用于腾讯云鉴权的票据。请注意:<br>- 开发环境:您可以采用本地 `GenerateTestUserSig.genTestSig` 函数生成 userSig 或者通过 [UserSig 辅助工具](https://console.cloud.tencent.com/im/tool-usersig) 生成临时的 UserSig。<br>- 生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参考 [服务端生成 UserSig](https://cloud.tencent.com/document/product/647/17275)。<br>更多信息请参见 [如何计算及使用 UserSig](https://cloud.tencent.com/document/product/647/17275)。 |
|
|
138
99
|
|
|
139
100
|
## 搭建基础直播间
|
|
140
101
|
|
|
141
102
|
### 步骤1:实现主播开播
|
|
142
103
|
|
|
143
104
|
主播开播涉及“预览”和“直播”两个阶段。由于底层视频渲染机制不同,我们需要构建一个状态机来管理视图切换,从而避免预览时出现黑屏。
|
|
144
|
-
1.
|
|
145
|
-
|
|
105
|
+
1. **核心逻辑与状态定义。**
|
|
146
106
|
|
|
147
107
|
首先,在您的 State 类中定义核心控制器,并增加一个 _isLiveStarted 标记,用于区分当前是“预览态”还是“直播态”。
|
|
148
108
|
|
|
@@ -151,30 +111,28 @@ void main() async {
|
|
|
151
111
|
// 核心控制器
|
|
152
112
|
late final LiveCoreController _controller;
|
|
153
113
|
// 状态标记:false = 预览中; true = 直播中
|
|
154
|
-
bool _isLiveStarted = false;
|
|
155
|
-
|
|
114
|
+
bool _isLiveStarted = false;
|
|
115
|
+
|
|
156
116
|
@override
|
|
157
117
|
void initState() {
|
|
158
118
|
super.initState();
|
|
159
119
|
_controller = LiveCoreController.create(CoreViewType.pushView);
|
|
160
120
|
_controller.setLiveID(widget.liveId);
|
|
161
|
-
|
|
121
|
+
|
|
162
122
|
// 初始化时直接打开设备(详见下一步)
|
|
163
123
|
_openDevices();
|
|
164
124
|
}
|
|
165
125
|
}
|
|
166
126
|
```
|
|
167
|
-
2.
|
|
168
|
-
|
|
127
|
+
2. **打开摄像头和麦克风。**
|
|
169
128
|
|
|
170
129
|
通过调用 **DeviceStore** 的 `openLocalCamera`、`openLocalMicrophone` 接口打开摄像头和麦克风,**您无需做额外操作,LiveCoreWidget 会自动预览当前摄像头的视频流**,示例代码如下:
|
|
171
|
-
|
|
172
130
|
|
|
173
131
|
> **注意:**
|
|
174
|
-
>
|
|
132
|
+
>
|
|
175
133
|
|
|
176
134
|
> 此步骤对于预览至关重要。只有打开设备,后续的 VideoView 才有画面可渲染。
|
|
177
|
-
>
|
|
135
|
+
>
|
|
178
136
|
|
|
179
137
|
``` java
|
|
180
138
|
void _openDevices() {
|
|
@@ -184,64 +142,62 @@ void main() async {
|
|
|
184
142
|
DeviceStore.shared.openLocalMicrophone();
|
|
185
143
|
}
|
|
186
144
|
```
|
|
187
|
-
3.
|
|
188
|
-
|
|
145
|
+
3. **构建预览视图。**
|
|
189
146
|
|
|
190
147
|
这是最关键的一步。我们需要根据 `_isLiveStarted` 的状态选择不同的组件:
|
|
191
148
|
|
|
192
|
-
- **预览态:**使用 `VideoView` + `setLocalVideoView`(直接渲染本地采集数据)。
|
|
193
|
-
|
|
194
|
-
- **直播态:**使用 `LiveCoreWidget`(渲染直播间流数据)。
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
4.
|
|
244
|
-
|
|
149
|
+
- **预览态:**使用 `VideoView` + `setLocalVideoView`(直接渲染本地采集数据)。
|
|
150
|
+
|
|
151
|
+
- **直播态:**使用 `LiveCoreWidget`(渲染直播间流数据)。
|
|
152
|
+
|
|
153
|
+
``` java
|
|
154
|
+
// 3.1 封装预览视图组件
|
|
155
|
+
Widget _buildLocalPreview() {
|
|
156
|
+
return Container(
|
|
157
|
+
color: Colors.black,
|
|
158
|
+
child: VideoView(
|
|
159
|
+
onViewCreated: (viewId) {
|
|
160
|
+
// 关键:将本地摄像头画面绑定到预览 View
|
|
161
|
+
TUIRoomEngine.sharedInstance().setLocalVideoView(viewId);
|
|
162
|
+
},
|
|
163
|
+
onViewDisposed: (viewId) {
|
|
164
|
+
// 销毁时解绑
|
|
165
|
+
TUIRoomEngine.sharedInstance().setLocalVideoView(0);
|
|
166
|
+
},
|
|
167
|
+
),
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// 3.2 组合主视图
|
|
172
|
+
@override
|
|
173
|
+
Widget build(BuildContext context) {
|
|
174
|
+
return Scaffold(
|
|
175
|
+
body: Stack(
|
|
176
|
+
children: [
|
|
177
|
+
// 视图层:根据状态自动切换
|
|
178
|
+
Positioned.fill(
|
|
179
|
+
child: _isLiveStarted
|
|
180
|
+
? LiveCoreWidget(controller: _controller) // 直播中:用核心组件
|
|
181
|
+
: _buildLocalPreview(), // 预览中:用 VideoView
|
|
182
|
+
),
|
|
183
|
+
|
|
184
|
+
// UI 层:开播按钮(仅在预览时显示)
|
|
185
|
+
if (!_isLiveStarted)
|
|
186
|
+
Positioned(
|
|
187
|
+
bottom: 50, left: 0, right: 0,
|
|
188
|
+
child: Center(
|
|
189
|
+
child: ElevatedButton(
|
|
190
|
+
onPressed: _startLive, // 下一步实现此方法
|
|
191
|
+
child: const Text('开始直播'),
|
|
192
|
+
),
|
|
193
|
+
),
|
|
194
|
+
),
|
|
195
|
+
],
|
|
196
|
+
),
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
4. **实现开播与关播逻辑。**
|
|
245
201
|
|
|
246
202
|
通过调用 **LiveListStore** 的 `createLive` 接口开始视频直播,示例代码如下:
|
|
247
203
|
|
|
@@ -251,13 +207,13 @@ void main() async {
|
|
|
251
207
|
final liveInfo = LiveInfo(
|
|
252
208
|
liveID: widget.liveId, // 房间唯一标识
|
|
253
209
|
liveName: "Atomic Live Demo", // 房间标题
|
|
254
|
-
|
|
255
|
-
|
|
210
|
+
// 布局模式:videoDynamicGrid9Seats 代表动态 9 宫格布局
|
|
211
|
+
seatTemplate: VideoDynamicGrid9Seats(),
|
|
256
212
|
);
|
|
257
|
-
|
|
213
|
+
|
|
258
214
|
// 2. 发起开播请求
|
|
259
215
|
final result = await LiveListStore.shared.createLive(liveInfo);
|
|
260
|
-
|
|
216
|
+
|
|
261
217
|
if (result.isSuccess) {
|
|
262
218
|
debugPrint("开播成功");
|
|
263
219
|
// 3. 关键步骤:更新状态
|
|
@@ -275,170 +231,22 @@ void main() async {
|
|
|
275
231
|
|
|
276
232
|
**LiveInfo 参数说明:**
|
|
277
233
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
<
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
<td rowspan="1" colSpan="1" >必填</td>
|
|
295
|
-
|
|
296
|
-
<td rowspan="1" colSpan="1" >直播间的唯一标识符。</td>
|
|
297
|
-
</tr>
|
|
298
|
-
|
|
299
|
-
<tr>
|
|
300
|
-
<td rowspan="1" colSpan="1" >`liveName`</td>
|
|
301
|
-
|
|
302
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
303
|
-
|
|
304
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
305
|
-
|
|
306
|
-
<td rowspan="1" colSpan="1" >直播间的标题。</td>
|
|
307
|
-
</tr>
|
|
308
|
-
|
|
309
|
-
<tr>
|
|
310
|
-
<td rowspan="1" colSpan="1" >`notice`</td>
|
|
311
|
-
|
|
312
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
313
|
-
|
|
314
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
315
|
-
|
|
316
|
-
<td rowspan="1" colSpan="1" >直播间的公告信息。</td>
|
|
317
|
-
</tr>
|
|
318
|
-
|
|
319
|
-
<tr>
|
|
320
|
-
<td rowspan="1" colSpan="1" >`isMessageDisable`</td>
|
|
321
|
-
|
|
322
|
-
<td rowspan="1" colSpan="1" >`bool`</td>
|
|
323
|
-
|
|
324
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
325
|
-
|
|
326
|
-
<td rowspan="1" colSpan="1" >是否禁言(`true`:是,`false`:否)。</td>
|
|
327
|
-
</tr>
|
|
328
|
-
|
|
329
|
-
<tr>
|
|
330
|
-
<td rowspan="1" colSpan="1" >`isPublicVisible`</td>
|
|
331
|
-
|
|
332
|
-
<td rowspan="1" colSpan="1" >`bool`</td>
|
|
333
|
-
|
|
334
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
335
|
-
|
|
336
|
-
<td rowspan="1" colSpan="1" >是否公开可见(`true`:是,`false`:否)。</td>
|
|
337
|
-
</tr>
|
|
338
|
-
|
|
339
|
-
<tr>
|
|
340
|
-
<td rowspan="1" colSpan="1" >`isSeatEnabled`</td>
|
|
341
|
-
|
|
342
|
-
<td rowspan="1" colSpan="1" >`bool`</td>
|
|
343
|
-
|
|
344
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
345
|
-
|
|
346
|
-
<td rowspan="1" colSpan="1" >是否启用麦位功能(`true`:是,`false`:否)。</td>
|
|
347
|
-
</tr>
|
|
348
|
-
|
|
349
|
-
<tr>
|
|
350
|
-
<td rowspan="1" colSpan="1" >`keepOwnerOnSeat`</td>
|
|
351
|
-
|
|
352
|
-
<td rowspan="1" colSpan="1" >`bool`</td>
|
|
353
|
-
|
|
354
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
355
|
-
|
|
356
|
-
<td rowspan="1" colSpan="1" >是否保持房主在麦位上。</td>
|
|
357
|
-
</tr>
|
|
358
|
-
|
|
359
|
-
<tr>
|
|
360
|
-
<td rowspan="1" colSpan="1" >`maxSeatCount`</td>
|
|
361
|
-
|
|
362
|
-
<td rowspan="1" colSpan="1" >`int`</td>
|
|
363
|
-
|
|
364
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
365
|
-
|
|
366
|
-
<td rowspan="1" colSpan="1" >最大麦位数量。</td>
|
|
367
|
-
</tr>
|
|
368
|
-
|
|
369
|
-
<tr>
|
|
370
|
-
<td rowspan="1" colSpan="1" >`seatMode`</td>
|
|
371
|
-
|
|
372
|
-
<td rowspan="1" colSpan="1" >`TakeSeatMode`</td>
|
|
373
|
-
|
|
374
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
375
|
-
|
|
376
|
-
<td rowspan="1" colSpan="1" >上麦模式(`TakeSeatMode.free`:自由上麦,`TakeSeatMode.apply`:申请上麦)。</td>
|
|
377
|
-
</tr>
|
|
378
|
-
|
|
379
|
-
<tr>
|
|
380
|
-
<td rowspan="1" colSpan="1" >`seatLayoutTemplateID`</td>
|
|
381
|
-
|
|
382
|
-
<td rowspan="1" colSpan="1" >`int`</td>
|
|
383
|
-
|
|
384
|
-
<td rowspan="1" colSpan="1" >必填</td>
|
|
385
|
-
|
|
386
|
-
<td rowspan="1" colSpan="1" >麦位布局模板 ID。</td>
|
|
387
|
-
</tr>
|
|
388
|
-
|
|
389
|
-
<tr>
|
|
390
|
-
<td rowspan="1" colSpan="1" >`coverURL`</td>
|
|
391
|
-
|
|
392
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
393
|
-
|
|
394
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
395
|
-
|
|
396
|
-
<td rowspan="1" colSpan="1" >直播间的封面图片地址。</td>
|
|
397
|
-
</tr>
|
|
398
|
-
|
|
399
|
-
<tr>
|
|
400
|
-
<td rowspan="1" colSpan="1" >`backgroundURL`</td>
|
|
401
|
-
|
|
402
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
403
|
-
|
|
404
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
405
|
-
|
|
406
|
-
<td rowspan="1" colSpan="1" >直播间的背景图片地址。</td>
|
|
407
|
-
</tr>
|
|
408
|
-
|
|
409
|
-
<tr>
|
|
410
|
-
<td rowspan="1" colSpan="1" >`categoryList`</td>
|
|
411
|
-
|
|
412
|
-
<td rowspan="1" colSpan="1" >`List<int>`</td>
|
|
413
|
-
|
|
414
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
415
|
-
|
|
416
|
-
<td rowspan="1" colSpan="1" >直播间的分类标签列表。</td>
|
|
417
|
-
</tr>
|
|
418
|
-
|
|
419
|
-
<tr>
|
|
420
|
-
<td rowspan="1" colSpan="1" >`activityStatus`</td>
|
|
421
|
-
|
|
422
|
-
<td rowspan="1" colSpan="1" >`int`</td>
|
|
423
|
-
|
|
424
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
425
|
-
|
|
426
|
-
<td rowspan="1" colSpan="1" >直播活动状态。</td>
|
|
427
|
-
</tr>
|
|
428
|
-
|
|
429
|
-
<tr>
|
|
430
|
-
<td rowspan="1" colSpan="1" >`isGiftEnabled`</td>
|
|
431
|
-
|
|
432
|
-
<td rowspan="1" colSpan="1" >`bool`</td>
|
|
433
|
-
|
|
434
|
-
<td rowspan="1" colSpan="1" >选填</td>
|
|
435
|
-
|
|
436
|
-
<td rowspan="1" colSpan="1" >是否启用礼物功能(`true`:是,`false`:否)。</td>
|
|
437
|
-
</tr>
|
|
438
|
-
</table>
|
|
439
|
-
|
|
440
|
-
5. **结束直播**
|
|
441
|
-
|
|
234
|
+
| **参数名** | **类型** | **属性** | **描述** |
|
|
235
|
+
| --- | --- | --- | --- |
|
|
236
|
+
| `liveID` | `String` | 必填 | 直播间的唯一标识符。 |
|
|
237
|
+
| `liveName` | `String` | 选填 | 直播间的标题。 |
|
|
238
|
+
| `notice` | `String` | 选填 | 直播间的公告信息。 |
|
|
239
|
+
| `isMessageDisable` | `Boolean` | 选填 | 是否禁言(`true`:是,`false`:否)。 |
|
|
240
|
+
| `isPublicVisible` | `Boolean` | 选填 | 是否公开可见(`true`:是,`false`:否)。 |
|
|
241
|
+
| `seatMode` | `TakeSeatMode` | 选填 | 上麦模式(`FREE`:自由上麦,`APPLY`:申请上麦)。 |
|
|
242
|
+
| `seatTemplate` | `SeatLayoutTemplate` | 必填 | 麦位布局模板。 |
|
|
243
|
+
| `coverURL` | `String` | 选填 | 直播间的封面图片地址。 |
|
|
244
|
+
| `backgroundURL` | `String` | 选填 | 直播间的背景图片地址。 |
|
|
245
|
+
| `categoryList` | `List<Int>` | 选填 | 直播间的分类标签列表。 |
|
|
246
|
+
| `activityStatus` | `Int` | 选填 | 直播活动状态。 |
|
|
247
|
+
| `isGiftEnabled` | `Boolean` | 选填 | 是否启用礼物功能(`true`:是,`false`:否)。 |
|
|
248
|
+
|
|
249
|
+
5. **结束直播。**
|
|
442
250
|
|
|
443
251
|
直播结束后,主播可以调用 **LiveListStore** 的 `endLive` 接口结束直播。SDK 会处理停止推流和销毁房间的逻辑。
|
|
444
252
|
|
|
@@ -447,7 +255,7 @@ void main() async {
|
|
|
447
255
|
// 1. 调用接口结束直播
|
|
448
256
|
// SDK 内部会自动停止推流、销毁房间并清理媒体资源
|
|
449
257
|
final result = await LiveListStore.shared.endLive();
|
|
450
|
-
|
|
258
|
+
|
|
451
259
|
if (result.isSuccess) {
|
|
452
260
|
debugPrint("关播成功");
|
|
453
261
|
// 2. 退出当前页面
|
|
@@ -459,8 +267,7 @@ void main() async {
|
|
|
459
267
|
}
|
|
460
268
|
}
|
|
461
269
|
```
|
|
462
|
-
6.
|
|
463
|
-
|
|
270
|
+
6. **完整代码参考。**
|
|
464
271
|
|
|
465
272
|
为了方便您快速集成,我们将上述步骤整合为完整的 `YourAnchorPage` 文件。您可以直接复制以下代码:
|
|
466
273
|
|
|
@@ -468,19 +275,19 @@ void main() async {
|
|
|
468
275
|
import 'package:flutter/material.dart';
|
|
469
276
|
import 'package:atomic_x_core/atomicxcore.dart';
|
|
470
277
|
import 'package:rtc_room_engine/rtc_room_engine.dart'; // 引入 RTC 引擎
|
|
471
|
-
|
|
278
|
+
|
|
472
279
|
class YourAnchorPage extends StatefulWidget {
|
|
473
280
|
final String liveId;
|
|
474
281
|
const YourAnchorPage({super.key, required this.liveId});
|
|
475
|
-
|
|
282
|
+
|
|
476
283
|
@override
|
|
477
284
|
State<YourAnchorPage> createState() => _YourAnchorPageState();
|
|
478
285
|
}
|
|
479
|
-
|
|
286
|
+
|
|
480
287
|
class _YourAnchorPageState extends State<YourAnchorPage> {
|
|
481
288
|
late final LiveCoreController _controller;
|
|
482
289
|
bool _isLiveStarted = false; // 直播状态标记
|
|
483
|
-
|
|
290
|
+
|
|
484
291
|
@override
|
|
485
292
|
void initState() {
|
|
486
293
|
super.initState();
|
|
@@ -488,12 +295,12 @@ void main() async {
|
|
|
488
295
|
_controller.setLiveID(widget.liveId);
|
|
489
296
|
_openDevices(); // 步骤2:打开设备
|
|
490
297
|
}
|
|
491
|
-
|
|
298
|
+
|
|
492
299
|
void _openDevices() {
|
|
493
300
|
DeviceStore.shared.openLocalCamera(true);
|
|
494
301
|
DeviceStore.shared.openLocalMicrophone();
|
|
495
302
|
}
|
|
496
|
-
|
|
303
|
+
|
|
497
304
|
// 步骤3:构建预览
|
|
498
305
|
Widget _buildLocalPreview() {
|
|
499
306
|
return Container(
|
|
@@ -504,16 +311,15 @@ void main() async {
|
|
|
504
311
|
),
|
|
505
312
|
);
|
|
506
313
|
}
|
|
507
|
-
|
|
314
|
+
|
|
508
315
|
// 步骤4:开播逻辑
|
|
509
316
|
Future<void> _startLive() async {
|
|
510
317
|
final liveInfo = LiveInfo(
|
|
511
318
|
liveID: widget.liveId,
|
|
512
319
|
liveName: "Test Live",
|
|
513
|
-
|
|
514
|
-
keepOwnerOnSeat: true,
|
|
320
|
+
seatTemplate: VideoDynamicGrid9Seats()
|
|
515
321
|
);
|
|
516
|
-
|
|
322
|
+
|
|
517
323
|
final result = await LiveListStore.shared.createLive(liveInfo);
|
|
518
324
|
if (result.isSuccess) {
|
|
519
325
|
setState(() {
|
|
@@ -521,7 +327,7 @@ void main() async {
|
|
|
521
327
|
});
|
|
522
328
|
}
|
|
523
329
|
}
|
|
524
|
-
|
|
330
|
+
|
|
525
331
|
@override
|
|
526
332
|
Widget build(BuildContext context) {
|
|
527
333
|
return Scaffold(
|
|
@@ -552,51 +358,46 @@ void main() async {
|
|
|
552
358
|
|
|
553
359
|
观众观看流程如下,通过简单几步操作,即可实现观众观看直播。
|
|
554
360
|
|
|
555
|
-

|
|
556
|
-
|
|
557
|
-
|
|
558
361
|
> **提示:**
|
|
559
|
-
>
|
|
362
|
+
>
|
|
560
363
|
|
|
561
364
|
> 观众进房拉流的业务代码,您也可以参考 TUILiveKit 开源项目中的 [audience_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/audience/audience_widget.dart) 文件来了解完整的实现逻辑。
|
|
562
|
-
>
|
|
563
|
-
|
|
564
|
-
1. **实现观众拉流页面**
|
|
365
|
+
>
|
|
565
366
|
|
|
367
|
+
1. **实现观众拉流页面。**
|
|
566
368
|
|
|
567
369
|
在您的观众页面中,创建 `LiveCoreWidget` 实例,并通过 `LiveCoreController` 控制直播行为。
|
|
568
|
-
|
|
569
370
|
|
|
570
371
|
> **注意:**
|
|
571
|
-
>
|
|
372
|
+
>
|
|
572
373
|
|
|
573
374
|
> **必须确保 LiveCoreWidget 在调用 joinLive() 之前已经完成初始化并处于渲染树中。**
|
|
574
|
-
>
|
|
375
|
+
>
|
|
575
376
|
|
|
576
377
|
> **原理分析:**`LiveCoreWidget` 在 `initState` 中会执行 `controller.init() `以注册对 `currentLive` 信息的监听。如果先调用` joinLive()` 导致房间信息更新,而此时 `Widget` 尚未渲染(监听器未注册),则无法触发内部的自动拉流逻辑,导致画面黑屏。
|
|
577
|
-
>
|
|
378
|
+
>
|
|
578
379
|
|
|
579
380
|
``` java
|
|
580
381
|
import 'package:flutter/material.dart';
|
|
581
382
|
import 'package:atomic_x_core/atomicxcore.dart';
|
|
582
|
-
|
|
383
|
+
|
|
583
384
|
/// YourAudiencePage 代表您的观众观看页面
|
|
584
385
|
class _YourAudiencePageState extends State<YourAudiencePage> {
|
|
585
386
|
late final LiveCoreController _controller;
|
|
586
387
|
bool _isJoining = true;
|
|
587
|
-
|
|
388
|
+
|
|
588
389
|
@override
|
|
589
390
|
void initState() {
|
|
590
391
|
super.initState();
|
|
591
392
|
_controller = LiveCoreController.create(CoreViewType.playView);
|
|
592
393
|
_controller.setLiveID(widget.liveId);
|
|
593
|
-
|
|
594
|
-
// 修正:在第一帧渲染完成后再进房,确保 LiveCoreWidget 已完成 init()
|
|
394
|
+
|
|
395
|
+
// 修正:在第一帧渲染完成后再进房,确保 LiveCoreWidget 已完成 init()
|
|
595
396
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
596
397
|
_joinLive();
|
|
597
398
|
});
|
|
598
399
|
}
|
|
599
|
-
|
|
400
|
+
|
|
600
401
|
Future<void> _joinLive() async {
|
|
601
402
|
final result = await LiveListStore.shared.joinLive(widget.liveId);
|
|
602
403
|
if (result.isSuccess) {
|
|
@@ -606,7 +407,7 @@ void main() async {
|
|
|
606
407
|
debugPrint("joinLive error: ${result.errorMessage}");
|
|
607
408
|
}
|
|
608
409
|
}
|
|
609
|
-
|
|
410
|
+
|
|
610
411
|
@override
|
|
611
412
|
Widget build(BuildContext context) {
|
|
612
413
|
return Scaffold(
|
|
@@ -614,7 +415,7 @@ void main() async {
|
|
|
614
415
|
children: [
|
|
615
416
|
// 必须始终渲染,不可根据 _isJoining 状态移除,否则会导致监听失效
|
|
616
417
|
LiveCoreWidget(controller: _controller),
|
|
617
|
-
|
|
418
|
+
|
|
618
419
|
if (_isJoining)
|
|
619
420
|
const Center(child: CircularProgressIndicator(color: Colors.white)),
|
|
620
421
|
],
|
|
@@ -623,28 +424,27 @@ void main() async {
|
|
|
623
424
|
}
|
|
624
425
|
}
|
|
625
426
|
```
|
|
626
|
-
2.
|
|
627
|
-
|
|
427
|
+
2. **进入直播间观看。**
|
|
628
428
|
|
|
629
429
|
通过调用 **LiveListStore** 的 `joinLive` 接口加入直播,**您无需做额外操作,LiveCoreWidget 会自动播放当前房间的视频流**,完整示例代码如下:
|
|
630
430
|
|
|
631
431
|
``` java
|
|
632
432
|
import 'package:flutter/material.dart';
|
|
633
433
|
import 'package:atomic_x_core/atomicxcore.dart';
|
|
634
|
-
|
|
434
|
+
|
|
635
435
|
/// YourAudiencePage 代表您的观众观看页面
|
|
636
436
|
class YourAudiencePage extends StatefulWidget {
|
|
637
437
|
final String liveId;
|
|
638
|
-
|
|
438
|
+
|
|
639
439
|
const YourAudiencePage({super.key, required this.liveId});
|
|
640
|
-
|
|
440
|
+
|
|
641
441
|
@override
|
|
642
442
|
State<YourAudiencePage> createState() => _YourAudiencePageState();
|
|
643
443
|
}
|
|
644
|
-
|
|
444
|
+
|
|
645
445
|
class _YourAudiencePageState extends State<YourAudiencePage> {
|
|
646
446
|
late final LiveCoreController _controller;
|
|
647
|
-
|
|
447
|
+
|
|
648
448
|
@override
|
|
649
449
|
void initState() {
|
|
650
450
|
super.initState();
|
|
@@ -653,12 +453,12 @@ void main() async {
|
|
|
653
453
|
// 进入直播间
|
|
654
454
|
_joinLive();
|
|
655
455
|
}
|
|
656
|
-
|
|
456
|
+
|
|
657
457
|
Future<void> _joinLive() async {
|
|
658
458
|
// 调用 LiveListStore.shared.joinLive 进入直播间
|
|
659
459
|
// - liveId: 与主播开播同样的 liveId
|
|
660
460
|
final result = await LiveListStore.shared.joinLive(widget.liveId);
|
|
661
|
-
|
|
461
|
+
|
|
662
462
|
if (result.isSuccess) {
|
|
663
463
|
debugPrint("joinLive success");
|
|
664
464
|
} else {
|
|
@@ -667,7 +467,7 @@ void main() async {
|
|
|
667
467
|
// if (mounted) Navigator.of(context).pop();
|
|
668
468
|
}
|
|
669
469
|
}
|
|
670
|
-
|
|
470
|
+
|
|
671
471
|
@override
|
|
672
472
|
Widget build(BuildContext context) {
|
|
673
473
|
return Scaffold(
|
|
@@ -680,39 +480,38 @@ void main() async {
|
|
|
680
480
|
}
|
|
681
481
|
}
|
|
682
482
|
```
|
|
683
|
-
3.
|
|
684
|
-
|
|
483
|
+
3. **退出直播。**
|
|
685
484
|
|
|
686
485
|
观众退出直播间时,需要调用 **LiveListStore** 的 `leaveLive` 接口退出直播。SDK 会自动停止拉流并退出房间。
|
|
687
486
|
|
|
688
487
|
``` java
|
|
689
488
|
import 'package:flutter/material.dart';
|
|
690
489
|
import 'package:atomic_x_core/atomicxcore.dart';
|
|
691
|
-
|
|
490
|
+
|
|
692
491
|
/// YourAudiencePage 代表您的观众观看页面
|
|
693
492
|
class YourAudiencePage extends StatefulWidget {
|
|
694
493
|
final String liveId;
|
|
695
|
-
|
|
494
|
+
|
|
696
495
|
const YourAudiencePage({super.key, required this.liveId});
|
|
697
|
-
|
|
496
|
+
|
|
698
497
|
@override
|
|
699
498
|
State<YourAudiencePage> createState() => _YourAudiencePageState();
|
|
700
499
|
}
|
|
701
|
-
|
|
500
|
+
|
|
702
501
|
class _YourAudiencePageState extends State<YourAudiencePage> {
|
|
703
502
|
// ... 其他代码 ...
|
|
704
|
-
|
|
503
|
+
|
|
705
504
|
// 退出直播
|
|
706
505
|
Future<void> _leaveLive() async {
|
|
707
506
|
final result = await LiveListStore.shared.leaveLive();
|
|
708
|
-
|
|
507
|
+
|
|
709
508
|
if (result.isSuccess) {
|
|
710
509
|
debugPrint("leaveLive success");
|
|
711
510
|
} else {
|
|
712
511
|
debugPrint("leaveLive error: ${result.errorMessage}");
|
|
713
512
|
}
|
|
714
513
|
}
|
|
715
|
-
|
|
514
|
+
|
|
716
515
|
// ... 其他代码 ...
|
|
717
516
|
}
|
|
718
517
|
```
|
|
@@ -811,217 +610,38 @@ class _YourAudiencePageState extends State<YourAudiencePage> {
|
|
|
811
610
|
|
|
812
611
|
### 运行效果
|
|
813
612
|
|
|
814
|
-
集成 **LiveCoreWidget** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
<td rowspan="1" colSpan="1" >**动态宫格布局**</td>
|
|
820
|
-
|
|
821
|
-
<td rowspan="1" colSpan="1" >**浮动小窗布局**</td>
|
|
822
|
-
|
|
823
|
-
<td rowspan="1" colSpan="1" >**固定宫格布局**</td>
|
|
824
|
-
|
|
825
|
-
<td rowspan="1" colSpan="1" >**固定小窗布局**</td>
|
|
826
|
-
</tr>
|
|
827
|
-
|
|
828
|
-
<tr>
|
|
829
|
-
<td rowspan="1" colSpan="1" >**模板 ID**</td>
|
|
830
|
-
|
|
831
|
-
<td rowspan="1" colSpan="1" >600</td>
|
|
832
|
-
|
|
833
|
-
<td rowspan="1" colSpan="1" >601</td>
|
|
834
|
-
|
|
835
|
-
<td rowspan="1" colSpan="1" >800</td>
|
|
836
|
-
|
|
837
|
-
<td rowspan="1" colSpan="1" >801</td>
|
|
838
|
-
</tr>
|
|
839
|
-
|
|
840
|
-
<tr>
|
|
841
|
-
<td rowspan="1" colSpan="1" >**描述**</td>
|
|
842
|
-
|
|
843
|
-
<td rowspan="1" colSpan="1" >默认布局,可根据连麦人数动态调整宫格大小。</td>
|
|
844
|
-
|
|
845
|
-
<td rowspan="1" colSpan="1" >连麦嘉宾以浮动小窗形式显示。</td>
|
|
846
|
-
|
|
847
|
-
<td rowspan="1" colSpan="1" >连麦人数固定,每个嘉宾占据一个固定宫格。</td>
|
|
848
|
-
|
|
849
|
-
<td rowspan="1" colSpan="1" >连麦人数固定,嘉宾以固定小窗形式显示。</td>
|
|
850
|
-
</tr>
|
|
851
|
-
</table>
|
|
852
|
-
|
|
613
|
+
集成 **LiveCoreWidget** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 丰富直播场景 来完善直播场景。
|
|
614
|
+
| **布局类型** | **动态宫格布局** | **浮动小窗布局** | **固定宫格布局** | **固定小窗布局** |
|
|
615
|
+
| --- | --- | --- | --- | --- |
|
|
616
|
+
| **模板 ID** | 600 | 601 | 800 | 801 |
|
|
617
|
+
| **描述** | 默认布局,可根据连麦人数动态调整宫格大小。 | 连麦嘉宾以浮动小窗形式显示。 | 连麦人数固定,每个嘉宾占据一个固定宫格。 | 连麦人数固定,嘉宾以固定小窗形式显示。 |
|
|
853
618
|
|
|
854
619
|
## 丰富直播场景
|
|
855
620
|
|
|
856
621
|
当您完成了基础的直播功能后,您可以参考以下功能指南来为直播添加丰富的互动玩法。
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
<td rowspan="1" colSpan="1" >**功能 Stores**</td>
|
|
864
|
-
|
|
865
|
-
<td rowspan="1" colSpan="1" >**实现指南**</td>
|
|
866
|
-
</tr>
|
|
867
|
-
|
|
868
|
-
<tr>
|
|
869
|
-
<td rowspan="1" colSpan="1" >**实现观众音视频连线**</td>
|
|
870
|
-
|
|
871
|
-
<td rowspan="1" colSpan="1" >观众申请上麦,与主播进行实时视频互动。</td>
|
|
872
|
-
|
|
873
|
-
<td rowspan="1" colSpan="1" >[CoGuestStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_guest_store/CoGuestStore-class.html)</td>
|
|
874
|
-
|
|
875
|
-
<td rowspan="1" colSpan="1" >[实现观众连线](https://write.woa.com/document/191126722261704704)</td>
|
|
876
|
-
</tr>
|
|
877
|
-
|
|
878
|
-
<tr>
|
|
879
|
-
<td rowspan="1" colSpan="1" >**实现主播跨房连线 PK**</td>
|
|
880
|
-
|
|
881
|
-
<td rowspan="1" colSpan="1" >两个不同房间的主播进行连线,实现互动或 PK。</td>
|
|
882
|
-
|
|
883
|
-
<td rowspan="1" colSpan="1" >[CoHostStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/CoHostStore-class.html) / [BattleStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html)</td>
|
|
884
|
-
|
|
885
|
-
<td rowspan="1" colSpan="1" >[实现主播连线 PK](https://write.woa.com/document/191126592718098432)</td>
|
|
886
|
-
</tr>
|
|
887
|
-
|
|
888
|
-
<tr>
|
|
889
|
-
<td rowspan="1" colSpan="1" >**添加弹幕聊天功能**</td>
|
|
890
|
-
|
|
891
|
-
<td rowspan="1" colSpan="1" >观众可以在直播间发送和接收实时文字消息。</td>
|
|
892
|
-
|
|
893
|
-
<td rowspan="1" colSpan="1" >[BarrageStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_barrage_barrage_store/BarrageStore-class.html)</td>
|
|
894
|
-
|
|
895
|
-
<td rowspan="1" colSpan="1" >[实现弹幕功能](https://write.woa.com/document/191126817095999488)</td>
|
|
896
|
-
</tr>
|
|
897
|
-
|
|
898
|
-
<tr>
|
|
899
|
-
<td rowspan="1" colSpan="1" >**构建礼物赠送系统**</td>
|
|
900
|
-
|
|
901
|
-
<td rowspan="1" colSpan="1" >观众可以向主播赠送虚拟礼物,增加互动和趣味性。</td>
|
|
902
|
-
|
|
903
|
-
<td rowspan="1" colSpan="1" >[GiftStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_gift_gift_store/GiftStore-class.html)</td>
|
|
904
|
-
|
|
905
|
-
<td rowspan="1" colSpan="1" >[实现礼物功能](https://write.woa.com/document/191127024797196288)</td>
|
|
906
|
-
</tr>
|
|
907
|
-
</table>
|
|
908
|
-
|
|
622
|
+
| **直播功能** | **功能介绍** | **功能 Stores** | **实现指南** |
|
|
623
|
+
| --- | --- | --- | --- |
|
|
624
|
+
| **实现观众音视频连线** | 观众申请上麦,与主播进行实时视频互动。 | [CoGuestStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_guest_store/CoGuestStore-class.html) | 实现观众连线 |
|
|
625
|
+
| **实现主播跨房连线 PK** | 两个不同房间的主播进行连线,实现互动或 PK。 | [CoHostStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/CoHostStore-class.html) / [BattleStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html) | 实现主播连线 PK |
|
|
626
|
+
| **添加弹幕聊天功能** | 观众可以在直播间发送和接收实时文字消息。 | [BarrageStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_barrage_barrage_store/BarrageStore-class.html) | 实现弹幕功能 |
|
|
627
|
+
| **构建礼物赠送系统** | 观众可以向主播赠送虚拟礼物,增加互动和趣味性。 | [GiftStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_gift_gift_store/GiftStore-class.html) | 实现礼物功能 |
|
|
909
628
|
|
|
910
629
|
## API 文档
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
</tr>
|
|
927
|
-
|
|
928
|
-
<tr>
|
|
929
|
-
<td rowspan="1" colSpan="1" >**LiveCoreController**</td>
|
|
930
|
-
|
|
931
|
-
<td rowspan="1" colSpan="1" >LiveCoreWidget 的控制器:用于设置直播 ID、控制预览等操作。</td>
|
|
932
|
-
|
|
933
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/LiveCoreController-class.html)</td>
|
|
934
|
-
</tr>
|
|
935
|
-
|
|
936
|
-
<tr>
|
|
937
|
-
<td rowspan="1" colSpan="1" >**LiveListStore**</td>
|
|
938
|
-
|
|
939
|
-
<td rowspan="1" colSpan="1" >直播间全生命周期管理:创建 / 加入 / 离开 / 销毁房间,查询房间列表,修改直播信息(名称、公告等),监听直播状态(如被踢出、结束)。</td>
|
|
940
|
-
|
|
941
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_live_list_store/LiveListStore-class.html)</td>
|
|
942
|
-
</tr>
|
|
943
|
-
|
|
944
|
-
<tr>
|
|
945
|
-
<td rowspan="1" colSpan="1" >**DeviceStore**</td>
|
|
946
|
-
|
|
947
|
-
<td rowspan="1" colSpan="1" >音视频设备控制:麦克风(开关 / 音量)、摄像头(开关 / 切换 / 画质)、屏幕共享,设备状态实时监听。</td>
|
|
948
|
-
|
|
949
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_device_store/DeviceStore-class.html)</td>
|
|
950
|
-
</tr>
|
|
951
|
-
|
|
952
|
-
<tr>
|
|
953
|
-
<td rowspan="1" colSpan="1" >**CoGuestStore**</td>
|
|
954
|
-
|
|
955
|
-
<td rowspan="1" colSpan="1" >观众连麦管理:连麦申请 / 邀请 / 同意 / 拒绝,连麦成员权限控制(麦克风 / 摄像头),状态同步。</td>
|
|
956
|
-
|
|
957
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_guest_store/CoGuestStore-class.html)</td>
|
|
958
|
-
</tr>
|
|
959
|
-
|
|
960
|
-
<tr>
|
|
961
|
-
<td rowspan="1" colSpan="1" >**CoHostStore**</td>
|
|
962
|
-
|
|
963
|
-
<td rowspan="1" colSpan="1" >主播跨房连线:支持多布局模板(动态网格等),发起 / 接受 / 拒绝连线,连麦主播互动管理。</td>
|
|
964
|
-
|
|
965
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/CoHostStore-class.html)</td>
|
|
966
|
-
</tr>
|
|
967
|
-
|
|
968
|
-
<tr>
|
|
969
|
-
<td rowspan="1" colSpan="1" >**BattleStore**</td>
|
|
970
|
-
|
|
971
|
-
<td rowspan="1" colSpan="1" >主播 PK 对战:发起 PK(配置时长 / 对手),管理 PK 状态(开始 / 结束),同步分数,监听对战结果。</td>
|
|
972
|
-
|
|
973
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html)</td>
|
|
974
|
-
</tr>
|
|
975
|
-
|
|
976
|
-
<tr>
|
|
977
|
-
<td rowspan="1" colSpan="1" >**GiftStore**</td>
|
|
978
|
-
|
|
979
|
-
<td rowspan="1" colSpan="1" >礼物互动:获取礼物列表,发送 / 接收礼物,监听礼物事件(含发送者、礼物详情)。</td>
|
|
980
|
-
|
|
981
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_gift_gift_store/GiftStore-class.html)</td>
|
|
982
|
-
</tr>
|
|
983
|
-
|
|
984
|
-
<tr>
|
|
985
|
-
<td rowspan="1" colSpan="1" >**BarrageStore**</td>
|
|
986
|
-
|
|
987
|
-
<td rowspan="1" colSpan="1" >弹幕功能:发送文本 / 自定义弹幕,维护弹幕列表,实时监听弹幕状态。</td>
|
|
988
|
-
|
|
989
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_barrage_barrage_store/BarrageStore-class.html)</td>
|
|
990
|
-
</tr>
|
|
991
|
-
|
|
992
|
-
<tr>
|
|
993
|
-
<td rowspan="1" colSpan="1" >**LikeStore**</td>
|
|
994
|
-
|
|
995
|
-
<td rowspan="1" colSpan="1" >点赞互动:发送点赞,监听点赞事件,同步总点赞数。</td>
|
|
996
|
-
|
|
997
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_like_store/LikeStore-class.html)</td>
|
|
998
|
-
</tr>
|
|
999
|
-
|
|
1000
|
-
<tr>
|
|
1001
|
-
<td rowspan="1" colSpan="1" >**LiveAudienceStore**</td>
|
|
1002
|
-
|
|
1003
|
-
<td rowspan="1" colSpan="1" >观众管理:获取实时观众列表(ID / 名称 / 头像),统计观众数量,监听观众进出事件。</td>
|
|
1004
|
-
|
|
1005
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_live_audience_store/LiveAudienceStore-class.html)</td>
|
|
1006
|
-
</tr>
|
|
1007
|
-
|
|
1008
|
-
<tr>
|
|
1009
|
-
<td rowspan="1" colSpan="1" >**AudioEffectStore**</td>
|
|
1010
|
-
|
|
1011
|
-
<td rowspan="1" colSpan="1" >音频特效:变声(童声 / 男声)、混响(KTV 等)、耳返调节,实时切换特效。</td>
|
|
1012
|
-
|
|
1013
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_audio_effect_store/AudioEffectStore-class.html)</td>
|
|
1014
|
-
</tr>
|
|
1015
|
-
|
|
1016
|
-
<tr>
|
|
1017
|
-
<td rowspan="1" colSpan="1" >**BaseBeautyStore**</td>
|
|
1018
|
-
|
|
1019
|
-
<td rowspan="1" colSpan="1" >基础美颜:调节磨皮 / 美白 / 红润(0-100 级),重置美颜状态,同步效果参数。</td>
|
|
1020
|
-
|
|
1021
|
-
<td rowspan="1" colSpan="1" >[API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_base_beauty_store/BaseBeautyStore-class.html)</td>
|
|
1022
|
-
</tr>
|
|
1023
|
-
</table>
|
|
1024
|
-
|
|
630
|
+
| **Store/Component** | **功能描述** | **API 文档** |
|
|
631
|
+
| --- | --- | --- |
|
|
632
|
+
| **LiveCoreWidget** | 直播视频流展示与交互的核心视图组件:负责视频流渲染和视图挂件处理,支持主播直播、观众连麦、主播连线等场景。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/LiveCoreWidget-class.html) |
|
|
633
|
+
| **LiveCoreController** | LiveCoreWidget 的控制器:用于设置直播 ID、控制预览等操作。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_view_live_live_core_widget/LiveCoreController-class.html) |
|
|
634
|
+
| **LiveListStore** | 直播间全生命周期管理:创建 / 加入 / 离开 / 销毁房间,查询房间列表,修改直播信息(名称、公告等),监听直播状态(例如被踢出、结束)。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_live_list_store/LiveListStore-class.html) |
|
|
635
|
+
| **DeviceStore** | 音视频设备控制:麦克风(开关 / 音量)、摄像头(开关 / 切换 / 画质)、屏幕共享,设备状态实时监听。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_device_store/DeviceStore-class.html) |
|
|
636
|
+
| **CoGuestStore** | 观众连麦管理:连麦申请 / 邀请 / 同意 / 拒绝,连麦成员权限控制(麦克风 / 摄像头),状态同步。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_guest_store/CoGuestStore-class.html) |
|
|
637
|
+
| **CoHostStore** | 主播跨房连线:支持多布局模板(动态网格等),发起 / 接受 / 拒绝连线,连麦主播互动管理。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/CoHostStore-class.html) |
|
|
638
|
+
| **BattleStore** | 主播 PK 对战:发起 PK(配置时长 / 对手),管理 PK 状态(开始 / 结束),同步分数,监听对战结果。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_battle_store/BattleStore-class.html) |
|
|
639
|
+
| **GiftStore** | 礼物互动:获取礼物列表,发送 / 接收礼物,监听礼物事件(含发送者、礼物详情)。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_gift_gift_store/GiftStore-class.html) |
|
|
640
|
+
| **BarrageStore** | 弹幕功能:发送文本 / 自定义弹幕,维护弹幕列表,实时监听弹幕状态。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_barrage_barrage_store/BarrageStore-class.html) |
|
|
641
|
+
| **LikeStore** | 点赞互动:发送点赞,监听点赞事件,同步总点赞数。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_like_store/LikeStore-class.html) |
|
|
642
|
+
| **LiveAudienceStore** | 观众管理:获取实时观众列表(ID / 名称 / 头像),统计观众数量,监听观众进出事件。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_live_audience_store/LiveAudienceStore-class.html) |
|
|
643
|
+
| **AudioEffectStore** | 音频特效:变声(童声 / 男声)、混响(KTV 等)、耳返调节,实时切换特效。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_audio_effect_store/AudioEffectStore-class.html) |
|
|
644
|
+
| **BaseBeautyStore** | 基础美颜:调节磨皮 / 美白 / 红润(0-100 级),重置美颜状态,同步效果参数。 | [API 文档](https://tencent-rtc.github.io/TUIKit_Flutter/api_device_base_beauty_store/BaseBeautyStore-class.html) |
|
|
1025
645
|
|
|
1026
646
|
## 常见问题
|
|
1027
647
|
|
|
@@ -1034,14 +654,12 @@ class _YourAudiencePageState extends State<YourAudiencePage> {
|
|
|
1034
654
|
|
|
1035
655
|
- **检查网络**:请检查设备网络连接是否正常。
|
|
1036
656
|
|
|
1037
|
-
|
|
1038
657
|
### 观众端调用了 joinLive 且返回 Success,但依然没有视频画面?
|
|
1039
|
-
- **时序问题:**是否在 LiveCoreWidget 挂载前就执行了 joinLive
|
|
1040
|
-
|
|
1041
|
-
- **Controller 类型:**创建时是否正确传入了 CoreViewType.playView?
|
|
658
|
+
- **时序问题:**是否在 `LiveCoreWidget` 挂载前就执行了 `joinLive`?请参考上文使用 `addPostFrameCallback`。
|
|
1042
659
|
|
|
1043
|
-
- **
|
|
660
|
+
- **Controller 类型:**创建时是否正确传入了 `CoreViewType.playView`?
|
|
1044
661
|
|
|
662
|
+
- **Widget 持久性:**在进房过程中,`LiveCoreWidget` 是否因为 `setState` 被意外销毁或重新创建?请确保其在 Widget 树中的稳定性。
|
|
1045
663
|
|
|
1046
664
|
### Flutter 项目如何请求权限?
|
|
1047
665
|
|
|
@@ -1067,4 +685,3 @@ void dispose() {
|
|
|
1067
685
|
super.dispose();
|
|
1068
686
|
}
|
|
1069
687
|
```
|
|
1070
|
-
|