@tencent-rtc/mcp 1.3.8 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/callkit/preset/android/integration.md +430 -0
- 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/chatkit/android/integration.md +490 -0
- 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 +19 -88
- 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/core-sdk/voice/android/voice-audience-list.md +263 -0
- package/resource/doc/livekit/core-sdk/voice/android/voice-audio-effect.md +222 -0
- package/resource/doc/livekit/core-sdk/voice/android/voice-barrage.md +452 -0
- package/resource/doc/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +536 -0
- package/resource/doc/livekit/core-sdk/voice/android/voice-gift.md +442 -0
- package/resource/doc/livekit/core-sdk/voice/android/voice-host-interaction.md +489 -0
- package/resource/doc/livekit/core-sdk/voice/android/voice-integration.md +574 -0
- package/resource/doc/livekit/core-sdk/voice/android/voice-room-list.md +435 -0
- package/resource/doc/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +516 -0
- package/resource/doc/livekit/core-sdk/voice/flutter/voice-integration.md +576 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-audience-list.md +263 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-audio-effect.md +212 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-barrage.md +404 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +499 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-gift.md +403 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-host-interaction.md +552 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-integration.md +514 -0
- package/resource/doc/livekit/core-sdk/voice/ios/voice-room-list.md +348 -0
- 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 +173 -337
- 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 -18
- 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 -19
- 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 -30
- 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 -59
- 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/integration.md +0 -287
- 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/iOS/workflow.md +0 -0
- 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 -487
- package/resource/doc/tuicallkit/android/integration.md +0 -286
- package/resource/doc/tuicallkit/android/workflow.md +0 -0
- 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/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 -49
- package/tools/definitions/get_native_live_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_interaction_def.js +0 -74
- 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 -95
- 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/record_prompt_def.js +0 -53
- package/tools/definitions/record_prompt_def.js.map +0 -1
- package/tools/definitions/record_result_def.js +0 -30
- package/tools/definitions/record_result_def.js.map +0 -1
- package/tools/live/get-native-live-uikit-integration.js +0 -101
- 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 -101
- 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/android/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,454 +0,0 @@
|
|
|
1
|
-
# Native Live AtomicXCore Code Generation Workflow Instructions (iOS)
|
|
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 (Must be executed, cannot be omitted)
|
|
8
|
-
|
|
9
|
-
**🚫 Prohibited Actions**:
|
|
10
|
-
- ❌ DO NOT assume code is correct based only on `read_lints` checks.
|
|
11
|
-
- ❌ DO NOT use `grep` to filter compilation output (this will cause commands to be skipped).
|
|
12
|
-
- ❌ DO NOT deliver code without compilation verification.
|
|
13
|
-
|
|
14
|
-
**✅ The Only Correct Way to Verify**:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
# Step 1: Install dependencies (if needed)
|
|
18
|
-
cd <ProjectDir> && pod install
|
|
19
|
-
|
|
20
|
-
# Step 2: Compile verification (use tail to limit output)
|
|
21
|
-
cd <ProjectDir> && xcodebuild build \
|
|
22
|
-
-scheme <SchemeName> \
|
|
23
|
-
-workspace <WorkspaceName>.xcworkspace \
|
|
24
|
-
-destination 'generic/platform=iOS' \
|
|
25
|
-
CODE_SIGNING_ALLOWED=NO 2>&1 | tail -150
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**Judging Criteria**:
|
|
29
|
-
- ✅ Output contains `BUILD SUCCEEDED` → Compilation passed, ready for delivery.
|
|
30
|
-
- ❌ Output contains `BUILD FAILED` or `error:` → Must fix and recompile.
|
|
31
|
-
|
|
32
|
-
**Common Errors & Fixes**:
|
|
33
|
-
| Error Keyword | Reason | Fix |
|
|
34
|
-
|---------------|--------|-----|
|
|
35
|
-
| `No such module 'xxx'` | Missing Pod dependency | Add to Podfile and run `pod install`. |
|
|
36
|
-
| `Cannot find 'xxx' in scope` | Missing import | Add `import xxx`. |
|
|
37
|
-
| `Use of unresolved identifier` | Incorrect API name | Consult documentation for correct API. |
|
|
38
|
-
| `NSCameraUsageDescription` | Missing Info.plist permission | Add permission description. |
|
|
39
|
-
|
|
40
|
-
**Verification Loop (Must Follow)**:
|
|
41
|
-
```
|
|
42
|
-
Execute Compilation → Failure → Analyze Error → Fix Code → Re-execute Compilation → ... → BUILD SUCCEEDED → Deliver
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 📋 Instruction Purpose & Architecture
|
|
48
|
-
|
|
49
|
-
Provides the Agent with a **code generation blueprint** for implementing core features of Native (iOS) Live AtomicXCore.
|
|
50
|
-
|
|
51
|
-
**Core Architecture**:
|
|
52
|
-
* **Container**: `LiveCoreView` (View layer)
|
|
53
|
-
* **State**: `Store` (Data-driven)
|
|
54
|
-
* **Events**: `Publisher` (Combine subscription)
|
|
55
|
-
|
|
56
|
-
**Feature Dependency Logic (Important)**:
|
|
57
|
-
1. **Base First**: Basic live streaming (Broadcasting/Viewing/List) must be completed first using the base tool (`get_native_live_uikit_integration`).
|
|
58
|
-
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.
|
|
59
|
-
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.
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## ⚙️ Automated Workflow Steps (Must be created as TODO tasks)
|
|
64
|
-
|
|
65
|
-
**🚨 The Agent MUST create the following steps as a TODO task list, complete them one by one, and check them off:**
|
|
66
|
-
|
|
67
|
-
### Step 1: Preparation
|
|
68
|
-
1. **Generate Credentials**: Call the `get_usersig` tool to generate test credentials.
|
|
69
|
-
* Host: `anchor001`, `anchor002`, `anchor003`
|
|
70
|
-
* Audience: `user001`, `user002`, `user003`
|
|
71
|
-
2. **Environment Check**: Check `Podfile` and add the following dependency if missing:
|
|
72
|
-
```ruby
|
|
73
|
-
pod 'AtomicXCore'
|
|
74
|
-
```
|
|
75
|
-
3. **Permission Injection**: Add Camera and Microphone permission descriptions in `Info.plist`:
|
|
76
|
-
```xml
|
|
77
|
-
<key>NSCameraUsageDescription</key>
|
|
78
|
-
<string>Needs camera access to record video.</string>
|
|
79
|
-
<key>NSMicrophoneUsageDescription</key>
|
|
80
|
-
<string>Needs microphone access to record audio.</string>
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Step 2: Code Generation
|
|
84
|
-
**PRIORITIZE and EXCLUSIVELY** use the **real-time documentation content** returned by this tool for code generation.
|
|
85
|
-
* **Host Only**: Generate `AnchorViewController`.
|
|
86
|
-
* **Audience Only**: Generate `AudienceViewController`.
|
|
87
|
-
* **Host + Audience**: Generate `MainViewController` (Entry selection) + `AnchorViewController` + `AudienceViewController`.
|
|
88
|
-
|
|
89
|
-
### Step 3: 🚨 Compilation Verification (Mandatory, cannot be skipped)
|
|
90
|
-
**This step MUST be executed as a standalone TODO task, cannot be omitted or merged!**
|
|
91
|
-
|
|
92
|
-
**Execution Command**:
|
|
93
|
-
```bash
|
|
94
|
-
cd <ProjectDir>/ios && pod install && \
|
|
95
|
-
xcodebuild build -scheme <SchemeName> -workspace <WorkspaceName>.xcworkspace \
|
|
96
|
-
-destination 'platform=iOS Simulator,name=iPhone 16' \
|
|
97
|
-
CODE_SIGNING_ALLOWED=NO 2>&1 | tail -150
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**Judgment & Handling**:
|
|
101
|
-
* Output contains **BUILD SUCCEEDED** → Proceed to Step 4.
|
|
102
|
-
* Output contains **BUILD FAILED** or **error:** → Analyze error → Fix code → **Re-execute this command**, loop until success.
|
|
103
|
-
|
|
104
|
-
### Step 4: Deliver Results
|
|
105
|
-
Deliver the code after confirming compilation passes.
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## 🚫 Code Generation Constraints (Strictly Follow)
|
|
110
|
-
|
|
111
|
-
### 1. General Code Constraints
|
|
112
|
-
* **Strictly Prohibited to Modify Imports**: Import paths in the documentation are verified; DO NOT modify them.
|
|
113
|
-
* **Strictly Prohibited to Fabricate APIs**: If an API is not in the documentation, DO NOT invent method or parameter names.
|
|
114
|
-
* **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`).
|
|
115
|
-
|
|
116
|
-
### 2. 🧩 Store & Publisher Management Constraints (Lifecycle Safety)
|
|
117
|
-
**Core Reason**: SDK uses Combine's `Publisher` for state subscription. Incorrect lifecycle management leads to listener failure or memory leaks.
|
|
118
|
-
|
|
119
|
-
* **Subscription Management Principle**: All `AnyCancellable` **MUST be declared as member variables** of the ViewController in `cancellableSet`.
|
|
120
|
-
* **No Ignoring Return Values**: Prohibited to not store the `AnyCancellable` returned by `.sink {}`.
|
|
121
|
-
* **Pairing Principle**: Setup subscriptions in `viewDidLoad`; they will be automatically released when the `cancellableSet` is deinitialized.
|
|
122
|
-
|
|
123
|
-
### 3. ⏱️ Timeout Limits (Critical)
|
|
124
|
-
**Strictly adhere to the following parameter limits, prioritizing values from documentation examples:**
|
|
125
|
-
|
|
126
|
-
#### A. Co-guesting (`CoGuestStore`)
|
|
127
|
-
* **Rules**:
|
|
128
|
-
* Optional parameter; if not filled, timeout is not checked.
|
|
129
|
-
* If filled, the range MUST be between **5 - 1800 seconds**.
|
|
130
|
-
* **Correct Examples**:
|
|
131
|
-
```swift
|
|
132
|
-
// ✅ Recommended: Follow doc examples (e.g., 30s)
|
|
133
|
-
CoGuestStore.shared.applyForSeat(seatIndex: -1, timeout: 30) { ... }
|
|
134
|
-
// ✅ Valid: No timeout check
|
|
135
|
-
CoGuestStore.shared.applyForSeat(seatIndex: -1, timeout: 0) { ... }
|
|
136
|
-
```
|
|
137
|
-
* **Incorrect Examples**: ❌ `timeout: 3` (too short), ❌ `timeout: 2000` (too long).
|
|
138
|
-
|
|
139
|
-
#### B. Co-hosting/PK (`CoHostStore`)
|
|
140
|
-
* **Rules**:
|
|
141
|
-
* **Maximum 30 seconds** (Hard limit).
|
|
142
|
-
* **Correct Examples**:
|
|
143
|
-
```swift
|
|
144
|
-
// ✅ Recommended: Use maximum value
|
|
145
|
-
CoHostStore.shared.requestHostConnection(..., timeout: 30) { ... }
|
|
146
|
-
```
|
|
147
|
-
* **Incorrect Examples**: ❌ `timeout: 60` (will cause request failure).
|
|
148
|
-
|
|
149
|
-
### 4. 🎨 Extra Feature Constraints (Beauty/Audio/UI)
|
|
150
|
-
|
|
151
|
-
#### A. Audio Effects
|
|
152
|
-
* **Voice Changer Enum (`AudioChangerType`)**:
|
|
153
|
-
* ✅ **Allowed**: `.child, .littleGirl, .man, .ethereal`, etc.
|
|
154
|
-
* ❌ **Prohibited**: `.uncle, .loli, .girl, .boy` (deprecated or incorrect).
|
|
155
|
-
* **Reverb Enum (`AudioReverbType`)**:
|
|
156
|
-
* ✅ **Allowed**: `.ktv, .smallRoom, .metallic`, etc.
|
|
157
|
-
* ❌ **Prohibited**: `.room, .hall, .low`.
|
|
158
|
-
|
|
159
|
-
#### B. Beauty
|
|
160
|
-
* **Parameter Range**: **0.0 - 9.0** (Float).
|
|
161
|
-
* ❌ NOT 0-1 (Float), and NOT 0-100 (Int).
|
|
162
|
-
* **UI Mapping Formula**: `sliderValue / 100.0 * 9.0`.
|
|
163
|
-
|
|
164
|
-
#### C. Barrage, Gift & Layout (Barrage, Gift & UI)
|
|
165
|
-
* **Layering Requirements**: Barrage list and full-screen gift animations MUST overlay **on top** of the video layer `LiveCoreView` using a `UIView`.
|
|
166
|
-
* **Split Screen Prohibited**: Strictly prohibited to split the screen (e.g., video on top, barrage at bottom); MUST use overlay mode.
|
|
167
|
-
|
|
168
|
-
##### Barrage Input
|
|
169
|
-
* **Position**: Fixed at the bottom left of the screen, in the same row as function buttons (Gift, Co-guest, etc.).
|
|
170
|
-
* **Style**: Semi-transparent rounded background + placeholder text "Say something...".
|
|
171
|
-
* **Keyboard Adaptation**:
|
|
172
|
-
* When the keyboard is raised, the input box **must remain in its original position** and is prohibited from moving up with the keyboard.
|
|
173
|
-
* The `LiveCoreView` constraint must be fixed to `edges.equalToSuperview()`, prohibiting distortion or upward shifting.
|
|
174
|
-
* **Strictly Prohibited** to use `UIScrollView.contentInsetAdjustmentBehavior` or automatic constraint adjustments.
|
|
175
|
-
|
|
176
|
-
##### Barrage Display Flow
|
|
177
|
-
```
|
|
178
|
-
Sending Barrage:
|
|
179
|
-
User input → Click Send/Enter → BarrageStore.sendTextMessage(text) → Insert into local barrage list immediately
|
|
180
|
-
|
|
181
|
-
Receiving Barrage:
|
|
182
|
-
Subscribe to BarrageStore.barrageState.$barrageList → New message received → Insert into barrage list → Scroll to bottom
|
|
183
|
-
```
|
|
184
|
-
* **Data Source**: Subscribe to `BarrageStore.shared.barrageState.$barrageList`.
|
|
185
|
-
* **Local Echo**: Insert into the local barrage list **immediately** after successful sending, without waiting for server callback.
|
|
186
|
-
* **Scrolling Behavior**: Automatically scroll to the bottom when a new message arrives (`scrollToRow(at: lastIndex, animated: true)`).
|
|
187
|
-
* **Message Format**: `[Nickname]: [Message Content]`, nickname uses theme color, content uses white.
|
|
188
|
-
|
|
189
|
-
* **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.
|
|
190
|
-
|
|
191
|
-
##### Full-screen Gift Animation
|
|
192
|
-
**⚠️ MANDATORY**: Full-screen gift animation is a **mandatory requirement** when integrating gift features and cannot be omitted.
|
|
193
|
-
|
|
194
|
-
* **Layering**: The full-screen gift animation view MUST overlay **on top** of the `LiveCoreView` using a separate `UIView` container.
|
|
195
|
-
* **Layout**: Constrained to `edges.equalToSuperview()`, covering the entire screen.
|
|
196
|
-
* **Dual-side Sync**: Upon receiving the `.onReceiveGift` event, the full-screen animation MUST be played on **both host and audience sides**. Playing only on the audience side is strictly prohibited.
|
|
197
|
-
|
|
198
|
-
##### ⚠️ SVGA Animation Playback (Mandatory use of SVGAPlayer, Strictly Prohibited to use UIImageView)
|
|
199
|
-
**Strictly Prohibited to use UIImageView/Kingfisher to load .svga files**. SVGA is a vector animation format, not a normal image; UIImageView cannot play it.
|
|
200
|
-
|
|
201
|
-
* **Dependency Configuration** (Podfile):
|
|
202
|
-
```ruby
|
|
203
|
-
pod 'SVGAPlayer'
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
* **Core Playback Logic (MUST use SVGAParser + SVGAPlayer)**:
|
|
207
|
-
```swift
|
|
208
|
-
import SVGAPlayer
|
|
209
|
-
|
|
210
|
-
// ❌ Incorrect: Using UIImageView to load SVGA (cannot play animation)
|
|
211
|
-
// imageView.kf.setImage(with: URL(string: gift.resourceURL))
|
|
212
|
-
|
|
213
|
-
// ✅ Correct: Using SVGAParser to parse + SVGAPlayer to play
|
|
214
|
-
svgaParser.parse(with: url) { [weak self] videoItem in
|
|
215
|
-
guard let videoItem = videoItem else { return }
|
|
216
|
-
self?.svgaPlayer.videoItem = videoItem
|
|
217
|
-
self?.svgaPlayer.startAnimation() // Start playing animation
|
|
218
|
-
}
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
* **Full Implementation Example (Within ViewController)**:
|
|
222
|
-
```swift
|
|
223
|
-
import UIKit
|
|
224
|
-
import AtomicXCore
|
|
225
|
-
import Combine
|
|
226
|
-
import SVGAPlayer
|
|
227
|
-
|
|
228
|
-
class LiveRoomViewController: UIViewController, SVGAPlayerDelegate {
|
|
229
|
-
private var cancellables = Set<AnyCancellable>()
|
|
230
|
-
|
|
231
|
-
// SVGA Player Components
|
|
232
|
-
private let svgaPlayer = SVGAPlayer()
|
|
233
|
-
private let svgaParser = SVGAParser()
|
|
234
|
-
|
|
235
|
-
override func viewDidLoad() {
|
|
236
|
-
super.viewDidLoad()
|
|
237
|
-
setupSVGAPlayer()
|
|
238
|
-
subscribeGiftEvents()
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// 1. Initialize SVGAPlayer
|
|
242
|
-
private func setupSVGAPlayer() {
|
|
243
|
-
svgaPlayer.delegate = self
|
|
244
|
-
svgaPlayer.loops = 1 // Play once
|
|
245
|
-
svgaPlayer.clearsAfterStop = true // Clear automatically after stopping
|
|
246
|
-
svgaPlayer.frame = view.bounds // Full screen
|
|
247
|
-
svgaPlayer.isHidden = true
|
|
248
|
-
view.addSubview(svgaPlayer)
|
|
249
|
-
// Ensure svgaPlayer is at the top level
|
|
250
|
-
view.bringSubviewToFront(svgaPlayer)
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// 2. Subscribe to Gift Events
|
|
254
|
-
private func subscribeGiftEvents() {
|
|
255
|
-
let giftStore = GiftStore.create(liveID: liveId)
|
|
256
|
-
giftStore.giftEventPublisher
|
|
257
|
-
.receive(on: DispatchQueue.main)
|
|
258
|
-
.sink { [weak self] event in
|
|
259
|
-
guard case .onReceiveGift(_, let gift, let count, let sender) = event else { return }
|
|
260
|
-
|
|
261
|
-
// Play full-screen gift animation
|
|
262
|
-
if !gift.resourceURL.isEmpty, let url = URL(string: gift.resourceURL) {
|
|
263
|
-
self?.playGiftAnimation(from: url)
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// (Optional) Insert gift message into barrage list
|
|
267
|
-
// let tipText = "\(sender.userName) sent \(gift.name) x \(count)"
|
|
268
|
-
// barrageStore.appendLocalTip(message: tipText)
|
|
269
|
-
}
|
|
270
|
-
.store(in: &cancellables)
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// 3. Use SVGAParser to parse and play animation
|
|
274
|
-
private func playGiftAnimation(from url: URL) {
|
|
275
|
-
svgaParser.parse(with: url, completionBlock: { [weak self] videoItem in
|
|
276
|
-
guard let self = self, let videoItem = videoItem else { return }
|
|
277
|
-
DispatchQueue.main.async {
|
|
278
|
-
self.svgaPlayer.videoItem = videoItem
|
|
279
|
-
self.svgaPlayer.isHidden = false
|
|
280
|
-
self.svgaPlayer.startAnimation()
|
|
281
|
-
}
|
|
282
|
-
}, failureBlock: { error in
|
|
283
|
-
print("SVGA Parse Failed: \(error?.localizedDescription ?? "")")
|
|
284
|
-
})
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
// 4. SVGAPlayerDelegate - Playback Finished Callback
|
|
288
|
-
func svgaPlayerDidFinishedAnimation(_ player: SVGAPlayer!) {
|
|
289
|
-
svgaPlayer.isHidden = true
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
* **Key Checkpoints**:
|
|
295
|
-
1. ✅ Import `import SVGAPlayer`
|
|
296
|
-
2. ✅ Use `SVGAParser().parse(with: url)` to parse animation URL
|
|
297
|
-
3. ✅ Use `SVGAPlayer().startAnimation()` to play animation
|
|
298
|
-
4. ✅ Implement `SVGAPlayerDelegate` to handle playback end
|
|
299
|
-
5. ❌ PROHIBITED to use `UIImageView`/`Kingfisher`/`SDWebImage` to load .svga files
|
|
300
|
-
|
|
301
|
-
### 🎨 Default UI/UX Design & Interaction Specifications (Only applies if user doesn't specify)
|
|
302
|
-
|
|
303
|
-
**⚠️ Note: The following specifications are only executed as default standards when the user does not provide specific UI design or requirements.**
|
|
304
|
-
|
|
305
|
-
### 1. Global Aesthetics
|
|
306
|
-
* **Immersive Dark**: The background of the live page must be `.black`, and the video layer (`LiveCoreView`) must **fill the entire screen** (`edges.equalToSuperview()`) and be at the bottom layer.
|
|
307
|
-
* **Safe Area**: All floating UIs must be constrained within the `safeAreaLayoutGuide`, strictly prohibiting being blocked by notches or the bottom Home bar.
|
|
308
|
-
* **Text Readability**: White text above the video (e.g., barrage, ID) must have a **black shadow** (`shadowColor = .black, offset = 0x1`).
|
|
309
|
-
* **Error Prompts**: Use **Toast** uniformly; prohibit the use of modal Alerts that interrupt the user.
|
|
310
|
-
|
|
311
|
-
### 2. Component Standards
|
|
312
|
-
* **Glass Capsule (Top)**:
|
|
313
|
-
* **Style**: **Frosted glass background** (`UIBlurEffect.dark`) + **full rounded corners**.
|
|
314
|
-
* **Application**: Only used at the top left to display "Host Avatar + ID + Popularity".
|
|
315
|
-
* **Flat Buttons**:
|
|
316
|
-
* **Style**: **"Text + Rounded Rectangle Background"**. Minimalist flat design, background color is semi-transparent black or theme color.
|
|
317
|
-
* **Close Button**: Special case, use a circular frosted glass icon.
|
|
318
|
-
* **Floating Panels**:
|
|
319
|
-
* **Style**: Only top rounded corners (`maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]`).
|
|
320
|
-
* **Taboo**: Solid color backgrounds at the bottom are prohibited; floating feeling must be maintained.
|
|
321
|
-
|
|
322
|
-
### 3. Live Room Layout Blueprint
|
|
323
|
-
**⚠️ 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.**
|
|
324
|
-
|
|
325
|
-
#### A. Top Bar
|
|
326
|
-
* **Left [Room Info]**: Wrapped in a **frosted capsule** [Host Avatar | Host Nickname].
|
|
327
|
-
* **Right [Control Area]**: Horizontally arranged [Online Audience Count] + [Close Icon (X)].
|
|
328
|
-
|
|
329
|
-
#### B. Bottom Bar - Dynamically switches based on state
|
|
330
|
-
* **Preview Mode**:
|
|
331
|
-
* Content **aligned to the right**: [Beauty] [Audio Effects] [Start Live (Main Button)].
|
|
332
|
-
* **Anchor Live Mode**:
|
|
333
|
-
* **Left**: [Barrage List (Transparent Background)] + [Chat Input Box].
|
|
334
|
-
* **Right**: Function array [Beauty] [Audio Effects] [Co-hosting] [PK].
|
|
335
|
-
* **Audience Live Mode**:
|
|
336
|
-
* **Left**: [Barrage List] + [Chat Input Box].
|
|
337
|
-
* **Right**: [Gift] [Apply for Co-guesting].
|
|
338
|
-
|
|
339
|
-
### 4. Home Layout & Interaction
|
|
340
|
-
|
|
341
|
-
#### A. Home Reference Layout
|
|
342
|
-
```
|
|
343
|
-
┌─────────────────────────────┐
|
|
344
|
-
│ AtomicXCore Live │
|
|
345
|
-
│ │
|
|
346
|
-
│ Live Room ID │
|
|
347
|
-
│ ┌─────────────────────────┐│
|
|
348
|
-
│ │ live_000001 ││ ← Input Box (with left padding, semi-transparent background)
|
|
349
|
-
│ └─────────────────────────┘│
|
|
350
|
-
│ │
|
|
351
|
-
│ Host Broadcasting │
|
|
352
|
-
│ (Click to login as anchor001)│
|
|
353
|
-
│ │
|
|
354
|
-
│ Audience Viewing │
|
|
355
|
-
│ (Click to login as user001) │
|
|
356
|
-
│ │
|
|
357
|
-
│ [ 📋 Live List ] │
|
|
358
|
-
└─────────────────────────────┘
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
#### B. Implicit Login Flow
|
|
362
|
-
**No separate login button is required on the home page**; login is automatically completed when a function button is clicked:
|
|
363
|
-
* Click "Host Broadcasting" → Login using `anchor001` → Jump to host page.
|
|
364
|
-
* Click "Audience Viewing" → Login using `user001` → Jump to audience page.
|
|
365
|
-
* Click "Live List" → Login using `user001` → Jump to list page.
|
|
366
|
-
|
|
367
|
-
---
|
|
368
|
-
|
|
369
|
-
## 🎯 Implementation Details
|
|
370
|
-
|
|
371
|
-
### 1. Host Broadcasting (`host_streaming`)
|
|
372
|
-
* **Core**: `LiveCoreView(viewType: .pushView)`
|
|
373
|
-
* **Flow**: `LiveListStore.shared.createLive()`
|
|
374
|
-
* **Cleanup**: `deinit` or when exiting the page, `endLive()` MUST be called.
|
|
375
|
-
|
|
376
|
-
### 2. Audience Viewing (`audience_streaming`)
|
|
377
|
-
* **Core**: `LiveCoreView(viewType: .playView)`
|
|
378
|
-
* **Flow**: `LiveListStore.shared.joinLive()`
|
|
379
|
-
* **Cleanup**: `deinit` or when exiting the page, `leaveLive()` MUST be called.
|
|
380
|
-
|
|
381
|
-
### 3. Live List (`live_list`)
|
|
382
|
-
* **Core**: `LiveListStore.shared.fetchLiveList()` + `UITableView/UICollectionView`
|
|
383
|
-
* **Data**: Subscribe to `liveState.liveList`.
|
|
384
|
-
* **Navigation**: Clicking a list item navigates to the audience page, passing the `liveID`.
|
|
385
|
-
|
|
386
|
-
### 4. Co-guest & Co-host Interaction Specifications (`co_guest` & `co_host`)
|
|
387
|
-
|
|
388
|
-
#### A. Audience Co-guesting (Host passively receives)
|
|
389
|
-
* **Host UI**: ❌ **Strictly prohibited** to display a "Co-guest Application" list button in the bottom toolbar or anywhere else.
|
|
390
|
-
* **Interaction Logic**: Upon receiving a co-guest application callback, pop up a dialog (`UIAlertController`) directly in the center of the screen:
|
|
391
|
-
* **Title**: Co-guest Application
|
|
392
|
-
* **Content**: Received a co-guest application from audience [Nickname], accept?
|
|
393
|
-
* **Operations**: [Decline] [Accept]
|
|
394
|
-
|
|
395
|
-
#### B. Host Co-hosting Panel (Pops up when clicking bottom [Co-host] button)
|
|
396
|
-
* **Presentation**: Use a bottom floating panel (`UIView` animated up); prohibit `UIAlertController`.
|
|
397
|
-
* **UI Layout (Strictly follow illustration)**:
|
|
398
|
-
```
|
|
399
|
-
┌─────────────────────────────────────┐
|
|
400
|
-
│ │
|
|
401
|
-
│ Initiate Connection [🚪 End Co-host] │ ← Red text
|
|
402
|
-
│ │
|
|
403
|
-
│ Connected (2 persons) │
|
|
404
|
-
│ ┌─────────────────────────────────┐│
|
|
405
|
-
│ │ [👤] Li Ziming [💎20] PK... ││ ← Connected users
|
|
406
|
-
│ │ [👤] Filinna [💎32] PK... ││
|
|
407
|
-
│ └─────────────────────────────────┘│
|
|
408
|
-
├─────────────────────────────────────┤
|
|
409
|
-
│ Other Live Users │
|
|
410
|
-
│ ┌─────────────────────────────────┐│
|
|
411
|
-
│ │ [👤] Li Ziming [💎20] [Cancel Inv] ││ ← Gray-black background button
|
|
412
|
-
│ │ [👤] Filinna [💎32] [Invite] ││ ← Blue background button
|
|
413
|
-
│ │ [👤] Tie Zhu [💗99] [Invite] ││
|
|
414
|
-
│ └─────────────────────────────────┘│
|
|
415
|
-
└─────────────────────────────────────┘
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
#### C. PK Button Interaction Constraints
|
|
419
|
-
* **Pre-check**: When clicking the bottom [PK] button, current connection status must be checked (`CoHostStore.shared.connectedUsers.isEmpty`).
|
|
420
|
-
* **Status Handling**:
|
|
421
|
-
* **Not connected**: ❌ Prohibit jump, show Toast: `"Please initiate co-hosting first"`.
|
|
422
|
-
* **Connected**: ✅ Pop up PK invitation panel.
|
|
423
|
-
|
|
424
|
-
---
|
|
425
|
-
|
|
426
|
-
## 📋 Agent Final Checklist
|
|
427
|
-
|
|
428
|
-
### 🚨 Must-do Items (None can be omitted)
|
|
429
|
-
- [ ] **🔴 Compilation Verification**: Executed the following command and output contains **BUILD SUCCEEDED** (This item must be explicitly listed in the TODO task)
|
|
430
|
-
```bash
|
|
431
|
-
xcodebuild build -scheme <ProjectName> -workspace <ProjectName>.xcworkspace -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO 2>&1 | grep -E "(error:|warning:.*\.swift|BUILD SUCCEEDED|BUILD FAILED)" | head -30
|
|
432
|
-
```
|
|
433
|
-
- [ ] **Credential Injection**: Called `get_usersig` to generate test credentials.
|
|
434
|
-
- [ ] **Dependencies Complete**: Checked `Podfile` and Info.plist permissions.
|
|
435
|
-
|
|
436
|
-
### Code Quality Check
|
|
437
|
-
- [ ] **API Accuracy**: Imports not modified, APIs not fabricated, `LiveInfo` field names verified.
|
|
438
|
-
- [ ] **Timeout Compliance**: Co-guesting 5-1800s, Co-hosting ≤30s.
|
|
439
|
-
- [ ] **Extra Feature Compliance**: Audio enums correct, beauty range 0-9, barrage layout overlays, and keyboard adaptation.
|
|
440
|
-
- [ ] **Gift Compliance**: Full-screen gift animations implemented on both host and audience sides.
|
|
441
|
-
|
|
442
|
-
---
|
|
443
|
-
|
|
444
|
-
## 🚨 Security Reminder (Code Comment Template)
|
|
445
|
-
|
|
446
|
-
```swift
|
|
447
|
-
/**
|
|
448
|
-
* ⚠️ Test Credential Warning
|
|
449
|
-
* - Current userSig is automatically generated by development tools and is valid for 7 days.
|
|
450
|
-
* - ❌ PROHIBITED from generating userSig on the client side in production.
|
|
451
|
-
* - ✅ userSig MUST be generated on a backend service before official launch.
|
|
452
|
-
* - Reference: https://trtc.io/document/35166?product=live&menulabel=uikit&platform=ios
|
|
453
|
-
*/
|
|
454
|
-
```
|