@tencent-rtc/mcp 1.3.9 → 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.
- package/package.json +2 -2
- package/resource/doc/{tuicallkit/iOS/faq.md → callkit/faq/android-faq.md} +10 -22
- package/resource/doc/{tuicallkit/android/faq.md → callkit/faq/flutter-faq.md} +10 -22
- package/resource/doc/{tuicallkit/flutter/faq.md → callkit/faq/ios-faq.md} +10 -22
- package/resource/doc/callkit/preset/android/api.md +296 -0
- package/resource/doc/{tuicallkit → callkit/preset}/android/integration.md +53 -365
- package/resource/doc/callkit/preset/flutter/api.md +410 -0
- package/resource/doc/{tuicallkit → callkit/preset}/flutter/integration.md +35 -97
- package/resource/doc/callkit/preset/ios/api.md +80 -0
- package/resource/doc/{tuicallkit/iOS → callkit/preset/ios}/integration.md +37 -118
- package/resource/doc/callkit/preset/react/api.md +501 -0
- package/resource/doc/{tuicallkit → callkit/preset}/react/integration.md +5 -20
- package/resource/doc/callkit/preset/vue/api.md +501 -0
- package/resource/doc/{tuicallkit → callkit/preset}/vue/integration.md +4 -19
- package/resource/doc/{chatuikit → chatkit}/android/faq.md +29 -38
- package/resource/doc/{chatuikit → chatkit}/android/features/theme.md +22 -166
- package/resource/doc/{chatuikit → chatkit}/android/integration.md +28 -121
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +281 -0
- package/resource/doc/{chatuikit → chatkit}/faq/common/product.md +0 -1
- package/resource/doc/{chatuikit → chatkit}/faq/common/server.md +1 -1
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +199 -0
- package/resource/doc/{chatuikit → chatkit}/faq/flutter_sdk/faq.md +3 -3
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +235 -0
- package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/faq.md +3 -3
- package/resource/doc/{chatuikit → chatkit}/flutter/features/theme.md +22 -166
- package/resource/doc/{chatuikit → chatkit}/flutter/integration.md +18 -87
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/faq.md +29 -38
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/features/theme.md +27 -176
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/integration.md +47 -165
- package/resource/doc/{chatuikit → chatkit}/react/components/avatar.md +0 -33
- package/resource/doc/{chatuikit → chatkit}/react/components/chat-header.md +8 -49
- package/resource/doc/{chatuikit → chatkit}/react/components/chat-setting.md +6 -35
- package/resource/doc/{chatuikit → chatkit}/react/components/chat.md +0 -6
- package/resource/doc/{chatuikit → chatkit}/react/components/component-list.md +0 -11
- package/resource/doc/{chatuikit → chatkit}/react/components/contact-list.md +96 -502
- 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 +118 -0
- package/resource/doc/chatkit/react/components/conversation-search.md +60 -0
- package/resource/doc/{chatuikit → chatkit}/react/components/message-input.md +36 -337
- package/resource/doc/{chatuikit → chatkit}/react/components/message-list.md +20 -212
- package/resource/doc/chatkit/react/components/search.md +243 -0
- package/resource/doc/{chatuikit → chatkit}/react/components/tuikit.md +1 -47
- package/resource/doc/{chatuikit → chatkit}/react/integration.md +21 -81
- package/resource/doc/{chatuikit → chatkit}/vue/components/avatar.md +0 -33
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat-header.md +7 -48
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat-setting.md +3 -5
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat.md +0 -5
- package/resource/doc/{chatuikit → chatkit}/vue/components/component-list.md +0 -15
- 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 -492
- 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 +2 -223
- package/resource/doc/{chatuikit → chatkit}/vue/components/message-list.md +23 -252
- package/resource/doc/{chatuikit → chatkit}/vue/components/search.md +73 -640
- package/resource/doc/{chatuikit → chatkit}/vue/components/tuikit.md +7 -21
- package/resource/doc/{chatuikit → chatkit}/vue/components/userpicker.md +3 -62
- package/resource/doc/{chatuikit → chatkit}/vue/faq.md +1 -1
- package/resource/doc/{chatuikit → chatkit}/vue/integration.md +22 -23
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-audience-list.md +18 -89
- 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 +28 -141
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-base-beauty.md +20 -112
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-co-guest-interaction.md +59 -193
- 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 +94 -344
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-integration.md +107 -515
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-live-list.md +33 -173
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audience-list.md +14 -93
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audio-effect.md +34 -179
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-barrage.md +19 -107
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-base-beauty.md +24 -166
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-co-guest-interaction.md +56 -163
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-gift.md +69 -443
- 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 +107 -492
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-live-list.md +23 -165
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audience-list.md +35 -111
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audio-effect.md +35 -193
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-barrage.md +31 -144
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-base-beauty.md +24 -116
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-co-guest-interaction.md +37 -171
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-gift.md +79 -459
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-host-interaction.md +69 -320
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-integration.md +85 -502
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-live-list.md +32 -169
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-audience-list.md +18 -89
- 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 +28 -141
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-co-guest-interaction.md +50 -259
- 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 +51 -265
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-integration.md +61 -427
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-room-list.md +33 -173
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-co-guest-interaction.md +44 -203
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-integration.md +56 -416
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-audience-list.md +35 -111
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-audio-effect.md +35 -193
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-barrage.md +31 -144
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-co-guest-interaction.md +43 -252
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-gift.md +79 -459
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-host-interaction.md +46 -264
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-integration.md +61 -445
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-room-list.md +32 -169
- package/resource/doc/livekit/faq/common/{error_code.md → error-code.md} +2 -2
- 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 +10 -49
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-audience-list.md +26 -144
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-scene-panel.md +12 -75
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-view.md +36 -227
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +215 -0
- package/resource/doc/livekit/preset/live/vue/faq.md +1 -0
- package/resource/doc/livekit/preset/live/vue/live-list-integration.md +241 -0
- package/resource/doc/livekit/preset/live/vue/live-player-desk-integration.md +299 -0
- package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +300 -0
- package/resource/doc/livekit/preset/live/vue/live-pusher-integration.md +743 -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 -34
- package/resource/doc/roomkit/vue/features/room-view.md +30 -125
- 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 -29
- package/resource/doc/roomkit/vue/integration.md +21 -76
- package/resource/doc/rtcengine/faq/common/error_code.md +1 -0
- package/resource/doc/rtcengine/faq/web/web.md +14 -24
- package/resource/doc/rtcengine/web/api.md +1 -3
- package/resource/doc/rtcengine/web/how_to_integrated_web_sdk.md +3 -10
- package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +1 -5
- package/resource/doc/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +1 -2
- package/resource/doc/rtcengine/web/plugin/21-advanced-auto-play-policy.md +2 -4
- package/resource/doc/rtcengine/web/plugin/23-advanced-support-detection.md +3 -5
- package/resource/doc/rtcengine/web/plugin/24-advanced-network-quality.md +1 -7
- package/resource/doc/rtcengine/web/plugin/25-advanced-device-change.md +0 -2
- package/resource/doc/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +4 -8
- package/resource/doc/rtcengine/web/plugin/27-advanced-small-stream.md +11 -11
- package/resource/doc/rtcengine/web/plugin/28-advanced-beauty.md +12 -88
- package/resource/doc/rtcengine/web/plugin/31-advanced-plugins-overview.md +5 -5
- package/resource/doc/rtcengine/web/plugin/34-advanced-proxy.md +30 -37
- package/resource/doc/rtcengine/web/plugin/36-advanced-virtual-background.md +13 -90
- package/resource/doc/rtcengine/web/plugin/37-advanced-voice-changer.md +1 -2
- package/resource/doc/rtcengine/web/plugin/39-advanced-video-decoder.md +1 -2
- package/resource/doc/rtcengine/web/plugin/40-advanced-video-mixer.md +19 -19
- 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 -5
- package/resource/doc/rtcengine/web/plugin/43-advanced-face-detection.md +3 -3
- package/resource/doc/trtc/C++/ITRTCCloud.md +686 -2835
- package/resource/doc/trtc/C++/ITRTCStatistics.md +53 -308
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +202 -1022
- package/resource/doc/trtc/C++/ITXDeviceManager.md +126 -767
- package/resource/doc/trtc/C++/TRTCCloudCallback.md +579 -2147
- package/resource/doc/trtc/C++/TRTCTypeDef.md +703 -3378
- package/resource/doc/trtc/C++/TXLiteAVCode.md +116 -908
- package/resource/doc/trtc/android/TRTCCloud.md +606 -2573
- package/resource/doc/trtc/android/TRTCCloudDef.md +752 -3640
- package/resource/doc/trtc/android/TRTCCloudListener.md +581 -2008
- package/resource/doc/trtc/android/TRTCStatistics.md +48 -278
- package/resource/doc/trtc/android/TXAudioEffectManager.md +202 -1022
- 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 +114 -892
- package/resource/doc/trtc/iOS/TRTCCloud.md +694 -2904
- package/resource/doc/trtc/iOS/TRTCCloudDef.md +726 -3498
- package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +543 -2028
- package/resource/doc/trtc/iOS/TRTCStatistics.md +48 -278
- package/resource/doc/trtc/iOS/TXAudioEffectManager.md +174 -877
- 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/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/definitions/get_callkit_api_def.js +29 -0
- package/tools/definitions/get_callkit_api_def.js.map +1 -0
- package/tools/definitions/get_faq_def.js +17 -18
- 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 +34 -0
- package/tools/definitions/get_native_livekit_core_features_def.js.map +1 -0
- package/tools/definitions/get_native_livekit_core_integration_def.js +34 -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 -22
- 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 +15 -18
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_livekit_api_def.js +30 -0
- package/tools/definitions/get_web_livekit_api_def.js.map +1 -0
- package/tools/definitions/get_web_livekit_component_detail_def.js +32 -0
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +1 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +15 -46
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +31 -0
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_api_def.js +27 -0
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +27 -0
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +27 -0
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +24 -12
- package/tools/definitions/present_framework_choice_def.js.map +1 -1
- package/tools/index.js +47 -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 +12 -1
- package/utils/report-cls-client.js.map +1 -1
- package/utils/report-es-client.js +2 -2
- package/resource/doc/chatuikit/android/workflow.md +0 -713
- package/resource/doc/chatuikit/faq/android_sdk/client-api.md +0 -1371
- package/resource/doc/chatuikit/faq/flutter_sdk/client-api.md +0 -932
- package/resource/doc/chatuikit/faq/ios_sdk/client-api.md +0 -1119
- package/resource/doc/chatuikit/flutter/workflow.md +0 -941
- package/resource/doc/chatuikit/react/components/conversation-list.md +0 -1017
- package/resource/doc/chatuikit/react/components/search.md +0 -745
- package/resource/doc/chatuikit/react/create-group.md +0 -23
- package/resource/doc/chatuikit/react/init.md +0 -26
- package/resource/doc/chatuikit/react/workflow.md +0 -258
- package/resource/doc/chatuikit/vue/components/contact-list.md +0 -679
- package/resource/doc/chatuikit/vue/create-group.md +0 -25
- package/resource/doc/chatuikit/vue/init.md +0 -40
- package/resource/doc/chatuikit/vue/workflow.md +0 -395
- package/resource/doc/livekit/live/android/workflow.md +0 -320
- package/resource/doc/livekit/live/flutter/workflow.md +0 -353
- package/resource/doc/livekit/live/ios/workflow.md +0 -454
- package/resource/doc/livekit/live/vue/components/barrage.md +0 -616
- package/resource/doc/livekit/live/vue/components/stream-mixer.md +0 -446
- package/resource/doc/livekit/live/vue/faq.md +0 -0
- package/resource/doc/livekit/live/vue/live-list-integration.md +0 -200
- package/resource/doc/livekit/live/vue/live-player-desk-integration.md +0 -269
- package/resource/doc/livekit/live/vue/live-player-h5-integration.md +0 -269
- package/resource/doc/livekit/live/vue/live-pusher-integration.md +0 -595
- package/resource/doc/livekit/live/vue/states/live-state.md +0 -3591
- package/resource/doc/livekit/live/vue/workflow.md +0 -218
- package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +0 -312
- package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +0 -430
- package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +0 -679
- package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +0 -671
- package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +0 -271
- 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 -865
- package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +0 -657
- package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +0 -437
- package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +0 -335
- package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +0 -748
- package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +0 -327
- package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +0 -507
- package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +0 -507
- package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +0 -659
- package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +0 -284
- package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +0 -814
- package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +0 -1000
- 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 -441
- package/resource/doc/tuicallkit/faq/android_sdk/call-observer-api.md +0 -784
- package/resource/doc/tuicallkit/faq/android_sdk/callkit-api.md +0 -610
- package/resource/doc/tuicallkit/faq/flutter_sdk/call-define-api.md +0 -938
- package/resource/doc/tuicallkit/faq/flutter_sdk/call-observer-api.md +0 -897
- package/resource/doc/tuicallkit/faq/flutter_sdk/callkit-api.md +0 -469
- package/resource/doc/tuicallkit/faq/ios_sdk/call-observer-api.md +0 -781
- package/resource/doc/tuicallkit/faq/ios_sdk/callkit-api.md +0 -398
- package/resource/doc/tuicallkit/flutter/workflow.md +0 -331
- package/resource/doc/tuicallkit/react/api.md +0 -1404
- package/resource/doc/tuicallkit/vue/api.md +0 -1406
- package/resource/doc/tuicallkit/vue/faq.md +0 -36
- 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 -23
- package/tools/definitions/get_native_live_api_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_extra_features_def.js +0 -87
- 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 -16
- 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/get_web_room_state_detail_def.js +0 -19
- package/tools/definitions/get_web_room_state_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/{chatuikit/iOS/workflow.md → callkit/core-sdk/.gitkeep} +0 -0
- /package/resource/doc/{tuicallkit/faq/common/error_code.md → callkit/faq/common/error-code.md} +0 -0
- /package/resource/doc/{tuicallkit/react/faq.md → callkit/faq/web-faq.md} +0 -0
- /package/resource/doc/{chatuikit → chatkit}/faq/common/server_error_code.md +0 -0
- /package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/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
- /package/resource/doc/roomkit/faq/common/{error_code.md → error-code.md} +0 -0
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
# Native Live AtomicXCore Code Generation Workflow Instructions (Android)
|
|
2
|
-
|
|
3
|
-
## 🚨 Core Principles (Highest Priority)
|
|
4
|
-
|
|
5
|
-
**The Agent MUST ensure that the generated code compiles and runs successfully. Delivering uncompilable code to the user is strictly prohibited!**
|
|
6
|
-
|
|
7
|
-
### ⚠️ Mandatory Compilation Verification
|
|
8
|
-
**After every code generation or modification, a full Gradle compilation MUST be executed**:
|
|
9
|
-
```bash
|
|
10
|
-
./gradlew assembleDebug --stacktrace
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
**Prohibited Actions**:
|
|
14
|
-
- ❌ DO NOT assume code is correct based only on `read_lints` checks.
|
|
15
|
-
- ❌ DO NOT use `grep` to filter compilation output (this may miss critical error context).
|
|
16
|
-
|
|
17
|
-
**Compilation Error Classification & Handling**:
|
|
18
|
-
| Error Type | Example | Handling Strategy |
|
|
19
|
-
|------------|---------|-------------------|
|
|
20
|
-
| Dependency Resolution Failure | `Could not find xxx` | Check repository configurations (JitPack/Maven). |
|
|
21
|
-
| Missing Dependency | `Unresolved reference` | Add missing dependency to `build.gradle`. |
|
|
22
|
-
| Missing Import | `Unresolved reference: xxx` | Add the required `import` statement. |
|
|
23
|
-
| Missing Resource | `cannot find symbol R.xxx` | Create the corresponding resource file. |
|
|
24
|
-
| Missing Manifest Entry | `Activity not found` | Register the activity in `AndroidManifest.xml`. |
|
|
25
|
-
|
|
26
|
-
**Validation Process**:
|
|
27
|
-
1. Execute `./gradlew assembleDebug` (Full output, DO NOT filter).
|
|
28
|
-
2. If it fails -> Analyze the full error -> **Auto-fix** -> Recompile.
|
|
29
|
-
3. Repeat until `BUILD SUCCESSFUL`.
|
|
30
|
-
|
|
31
|
-
**Key Point**: Emphasize that `read_lints != Full Compilation Verification`. Gradle dependency and configuration errors can only be detected through a full build.
|
|
32
|
-
|
|
33
|
-
**Processing Flow**:
|
|
34
|
-
1. **Compilation Successful (BUILD SUCCESSFUL)** -> Deliver code.
|
|
35
|
-
2. **Compilation Failed** -> Analyze error -> **Auto-fix** -> Recompile.
|
|
36
|
-
* ✅ **Auto-fixable**: Missing dependencies, missing imports, missing AndroidManifest permissions/registrations.
|
|
37
|
-
* ❌ **Unfixable**: Internal SDK errors, network environment issues (inform the user).
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 📋 Instruction Purpose & Architecture
|
|
42
|
-
|
|
43
|
-
Provides the Agent with a **code generation blueprint** for implementing core features of Native (Android) Live AtomicXCore.
|
|
44
|
-
|
|
45
|
-
**Core Architecture**:
|
|
46
|
-
* **Container**: `LiveCoreView` (View layer)
|
|
47
|
-
* **State**: `Store` (Data-driven)
|
|
48
|
-
* **Events**: `Listener` (Callback handling)
|
|
49
|
-
|
|
50
|
-
**Feature Dependency Logic (Important)**:
|
|
51
|
-
1. **Base First**: Basic live streaming (Broadcasting/Viewing/List) must be completed first using the base tool (`get_native_live_uikit_integration`).
|
|
52
|
-
2. **Interaction Overlay**: If requirements include "Co-guesting", "PK", or "Audience List", the interaction tool (`get_native_live_uikit_interaction`) must be called **after** basic features are completed.
|
|
53
|
-
3. **Empty Project Handling**: If the user requests interaction features in an empty project, the Agent **MUST implement basic features first**, then add interaction capabilities.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## ⚙️ Automated Workflow Steps
|
|
58
|
-
|
|
59
|
-
### Step 0: Preparation (Automated)
|
|
60
|
-
1. **Generate Credentials**: Call the `get_usersig` tool to generate test credentials.
|
|
61
|
-
* Host: `anchor001`, `anchor002`, `anchor003`
|
|
62
|
-
* Audience: `user001`, `user002`, `user003`
|
|
63
|
-
2. **Environment Check**: Check `build.gradle` and add the following dependencies if missing:
|
|
64
|
-
```gradle
|
|
65
|
-
api 'io.trtc.uikit:atomicx-core:latest.release'
|
|
66
|
-
api "io.trtc.uikit:rtc_room_engine:latest.release"
|
|
67
|
-
api "com.tencent.liteav:LiteAVSDK_Professional:latest.release"
|
|
68
|
-
api "com.tencent.imsdk:imsdk-plus:latest.release"
|
|
69
|
-
```
|
|
70
|
-
3. **Permission Injection**: Add Camera, Microphone, and Network permissions in `AndroidManifest.xml`.
|
|
71
|
-
|
|
72
|
-
### Step 1: Retrieval & Generation
|
|
73
|
-
**PRIORITIZE and EXCLUSIVELY** use the **real-time documentation content** returned by this tool for code generation.
|
|
74
|
-
* **Host Only**: Generate `AnchorActivity`.
|
|
75
|
-
* **Audience Only**: Generate `AudienceActivity`.
|
|
76
|
-
* **Host + Audience**: Generate `MainActivity` (Entry selection) + `AnchorActivity` + `AudienceActivity`.
|
|
77
|
-
|
|
78
|
-
### Step 2: Verification & Delivery
|
|
79
|
-
Execute `./gradlew assembleDebug` and deliver once verified.
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## 🚫 Code Generation Constraints (Strictly Follow)
|
|
84
|
-
|
|
85
|
-
### 1. General Code Constraints
|
|
86
|
-
* **Strictly Prohibited to Modify Imports**: Import paths in the documentation are verified; DO NOT modify them.
|
|
87
|
-
* **Strictly Prohibited to Fabricate APIs**: If an API is not in the documentation, DO NOT invent method or parameter names.
|
|
88
|
-
* **MUST Consult API Docs**: For data model fields (e.g., `LiveInfo`), visit the documentation to confirm field names (e.g., confirm it's `liveOwner.userName` and not `name`).
|
|
89
|
-
|
|
90
|
-
### 2. 🧩 Store & Listener Management Constraints (Lifecycle Safety)
|
|
91
|
-
**Core Reason**: SDK `Store.create(liveId)` often returns a singleton or reusable instance. Using anonymous inner classes causes listener instances to be duplicated or overwritten, leading to bugs like "UI not updating on host side" or "only the first event being triggered."
|
|
92
|
-
|
|
93
|
-
* **Member Variable Principle**: All Listeners (e.g., `GiftListener`, `CoGuestListener`, `BarrageListener`) **MUST be declared as member variables** of the Activity or Fragment.
|
|
94
|
-
* **No Anonymous Inner Classes**: Prohibited to use anonymous objects directly inside `addXXXListener(object : ...)`.
|
|
95
|
-
* **Pairing Principle**: If `addListener` is called in `onCreate/onStart`, `removeListener` **MUST** be called in `onDestroy/onStop` to prevent memory leaks and listener failure.
|
|
96
|
-
|
|
97
|
-
### 3. ⏱️ Timeout Limits (Critical)
|
|
98
|
-
**Strictly adhere to the following parameter limits, prioritizing values from documentation examples:**
|
|
99
|
-
|
|
100
|
-
#### A. Co-guesting (`CoGuestStore`)
|
|
101
|
-
* **Rules**:
|
|
102
|
-
* Optional parameter; if not filled, timeout is not checked.
|
|
103
|
-
* If filled, the range MUST be between **5 - 1800 seconds**.
|
|
104
|
-
* **Correct Examples**:
|
|
105
|
-
```kotlin
|
|
106
|
-
// ✅ Recommended: Follow doc examples (e.g., 30s)
|
|
107
|
-
applyForSeat(seatIndex = -1, timeout = 30, ...)
|
|
108
|
-
// ✅ Valid: No timeout check
|
|
109
|
-
applyForSeat(seatIndex = -1, timeout = 0, ...)
|
|
110
|
-
```
|
|
111
|
-
* **Incorrect Examples**: ❌ `timeout = 3` (too short), ❌ `timeout = 2000` (too long).
|
|
112
|
-
|
|
113
|
-
#### B. Co-hosting/PK (`CoHostStore`)
|
|
114
|
-
* **Rules**:
|
|
115
|
-
* **Maximum 30 seconds** (Hard limit).
|
|
116
|
-
* **Correct Examples**:
|
|
117
|
-
```kotlin
|
|
118
|
-
// ✅ Recommended: Use maximum value
|
|
119
|
-
requestHostConnection(..., timeout = 30, ...)
|
|
120
|
-
```
|
|
121
|
-
* **Incorrect Examples**: ❌ `timeout = 60` (will cause request failure).
|
|
122
|
-
|
|
123
|
-
### 4. 🎨 Extra Feature Constraints (Beauty/Audio/UI)
|
|
124
|
-
|
|
125
|
-
#### A. Audio Effects
|
|
126
|
-
* **Voice Changer Enum (`AudioChangerType`)**:
|
|
127
|
-
* ✅ **Allowed**: `CHILD, LITTLE_GIRL, MAN, ETHEREAL`, etc.
|
|
128
|
-
* ❌ **Prohibited**: `UNCLE, LOLI, GIRL, BOY` (deprecated or incorrect).
|
|
129
|
-
* **Reverb Enum (`AudioReverbType`)**:
|
|
130
|
-
* ✅ **Allowed**: `KTV, SMALL_ROOM, METALLIC`, etc.
|
|
131
|
-
* ❌ **Prohibited**: `ROOM, HALL, LOW`.
|
|
132
|
-
|
|
133
|
-
#### B. Beauty
|
|
134
|
-
* **Parameter Range**: **0.0 - 9.0** (Float).
|
|
135
|
-
* ❌ NOT 0-1 (Float), and NOT 0-100 (Int).
|
|
136
|
-
* **UI Mapping Formula**: `progress / 100.0f * 9.0f`.
|
|
137
|
-
|
|
138
|
-
#### C. Barrage, Gift & Layout (Barrage, Gift & UI)
|
|
139
|
-
* **Layering Requirements**: Barrage list and full-screen gift animations MUST overlay **on top** of the video layer using `FrameLayout` or `RelativeLayout`.
|
|
140
|
-
* **Split Screen Prohibited**: Strictly prohibited to split the screen (e.g., video on top, barrage at bottom); MUST use overlay mode.
|
|
141
|
-
* **Keyboard Adaptation**: Must set `android:windowSoftInputMode="adjustNothing"` or `adjustPan` in the Manifest to **prevent video distortion or shifting when the keyboard appears**.
|
|
142
|
-
|
|
143
|
-
##### Barrage Input
|
|
144
|
-
* **Position**: Fixed at the bottom left of the screen, in the same row as function buttons (Gift, Co-guest, etc.).
|
|
145
|
-
* **Style**: Semi-transparent rounded background + placeholder text "Say something...".
|
|
146
|
-
* **Keyboard Adaptation**:
|
|
147
|
-
* When the keyboard is raised, the input box **must remain in its original position** and is prohibited from moving up with the keyboard.
|
|
148
|
-
* The `LiveCoreView` layout must be fixed to `match_parent`, prohibiting distortion or upward shifting.
|
|
149
|
-
* **MUST** set `android:windowSoftInputMode="adjustNothing"` in the Manifest.
|
|
150
|
-
|
|
151
|
-
##### Barrage Display Flow
|
|
152
|
-
```
|
|
153
|
-
Sending Barrage:
|
|
154
|
-
User input → Click Send/Enter → BarrageStore.sendTextMessage(text) → Insert into local barrage list immediately
|
|
155
|
-
|
|
156
|
-
Receiving Barrage:
|
|
157
|
-
Subscribe to BarrageStore.barrageState.barrageList → New message received → Insert into barrage list → Scroll to bottom
|
|
158
|
-
```
|
|
159
|
-
* **Data Source**: Subscribe to `BarrageStore.create(liveId).barrageState.barrageList`.
|
|
160
|
-
* **Local Echo**: Insert into the local barrage list **immediately** after successful sending, without waiting for server callback.
|
|
161
|
-
* **Scrolling Behavior**: Automatically scroll to the bottom when a new message arrives (`recyclerView.scrollToPosition(adapter.itemCount - 1)`).
|
|
162
|
-
* **Message Format**: `[Nickname]: [Message Content]`, nickname uses theme color, content uses white.
|
|
163
|
-
|
|
164
|
-
* **Gift Barrage**: **If the user needs gift barrage integration**, when `onReceiveGift` is triggered, a gift message MUST be inserted into the barrage list on **both host and audience sides**. DO NOT display only on the audience side.
|
|
165
|
-
|
|
166
|
-
##### Full-screen Gift Animation
|
|
167
|
-
**⚠️ MANDATORY**: Full-screen gift animation is a **mandatory requirement** when integrating gift features and cannot be omitted.
|
|
168
|
-
|
|
169
|
-
* **Layering**: The full-screen gift animation view MUST overlay **on top** of the `LiveCoreView` using a separate `FrameLayout` container.
|
|
170
|
-
* **Layout**: Constrained to `match_parent`, covering the entire screen.
|
|
171
|
-
* **Dual-side Sync**: Upon receiving the `GiftStore.onReceiveGift` callback, the full-screen animation MUST be played on **both host and audience sides**. Playing only on the audience side is strictly prohibited.
|
|
172
|
-
|
|
173
|
-
### 🎨 Default UI/UX Design & Interaction Specifications (Only applies if user doesn't specify)
|
|
174
|
-
|
|
175
|
-
**⚠️ Note: The following specifications are only executed as default standards when the user does not provide specific UI design or requirements.**
|
|
176
|
-
|
|
177
|
-
### 1. Global Aesthetics
|
|
178
|
-
* **Immersive Dark**: The background of the live page must be `Color.BLACK`, and the video layer (`LiveCoreView`) must **fill the entire screen** (`match_parent`) and be at the bottom layer.
|
|
179
|
-
* **Safe Area**: All floating UIs must consider status and navigation bars, and are strictly prohibited from being blocked by notches or bottom navigation bars.
|
|
180
|
-
* **Text Readability**: White text above the video (e.g., barrage, ID) must have a **black shadow** (`setShadowLayer`).
|
|
181
|
-
* **Error Prompts**: Use **Toast** uniformly; prohibit the use of modal AlertDialogs that interrupt the user.
|
|
182
|
-
|
|
183
|
-
### 2. Component Standards
|
|
184
|
-
* **Glass Capsule (Top)**:
|
|
185
|
-
* **Style**: **Semi-transparent black background** + **full rounded corners** (`cornerRadius = height / 2`).
|
|
186
|
-
* **Application**: Only used at the top left to display "Host Avatar + ID + Popularity".
|
|
187
|
-
* **Flat Buttons**:
|
|
188
|
-
* **Style**: **"Text + Rounded Rectangle Background"**. Minimalist flat design, background color is semi-transparent black or theme color.
|
|
189
|
-
* **Close Button**: Special case, use a circular semi-transparent background icon.
|
|
190
|
-
* **Floating Panels**:
|
|
191
|
-
* **Style**: Only top rounded corners (`topLeftRadius, topRightRadius`).
|
|
192
|
-
* **Taboo**: Solid color backgrounds at the bottom are prohibited; floating feeling must be maintained.
|
|
193
|
-
|
|
194
|
-
### 3. Live Room Layout Blueprint
|
|
195
|
-
**⚠️ Dynamic Layout Principle: Only render function buttons that the user has actually integrated. If a user did not request a feature (e.g., PK/Beauty), DO NOT add corresponding empty buttons.**
|
|
196
|
-
|
|
197
|
-
#### A. Top Bar
|
|
198
|
-
* **Left [Room Info]**: Wrapped in a **semi-transparent capsule** [Host Avatar | Host Nickname].
|
|
199
|
-
* **Right [Control Area]**: Horizontally arranged [Online Audience Count] + [Close Icon (X)].
|
|
200
|
-
|
|
201
|
-
#### B. Bottom Bar - Dynamically switches based on state
|
|
202
|
-
* **Preview Mode**:
|
|
203
|
-
* Content **aligned to the right**: [Beauty] [Audio Effects] [Start Live (Main Button)].
|
|
204
|
-
* **Anchor Live Mode**:
|
|
205
|
-
* **Left**: [Barrage List (Transparent Background)] + [Chat Input Box].
|
|
206
|
-
* **Right**: Function array [Beauty] [Audio Effects] [Co-hosting] [PK].
|
|
207
|
-
* **Audience Live Mode**:
|
|
208
|
-
* **Left**: [Barrage List] + [Chat Input Box].
|
|
209
|
-
* **Right**: [Gift] [Apply for Co-guesting].
|
|
210
|
-
|
|
211
|
-
### 4. Home Layout & Interaction
|
|
212
|
-
|
|
213
|
-
#### A. Home Reference Layout
|
|
214
|
-
```
|
|
215
|
-
┌─────────────────────────────┐
|
|
216
|
-
│ AtomicXCore Live │
|
|
217
|
-
│ │
|
|
218
|
-
│ Live Room ID │
|
|
219
|
-
│ ┌─────────────────────────┐│
|
|
220
|
-
│ │ live_000001 ││ ← Input Box (with left padding, semi-transparent background)
|
|
221
|
-
│ └─────────────────────────┘│
|
|
222
|
-
│ │
|
|
223
|
-
│ Host Broadcasting │
|
|
224
|
-
│ (Click to login as anchor001)│
|
|
225
|
-
│ │
|
|
226
|
-
│ Audience Viewing │
|
|
227
|
-
│ (Click to login as user001) │
|
|
228
|
-
│ │
|
|
229
|
-
│ [ 📋 Live List ] │
|
|
230
|
-
└─────────────────────────────┘
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
#### B. Implicit Login Flow
|
|
234
|
-
**No separate login button is required on the home page**; login is automatically completed when a function button is clicked:
|
|
235
|
-
* Click "Host Broadcasting" → Login using `anchor001` → Jump to host page.
|
|
236
|
-
* Click "Audience Viewing" → Login using `user001` → Jump to audience page.
|
|
237
|
-
* Click "Live List" → Login using `user001` → Jump to list page.
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## 🎯 Implementation Details
|
|
242
|
-
|
|
243
|
-
### 1. Host Broadcasting (`host_streaming`)
|
|
244
|
-
* **Core**: `LiveCoreView(viewType = PUSH_VIEW)`
|
|
245
|
-
* **Flow**: `LiveListStore.createLive()`
|
|
246
|
-
* **Cleanup**: `endLive()` MUST be called in `onDestroy`.
|
|
247
|
-
|
|
248
|
-
### 2. Audience Viewing (`audience_streaming`)
|
|
249
|
-
* **Core**: `LiveCoreView(viewType = PLAY_VIEW)`
|
|
250
|
-
* **Flow**: `LiveListStore.joinLive()`
|
|
251
|
-
* **Cleanup**: `leaveLive()` MUST be called in `onDestroy`.
|
|
252
|
-
|
|
253
|
-
### 3. Live List (`live_list`)
|
|
254
|
-
* **Core**: `LiveListStore.fetchLiveList()` + `RecyclerView`
|
|
255
|
-
* **Data**: Subscribe to `liveState.liveList`.
|
|
256
|
-
* **Navigation**: Clicking a list item navigates to the audience page, passing the `liveID`.
|
|
257
|
-
|
|
258
|
-
### 4. Co-guest & Co-host Interaction Specifications (`co_guest` & `co_host`)
|
|
259
|
-
|
|
260
|
-
#### A. Audience Co-guesting (Host passively receives)
|
|
261
|
-
* **Host UI**: ❌ **Strictly prohibited** to display a "Co-guest Application" list button in the bottom toolbar or anywhere else.
|
|
262
|
-
* **Interaction Logic**: Upon receiving a co-guest application callback, pop up a dialog (`AlertDialog`) directly in the center of the screen:
|
|
263
|
-
* **Title**: Co-guest Application
|
|
264
|
-
* **Content**: Received a co-guest application from audience [Nickname], accept?
|
|
265
|
-
* **Operations**: [Decline] [Accept]
|
|
266
|
-
|
|
267
|
-
#### B. Host Co-hosting Panel (Pops up when clicking bottom [Co-host] button)
|
|
268
|
-
* **Presentation**: Use a bottom floating panel (`BottomSheetDialog` or custom `View` animated up); prohibit `AlertDialog`.
|
|
269
|
-
* **UI Layout (Strictly follow illustration)**:
|
|
270
|
-
```
|
|
271
|
-
┌─────────────────────────────────────┐
|
|
272
|
-
│ │
|
|
273
|
-
│ Initiate Connection [🚪 End Co-host] │ ← Red text
|
|
274
|
-
│ │
|
|
275
|
-
│ Connected (2 persons) │
|
|
276
|
-
│ ┌─────────────────────────────────┐│
|
|
277
|
-
│ │ [👤] Li Ziming [💎20] PK... ││ ← Connected users
|
|
278
|
-
│ │ [👤] Filinna [💎32] PK... ││
|
|
279
|
-
│ └─────────────────────────────────┘│
|
|
280
|
-
├─────────────────────────────────────┤
|
|
281
|
-
│ Other Live Users │
|
|
282
|
-
│ ┌─────────────────────────────────┐│
|
|
283
|
-
│ │ [👤] Li Ziming [💎20] [Cancel Inv] ││ ← Gray-black background button
|
|
284
|
-
│ │ [👤] Filinna [💎32] [Invite] ││ ← Blue background button
|
|
285
|
-
│ │ [👤] Tie Zhu [💗99] [Invite] ││
|
|
286
|
-
│ └─────────────────────────────────┘│
|
|
287
|
-
└─────────────────────────────────────┘
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
#### C. PK Button Interaction Constraints
|
|
291
|
-
* **Pre-check**: When clicking the bottom [PK] button, current connection status must be checked (`CoHostStore.connectedUsers.isEmpty()`).
|
|
292
|
-
* **Status Handling**:
|
|
293
|
-
* **Not connected**: ❌ Prohibit jump, show Toast: `"Please initiate co-hosting first"`.
|
|
294
|
-
* **Connected**: ✅ Pop up PK invitation panel.
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
## 📋 Agent Final Checklist
|
|
299
|
-
|
|
300
|
-
- [ ] **Build Verification**: Full `./gradlew assembleDebug` executed and result is SUCCESS.
|
|
301
|
-
- [ ] **API Accuracy**: Imports not modified, APIs not fabricated, `LiveInfo` field names verified.
|
|
302
|
-
- [ ] **Timeout Compliance**: Co-guesting 5-1800s, Co-hosting ≤30s.
|
|
303
|
-
- [ ] **Extra Feature Compliance**: Audio enums correct, beauty range 0-9, barrage layout overlays, and keyboard adaptation.
|
|
304
|
-
- [ ] **Gift Compliance**: Full-screen gift animations implemented on both host and audience sides.
|
|
305
|
-
- [ ] **Credential Injection**: Test UserSig automatically injected.
|
|
306
|
-
- [ ] **Dependencies Complete**: `build.gradle` and permissions checked/fixed.
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
## 🚨 Security Reminder (Code Comment Template)
|
|
311
|
-
|
|
312
|
-
```kotlin
|
|
313
|
-
/**
|
|
314
|
-
* ⚠️ Test Credential Warning
|
|
315
|
-
* - This UserSig is automatically generated by development tools and is valid for 7 days.
|
|
316
|
-
* - ❌ PROHIBITED from generating UserSig on the client side in production.
|
|
317
|
-
* - ✅ UserSig MUST be generated on a backend service before official launch.
|
|
318
|
-
* - Reference: https://trtc.io/document/35166?product=live&menulabel=uikit&platform=android
|
|
319
|
-
*/
|
|
320
|
-
```
|
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Native Live AtomicXCore Code Generation Workflow Instructions (Flutter)
|
|
3
|
-
|
|
4
|
-
## 🚨 Core Principles (Highest Priority)
|
|
5
|
-
|
|
6
|
-
**Agent MUST ensure the generated code compiles and runs successfully. Delivering non-buildable code to users is STRICTLY PROHIBITED!**
|
|
7
|
-
|
|
8
|
-
### ⚠️ Mandatory Build Verification
|
|
9
|
-
|
|
10
|
-
**After every code generation/modification, a full build verification MUST be executed**:
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
flutter build apk --debug
|
|
14
|
-
# Or on iOS environment
|
|
15
|
-
flutter build ios --debug --no-codesign
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Prohibited Actions**:
|
|
20
|
-
|
|
21
|
-
* ❌ Do NOT assume code is correct by only running `flutter analyze` (cannot detect native dependency issues)
|
|
22
|
-
* ❌ Do NOT ignore `pubspec.yaml` version conflicts
|
|
23
|
-
|
|
24
|
-
**Build Error Classification and Handling**:
|
|
25
|
-
| Error Type | Example | Resolution |
|
|
26
|
-
|---------|------|---------|
|
|
27
|
-
| Dependency Resolution Failed | `Because xxx depends on yyy...` | Check `pubspec.yaml` version compatibility, run `flutter pub get` |
|
|
28
|
-
| Missing Dependency | `Target of URI doesn't exist` | Add missing library to `dependencies` |
|
|
29
|
-
| Missing Import | `Undefined class 'xxx'` | Add import statement |
|
|
30
|
-
| Missing Asset | `Unable to load asset` | Register asset in `pubspec.yaml` under `assets` node |
|
|
31
|
-
| Missing Permission | Crash on access Camera/Mic | Check `AndroidManifest.xml` and `Info.plist` |
|
|
32
|
-
|
|
33
|
-
**Verification Flow**:
|
|
34
|
-
|
|
35
|
-
1. Execute `flutter build apk --debug`.
|
|
36
|
-
2. If failed → Analyze complete error stack → Fix → Rebuild.
|
|
37
|
-
3. Loop until `BUILD SUCCESSFUL`.
|
|
38
|
-
|
|
39
|
-
**Handling Flow**:
|
|
40
|
-
|
|
41
|
-
1. **Build Successful** → Deliver code.
|
|
42
|
-
2. **Build Failed** → Analyze error → **Auto-fix** → Rebuild.
|
|
43
|
-
* ✅ **Auto-fixable**: Missing dependencies, Missing imports, Missing permission configurations.
|
|
44
|
-
* ❌ **Not fixable**: SDK internal errors, Flutter environment configuration issues (notify user).
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 📋 Instruction Purpose and Architecture
|
|
48
|
-
|
|
49
|
-
Provides Agent with a **code generation blueprint** for implementing Native (Flutter) Live AtomicXCore core features.
|
|
50
|
-
|
|
51
|
-
**Core Architecture**:
|
|
52
|
-
|
|
53
|
-
* **Container**: `LiveCoreWidget` (View layer)
|
|
54
|
-
* **State**: `Store` (Data-driven)
|
|
55
|
-
* **Events**: `Listener` (Callback handling)
|
|
56
|
-
|
|
57
|
-
**Feature Dependency Logic (Important)**:
|
|
58
|
-
|
|
59
|
-
1. **Foundation First**: Must first use this tool (`get_flutter_live_uikit_integration`) to complete basic live streaming (host streaming/viewing/list).
|
|
60
|
-
2. **Interaction Overlay**: If user requirements include "co-guest", "PK", "audience list", must call the interaction tool (`get_flutter_live_uikit_interaction`) **after basic features are completed**.
|
|
61
|
-
3. **Empty Project Handling**: If user requests interaction features in an empty project, Agent **MUST implement basic features first**, then add interaction capabilities.
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## ⚙️ Automated Workflow Steps
|
|
66
|
-
|
|
67
|
-
### Step 0: Prerequisites (Automated)
|
|
68
|
-
|
|
69
|
-
1. **Generate Credentials**: Call `get_usersig` tool to generate test credentials.
|
|
70
|
-
* Anchors: `anchor001`, `anchor002`, `anchor003`
|
|
71
|
-
* Audience: `user001`, `user002`, `user003`
|
|
72
|
-
|
|
73
|
-
2. **Environment Check**: Check `pubspec.yaml`, auto-add if missing the following dependencies:
|
|
74
|
-
```yaml
|
|
75
|
-
dependencies:
|
|
76
|
-
flutter:
|
|
77
|
-
sdk: flutter
|
|
78
|
-
atomic_x_core: ^3.6.0 # Core library
|
|
79
|
-
permission_handler: ^11.0.0 # Permission handling
|
|
80
|
-
svgaplayer_flutter: ^2.0.0 # Gift animation (if needed)
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
3. **Permission Injection**:
|
|
85
|
-
* **Android**: Add Camera/Record Audio permissions in `android/app/src/main/AndroidManifest.xml`.
|
|
86
|
-
* **iOS**: Add `NSCameraUsageDescription` and `NSMicrophoneUsageDescription` in `ios/Runner/Info.plist`.
|
|
87
|
-
### Step 1: Fetch and Generate
|
|
88
|
-
|
|
89
|
-
**MUST prioritize and exclusively** use the **real-time documentation content** returned by this tool to generate code.
|
|
90
|
-
|
|
91
|
-
* **Anchor Only**: Generate `AnchorPage`
|
|
92
|
-
* **Audience Only**: Generate `AudiencePage`
|
|
93
|
-
* **Anchor + Audience**: Generate `MainPage` (entry selection) + `AnchorPage` + `AudiencePage`
|
|
94
|
-
|
|
95
|
-
### Step 2: Verify and Deliver
|
|
96
|
-
|
|
97
|
-
Execute `flutter build apk --debug`, deliver after ensuring no errors.
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 🚫 Code Generation Constraints (Strictly Follow)
|
|
102
|
-
|
|
103
|
-
### 1. General Code Constraints
|
|
104
|
-
|
|
105
|
-
* **NEVER Modify Import**: Uniformly use `import 'package:atomic_x_core/atomicxcore.dart';`.
|
|
106
|
-
* **NEVER Fabricate APIs**: Must strictly follow Store and Model definitions in the documentation.
|
|
107
|
-
* **MUST Consult API Documentation**: When dealing with data model fields (e.g., `LiveInfo`), must check documentation to confirm field names (e.g., confirm it's `liveOwner.userName` not `name`).
|
|
108
|
-
|
|
109
|
-
### 2. 🧩 Store and Listener Management Constraints (Lifecycle Safety)
|
|
110
|
-
|
|
111
|
-
**Core Reason**: Dart's Stream and closure listeners, if not properly released, will cause severe memory leaks or null pointer exceptions.
|
|
112
|
-
|
|
113
|
-
* **Unique Instance Principle**: All Listeners (e.g., `GiftListener`, `CoGuestListener`, `BarrageListener`) **MUST be declared as State member variables**.
|
|
114
|
-
* **NO Anonymous Inner Classes**: Prohibit writing anonymous objects directly in `addListener(Listener(...))`, must instantiate first.
|
|
115
|
-
* **Pairing Principle**: If `addListener` is called in `initState`, then `removeListener` **MUST** be called in `dispose` to prevent memory leaks and listener failures.
|
|
116
|
-
|
|
117
|
-
### 3. ⏱️ Timeout Limits (Critical Technical Point)
|
|
118
|
-
|
|
119
|
-
**MUST strictly follow these parameter limits, prioritize using values from documentation examples:**
|
|
120
|
-
|
|
121
|
-
#### A. Co-Guest (`CoGuestStore`)
|
|
122
|
-
|
|
123
|
-
* **Rules**:
|
|
124
|
-
* Optional parameter, no timeout check if not provided.
|
|
125
|
-
* If provided, range MUST be between **5 - 1800 seconds**.
|
|
126
|
-
|
|
127
|
-
* **Correct Example**:
|
|
128
|
-
```dart
|
|
129
|
-
// ✅ Recommended: Follow documentation example (e.g., 30 seconds)
|
|
130
|
-
guestStore.applyForSeat(seatIndex: -1, timeout: 30, extraInfo: null);
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
#### B. Co-Host/PK (`CoHostStore`)
|
|
134
|
-
|
|
135
|
-
* **Rules**:
|
|
136
|
-
* **Maximum 30 seconds** (backend hard limit).
|
|
137
|
-
|
|
138
|
-
* **Correct Example**:
|
|
139
|
-
```dart
|
|
140
|
-
// ✅ Recommended: Use maximum value
|
|
141
|
-
coHostStore.requestHostConnection(..., timeout: 30);
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
### 3. 🎨 Extended Feature Constraints (Beauty/Audio Effect/UI)
|
|
145
|
-
|
|
146
|
-
#### A. Audio Effect
|
|
147
|
-
|
|
148
|
-
* **Voice Changer Enum (`AudioChangerType`)**:
|
|
149
|
-
* ✅ **Allowed**: `AudioChangerType.child`, `AudioChangerType.man` and other standard enums.
|
|
150
|
-
* ❌ **Prohibited**: Using integer indices (e.g., `1`, `2`).
|
|
151
|
-
#### B. Beauty
|
|
152
|
-
|
|
153
|
-
* **Parameter Range**: **0.0 - 9.0** (Double).
|
|
154
|
-
* **UI Mapping Formula**: `sliderValue * 9.0` (assuming Slider is 0.0-1.0).
|
|
155
|
-
|
|
156
|
-
#### C. Barrage, Gift & Layout
|
|
157
|
-
|
|
158
|
-
* **Layer Requirements**: Use `Stack` widget.
|
|
159
|
-
* Bottom layer: `LiveCoreWidget` (full screen).
|
|
160
|
-
* Top layer: Barrage, gift, function buttons (use `Positioned` for positioning).
|
|
161
|
-
|
|
162
|
-
* **Keyboard Adaptation**:
|
|
163
|
-
* `Scaffold` property `resizeToAvoidBottomInset: false`, prevent keyboard from pushing up video view.
|
|
164
|
-
* Input box at top of `Stack`, use `MediaQuery` to monitor keyboard height or use `Positioned(bottom: 0)` with `SafeArea`.
|
|
165
|
-
##### Barrage Input Box
|
|
166
|
-
|
|
167
|
-
* **Position**: Fixed at bottom-left of screen, in the same row as function buttons (gift, co-guest, etc.).
|
|
168
|
-
* **Style**: Semi-transparent rounded background + placeholder text "Say something...".
|
|
169
|
-
* **Keyboard Adaptation**:
|
|
170
|
-
* When keyboard pops up, input box **MUST stay in original position**, DO NOT move up with keyboard.
|
|
171
|
-
* **MUST** set `resizeToAvoidBottomInset: false` on `Scaffold`.
|
|
172
|
-
##### Barrage Display Flow
|
|
173
|
-
|
|
174
|
-
* **Data Source**: Use `ValueListenableBuilder` to listen to `BarrageStore.create(liveId).barrageState.messageList`.
|
|
175
|
-
* **Local Echo**: After successful send, **immediately** call `appendLocalTip` to insert into local barrage list, no need to wait for server callback.
|
|
176
|
-
* **Scroll Behavior**: Auto-scroll to bottom when new message arrives.
|
|
177
|
-
|
|
178
|
-
##### Full-screen Gift Animation
|
|
179
|
-
|
|
180
|
-
**⚠️ MUST Implement**: When integrating gift feature, full-screen gift animation is **mandatory**, cannot be omitted.
|
|
181
|
-
|
|
182
|
-
* **Dependency**: Must include `svgaplayer_flutter`.
|
|
183
|
-
* **Layer**: Full-screen gift animation view must be placed **above** `LiveCoreWidget`.
|
|
184
|
-
* **Dual-side Sync**: After receiving `GiftStore.onReceiveGift` callback, **both anchor and audience** must play the full-screen animation. Prohibit playing only on audience side.
|
|
185
|
-
|
|
186
|
-
### 🎨 Default UI/UX Design and Interaction Standards (Only effective when user doesn't specify)
|
|
187
|
-
|
|
188
|
-
**⚠️ Note: The following standards are only applied as defaults when user doesn't provide specific UI design mockups or requirements.**
|
|
189
|
-
|
|
190
|
-
### 1. Global Visual Style (Global Aesthetics)
|
|
191
|
-
|
|
192
|
-
* **Immersive Dark**: `Scaffold` background MUST be `Colors.black`, `LiveCoreWidget` MUST **fill the entire screen** (`Positioned.fill`) and be at the bottom layer.
|
|
193
|
-
* **Safe Area**: All floating UI MUST be wrapped in `SafeArea`.
|
|
194
|
-
* **Text Readability**: White text over video (e.g., barrage, ID) MUST have **black shadow** (`Shadow`).
|
|
195
|
-
* **Error Prompts**: Uniformly use `SnackBar` or `FlutterToast`, DO NOT use modal Dialog to interrupt user.
|
|
196
|
-
|
|
197
|
-
### 2. Common Component Standards
|
|
198
|
-
|
|
199
|
-
* **Top Capsule (Glass Capsule)**:
|
|
200
|
-
* **Style**: **Semi-transparent black background** + **Fully rounded corners**.
|
|
201
|
-
* **Usage**: Only for top-left display of "anchor avatar + ID + popularity".
|
|
202
|
-
|
|
203
|
-
* **Common Buttons (Flat Buttons)**:
|
|
204
|
-
* **Style**: **"Text + Rounded rectangle background"**. Flat and minimalist visual style, background color is semi-transparent black or theme color.
|
|
205
|
-
* **Close Button**: Exception, uses circular semi-transparent background icon.
|
|
206
|
-
### 3. Live Room Layout Blueprint
|
|
207
|
-
|
|
208
|
-
**⚠️ Dynamic Layout Principle: Only render function buttons that user actually integrates. If user didn't request a feature (e.g., PK/beauty), strictly prohibit adding corresponding empty buttons**
|
|
209
|
-
|
|
210
|
-
#### A. Top Bar
|
|
211
|
-
|
|
212
|
-
* **Left [Room Info]**: Use **semi-transparent capsule** to wrap [Anchor Avatar | Anchor Nickname].
|
|
213
|
-
* **Right [Control Area]**: Horizontally arrange [Online Audience Count] + [Close Icon (X)].
|
|
214
|
-
|
|
215
|
-
#### B. Bottom Bar - Dynamic switching based on state
|
|
216
|
-
|
|
217
|
-
* **Preview Mode**:
|
|
218
|
-
* Content **aligned to right**: [Beauty] [Audio Effect] [Start Live (Main Button)].
|
|
219
|
-
|
|
220
|
-
* **Anchor Live Mode**:
|
|
221
|
-
* **Left**: [Barrage List (transparent background)] + [Chat Input Box].
|
|
222
|
-
* **Right**: Function array [Beauty] [Audio Effect] [Co-Host] [PK].
|
|
223
|
-
|
|
224
|
-
* **Audience Mode**:
|
|
225
|
-
* **Left**: [Barrage List] + [Chat Input Box].
|
|
226
|
-
* **Right**: [Gift] [Apply Co-Guest].
|
|
227
|
-
### 4. Home Page Layout and Interaction
|
|
228
|
-
|
|
229
|
-
#### A. Home Page Reference Layout
|
|
230
|
-
|
|
231
|
-
```
|
|
232
|
-
┌─────────────────────────────┐
|
|
233
|
-
│ AtomicXCore Live │
|
|
234
|
-
│ │
|
|
235
|
-
│ Live Room ID │
|
|
236
|
-
│ ┌─────────────────────────┐│
|
|
237
|
-
│ │ live_000001 ││ ← Input box (with left Padding, semi-transparent background)
|
|
238
|
-
│ └─────────────────────────┘│
|
|
239
|
-
│ │
|
|
240
|
-
│ Start Live as Anchor │
|
|
241
|
-
│ (Click to login as anchor001)│
|
|
242
|
-
│ │
|
|
243
|
-
│ Watch as Audience │
|
|
244
|
-
│ (Click to login as user001) │
|
|
245
|
-
│ │
|
|
246
|
-
│ [ 📋 Live List ] │
|
|
247
|
-
└─────────────────────────────┘
|
|
248
|
-
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
#### B. Implicit Login Flow
|
|
252
|
-
|
|
253
|
-
**Home page doesn't need a separate login button**, login is automatically completed when clicking function buttons:
|
|
254
|
-
|
|
255
|
-
* Click "Start Live as Anchor" → Login as `anchor001` → Navigate to anchor page.
|
|
256
|
-
* Click "Watch as Audience" → Login as `user001` → Navigate to audience page.
|
|
257
|
-
* Click "Live List" → Login as `user001` → Navigate to list page.
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## 🎯 Feature Implementation Details
|
|
262
|
-
|
|
263
|
-
### 1. Anchor Start Live (`AnchorPage`)
|
|
264
|
-
|
|
265
|
-
* **Core**: `LiveCoreWidget` + `LiveCoreController`
|
|
266
|
-
* **Flow**: `LiveListStore.createLive()`
|
|
267
|
-
* **Destroy**: MUST call `endLive()` in `dispose`.
|
|
268
|
-
|
|
269
|
-
### 2. Audience Watch (`AudiencePage`)
|
|
270
|
-
|
|
271
|
-
* **Core**: `LiveCoreWidget` + `LiveCoreController`
|
|
272
|
-
* **Flow**: `LiveListStore.joinLive()`
|
|
273
|
-
* **Destroy**: MUST call `leaveLive()` in `dispose`.
|
|
274
|
-
|
|
275
|
-
### 3. Live List (`LiveListPage`)
|
|
276
|
-
|
|
277
|
-
* **Core**: `LiveListStore.fetchLiveList()` + `GridView`/`ListView`
|
|
278
|
-
* **Data**: Subscribe to `liveState.liveList` (ValueListenable).
|
|
279
|
-
* **Navigation**: Click list item to navigate to audience page, pass `liveID`.
|
|
280
|
-
|
|
281
|
-
### 4. Co-Guest and Co-Host Interaction Standards (`co_guest` & `co_host`)
|
|
282
|
-
|
|
283
|
-
#### A. Co-Guest (Anchor passively receives)
|
|
284
|
-
|
|
285
|
-
* **Anchor UI**: ❌ **STRICTLY PROHIBIT** displaying "Co-Guest Request" list button in bottom toolbar or anywhere.
|
|
286
|
-
* **Interaction Logic**: When receiving audience co-guest application callback (`onApplicationReceived`), directly pop up dialog at screen center (`showDialog`):
|
|
287
|
-
* **Title**: Co-Guest Request
|
|
288
|
-
* **Content**: Received co-guest request from audience [nickname], accept?
|
|
289
|
-
* **Actions**: [Reject] [Accept]
|
|
290
|
-
|
|
291
|
-
* **Custom View**: Flutter version MUST implement `LiveCoreWidget.videoWidgetBuilder`'s `coGuestWidgetBuilder`, return Foreground (nickname) or Background (avatar) based on `ViewLayer`.
|
|
292
|
-
|
|
293
|
-
#### B. Co-Host Panel (Pops up when clicking bottom [Co-Host] button)
|
|
294
|
-
|
|
295
|
-
* **Presentation**: Use bottom sheet panel (`showModalBottomSheet`), prohibit using Dialog.
|
|
296
|
-
* **UI Layout (Strictly follow the diagram)**:
|
|
297
|
-
|
|
298
|
-
```
|
|
299
|
-
┌─────────────────────────────────────┐
|
|
300
|
-
│ │
|
|
301
|
-
│ Start Co-Host [🚪 End Co-Host] │ ← Red text
|
|
302
|
-
│ │
|
|
303
|
-
│ Connected (2 people) │
|
|
304
|
-
│ ┌─────────────────────────────────┐│
|
|
305
|
-
│ │ [👤] John [💎20] In PK... ││ ← Connected users
|
|
306
|
-
│ │ [👤] Alice [💎32] In PK... ││
|
|
307
|
-
│ └─────────────────────────────────┘│
|
|
308
|
-
├─────────────────────────────────────┤
|
|
309
|
-
│ Other Co-Host Users │
|
|
310
|
-
│ ┌─────────────────────────────────┐│
|
|
311
|
-
│ │ [👤] John [💎20] [Cancel Invite] ││ ← Gray-black background button
|
|
312
|
-
│ │ [👤] Alice [💎32] [Invite Co-Host] ││ ← Blue background button
|
|
313
|
-
│ │ [👤] Bob [💗99] [Invite Co-Host] ││
|
|
314
|
-
│ └─────────────────────────────────┘│
|
|
315
|
-
└─────────────────────────────────────┘
|
|
316
|
-
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
#### C. PK Button Interaction Constraints
|
|
320
|
-
|
|
321
|
-
* **Pre-check**: When clicking bottom [PK] button, MUST check current co-host status (`CoHostStore.connectedUsers.isEmpty()`).
|
|
322
|
-
* **Status Handling**:
|
|
323
|
-
* **Not Connected**: ❌ Prohibit navigation, use Toast to prompt: `"Please start co-host first"`.
|
|
324
|
-
* **Connected**: ✅ Pop up PK invitation panel.
|
|
325
|
-
|
|
326
|
-
* **Custom View**: Implement `VideoWidgetBuilder.battleWidgetBuilder` to display PK opponent info and scores.
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## 📋 Agent Final Checklist
|
|
331
|
-
|
|
332
|
-
* [ ] **Build Verification**: Executed `flutter build apk --debug` with SUCCESS result.
|
|
333
|
-
* [ ] **API Accuracy**: Did not modify Import, did not fabricate APIs, verified `LiveInfo` field names.
|
|
334
|
-
* [ ] **Timeout Compliance**: Co-guest timeout 5-1800s, co-host timeout ≤30s.
|
|
335
|
-
* [ ] **Extension Compliance**: Audio effect enums correct, beauty range 0-9, barrage layout overlays and keyboard adapted.
|
|
336
|
-
* [ ] **Gift Compliance**: Both anchor and audience have implemented full-screen gift animation display.
|
|
337
|
-
* [ ] **Credential Injection**: Test UserSig has been auto-injected.
|
|
338
|
-
* [ ] **Dependency Complete**: Checked and fixed `pubspec.yaml` and platform permission configurations.
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
## 🚨 Security Reminder (Code Comment Template)
|
|
343
|
-
|
|
344
|
-
```dart
|
|
345
|
-
/**
|
|
346
|
-
* ⚠️ Test Credential Notice
|
|
347
|
-
* - Current userSig is auto-generated by development tool, valid for 7 days
|
|
348
|
-
* - ❌ Production environment MUST NOT generate userSig on client side
|
|
349
|
-
* - ✅ Must generate on backend service before going live
|
|
350
|
-
* - Reference: https://trtc.io/document/live-overview?product=live&menulabel=uikit&platform=flutter
|
|
351
|
-
*/
|
|
352
|
-
|
|
353
|
-
```
|