@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
|
@@ -9,14 +9,11 @@ A typical "Host Co-hosting PK" session consists of three main stages, as shown b
|
|
|
9
9
|
|
|
10
10
|
3. **PK Battle**: Both hosts compete in a PK battle, with scores updated in real time.
|
|
11
11
|
|
|
12
|
-

|
|
13
|
-
|
|
14
|
-
|
|
15
12
|
## Implementation
|
|
16
13
|
|
|
17
14
|
### Step 1: Component Integration
|
|
18
15
|
|
|
19
|
-
Refer to
|
|
16
|
+
Refer to Quick Start to integrate AtomicXCore and complete the setup of LiveCoreView.
|
|
20
17
|
|
|
21
18
|
### Step 2: Implement Cross-Room Co-hosting
|
|
22
19
|
|
|
@@ -25,13 +22,12 @@ The goal of this step is to display the video streams of two hosts in the same v
|
|
|
25
22
|
#### Inviter (Host A) Implementation
|
|
26
23
|
1. **Initiate Co-hosting Invitation**
|
|
27
24
|
|
|
28
|
-
|
|
29
25
|
When Host A selects Host B in the UI and initiates a co-hosting request, call the `requestHostConnection` method.
|
|
30
26
|
|
|
31
27
|
``` swift
|
|
32
28
|
import AtomicXCore
|
|
33
29
|
import Combine
|
|
34
|
-
|
|
30
|
+
|
|
35
31
|
// Host A's view controller
|
|
36
32
|
class AnchorAViewController {
|
|
37
33
|
private let liveId = "Host A's Room ID"
|
|
@@ -39,12 +35,12 @@ The goal of this step is to display the video streams of two hosts in the same v
|
|
|
39
35
|
private lazy var coHostStore: CoHostStore = {
|
|
40
36
|
return CoHostStore.create(liveID: self.liveId)
|
|
41
37
|
}()
|
|
42
|
-
|
|
38
|
+
|
|
43
39
|
// User clicks the "Co-host" button and selects Host B
|
|
44
40
|
func inviteHostB(targetHostLiveId: String) {
|
|
45
41
|
let layout: CoHostLayoutTemplate = .hostDynamicGrid // Choose a layout template
|
|
46
42
|
let timeout: TimeInterval = 30.0 // Invitation timeout
|
|
47
|
-
|
|
43
|
+
|
|
48
44
|
coHostStore.requestHostConnection(targetHost: targetHostLiveId,
|
|
49
45
|
layoutTemplate: layout,
|
|
50
46
|
timeout: timeout) { result in
|
|
@@ -60,7 +56,6 @@ The goal of this step is to display the video streams of two hosts in the same v
|
|
|
60
56
|
```
|
|
61
57
|
2. **Listen for Invitation Result**
|
|
62
58
|
|
|
63
|
-
|
|
64
59
|
Subscribe to `coHostEventPublisher` to receive Host B's response.
|
|
65
60
|
|
|
66
61
|
``` swift
|
|
@@ -86,17 +81,16 @@ The goal of this step is to display the video streams of two hosts in the same v
|
|
|
86
81
|
#### Invitee (Host B) Implementation
|
|
87
82
|
1. **Receive Co-hosting Invitation**
|
|
88
83
|
|
|
89
|
-
|
|
90
84
|
Host B listens for invitations from Host A via `coHostEventPublisher`.
|
|
91
85
|
|
|
92
86
|
``` swift
|
|
93
87
|
import AtomicXCore
|
|
94
88
|
import Combine
|
|
95
|
-
|
|
89
|
+
|
|
96
90
|
// Host B's view controller
|
|
97
91
|
class AnchorBViewController {
|
|
98
92
|
// ... coHostStore and cancellables initialization ...
|
|
99
|
-
|
|
93
|
+
|
|
100
94
|
// Set up listener during initialization
|
|
101
95
|
func setupListeners() {
|
|
102
96
|
coHostStore.coHostEventPublisher
|
|
@@ -112,7 +106,6 @@ The goal of this step is to display the video streams of two hosts in the same v
|
|
|
112
106
|
```
|
|
113
107
|
2. **Respond to Co-hosting Invitation**
|
|
114
108
|
|
|
115
|
-
|
|
116
109
|
After Host B receives the invitation, prompt for “Accept” or “Reject” and call the appropriate method:
|
|
117
110
|
|
|
118
111
|
``` swift
|
|
@@ -120,7 +113,7 @@ The goal of this step is to display the video streams of two hosts in the same v
|
|
|
120
113
|
func acceptInvitation(fromHostLiveId: String) {
|
|
121
114
|
coHostStore.acceptHostConnection(fromHostLiveID: fromHostLiveId, completion: nil)
|
|
122
115
|
}
|
|
123
|
-
|
|
116
|
+
|
|
124
117
|
func rejectInvitation(fromHostLiveId: String) {
|
|
125
118
|
coHostStore.rejectHostConnection(fromHostLiveID: fromHostLiveId, completion: nil)
|
|
126
119
|
}
|
|
@@ -133,13 +126,12 @@ After a successful co-hosting connection, either host can initiate a PK. Use [Ba
|
|
|
133
126
|
#### Challenger (e.g., Host A) Implementation
|
|
134
127
|
1. **Initiate PK Challenge**
|
|
135
128
|
|
|
136
|
-
|
|
137
129
|
When Host A clicks the "PK" button, call the `requestBattle` method.
|
|
138
130
|
|
|
139
131
|
``` swift
|
|
140
132
|
// Part of AnchorAViewController
|
|
141
133
|
private lazy var battleStore: BattleStore = BattleStore.create(liveID: self.liveId)
|
|
142
|
-
|
|
134
|
+
|
|
143
135
|
func startPK(with opponentUserId: String) {
|
|
144
136
|
var config = BattleConfig(duration: 300) // PK lasts 5 minutes
|
|
145
137
|
battleStore.requestBattle(config: config, userIDList: [opponentUserId], timeout: 30.0, completion: nil)
|
|
@@ -147,7 +139,6 @@ After a successful co-hosting connection, either host can initiate a PK. Use [Ba
|
|
|
147
139
|
```
|
|
148
140
|
2. **Listen for PK Status**
|
|
149
141
|
|
|
150
|
-
|
|
151
142
|
Subscribe to `battleEventPublisher` to monitor key PK events such as start and end.
|
|
152
143
|
|
|
153
144
|
``` swift
|
|
@@ -169,7 +160,6 @@ After a successful co-hosting connection, either host can initiate a PK. Use [Ba
|
|
|
169
160
|
#### Opponent (Host B) Implementation
|
|
170
161
|
1. **Receive PK Challenge**
|
|
171
162
|
|
|
172
|
-
|
|
173
163
|
Listen for PK invitations via `battleEventPublisher`.
|
|
174
164
|
|
|
175
165
|
``` swift
|
|
@@ -186,7 +176,6 @@ After a successful co-hosting connection, either host can initiate a PK. Use [Ba
|
|
|
186
176
|
```
|
|
187
177
|
2. **Respond to PK Challenge**
|
|
188
178
|
|
|
189
|
-
|
|
190
179
|
Prompt Host B for “Accept” or “Reject” and call the corresponding method:
|
|
191
180
|
|
|
192
181
|
``` swift
|
|
@@ -197,7 +186,7 @@ After a successful co-hosting connection, either host can initiate a PK. Use [Ba
|
|
|
197
186
|
// ...
|
|
198
187
|
}
|
|
199
188
|
}
|
|
200
|
-
|
|
189
|
+
|
|
201
190
|
// User clicks "Reject Challenge"
|
|
202
191
|
func rejectPK(battleId: String) {
|
|
203
192
|
battleStore.rejectBattle(battleID: battleId) { result in
|
|
@@ -211,12 +200,10 @@ After a successful co-hosting connection, either host can initiate a PK. Use [Ba
|
|
|
211
200
|
After the PK session, end the PK and disconnect co-hosting in sequence.
|
|
212
201
|
1. **End PK Battle**
|
|
213
202
|
|
|
214
|
-
|
|
215
203
|
PK typically ends automatically when the timer expires, but hosts can also end PK early. Use `exitBattle`:
|
|
216
|
-
|
|
217
204
|
|
|
218
205
|
> **Note****:**After PK ends, both hosts remain connected (side-by-side video streams). Only the PK progress bar and score panel are removed.
|
|
219
|
-
>
|
|
206
|
+
>
|
|
220
207
|
|
|
221
208
|
``` swift
|
|
222
209
|
func stopPK(battleId: String) {
|
|
@@ -233,7 +220,6 @@ After the PK session, end the PK and disconnect co-hosting in sequence.
|
|
|
233
220
|
```
|
|
234
221
|
2. **Disconnect Cross-room Co-hosting**
|
|
235
222
|
|
|
236
|
-
|
|
237
223
|
To return to solo live streaming, call `exitHostConnection`:
|
|
238
224
|
|
|
239
225
|
``` swift
|
|
@@ -251,7 +237,6 @@ After the PK session, end the PK and disconnect co-hosting in sequence.
|
|
|
251
237
|
```
|
|
252
238
|
3. **Listen for End Events**
|
|
253
239
|
|
|
254
|
-
|
|
255
240
|
Handle UI cleanup in event listeners for consistency:
|
|
256
241
|
|
|
257
242
|
``` swift
|
|
@@ -265,7 +250,7 @@ After the PK session, end the PK and disconnect co-hosting in sequence.
|
|
|
265
250
|
}
|
|
266
251
|
}
|
|
267
252
|
.store(in: &cancellables)
|
|
268
|
-
|
|
253
|
+
|
|
269
254
|
// Listen for co-host disconnect event
|
|
270
255
|
coHostStore.coHostEventPublisher
|
|
271
256
|
.sink { [weak self] event in
|
|
@@ -280,10 +265,7 @@ After the PK session, end the PK and disconnect co-hosting in sequence.
|
|
|
280
265
|
|
|
281
266
|
### Run and Test
|
|
282
267
|
|
|
283
|
-
After integrating the above features, use Host A and Host B to test the corresponding operations. The runtime effect is shown below. For UI customization, see
|
|
284
|
-
|
|
285
|
-

|
|
286
|
-
|
|
268
|
+
After integrating the above features, use Host A and Host B to test the corresponding operations. The runtime effect is shown below. For UI customization, see Refine UI Details.
|
|
287
269
|
|
|
288
270
|
## Refine UI Details
|
|
289
271
|
|
|
@@ -293,23 +275,19 @@ Use the slot capability in the `LiveCoreView.VideoViewDelegate` interface to ove
|
|
|
293
275
|
|
|
294
276
|
#### Implementation Example
|
|
295
277
|
|
|
296
|
-

|
|
297
|
-
|
|
298
|
-
|
|
299
278
|
#### Implementation
|
|
300
279
|
- **Step 1**: Create a foreground view `CustomSeatView` to display user information above the video stream.
|
|
301
|
-
|
|
302
280
|
|
|
303
281
|
> **Note:**
|
|
304
|
-
>
|
|
282
|
+
>
|
|
305
283
|
|
|
306
284
|
> You can also refer to the open-source TUILiveKit files [AnchorCoHostView.swift](https://github.com/Tencent-RTC/TUIKit_iOS/blob/main/live/Sources/Features/AnchorBoardcast/View/LivingView/Video/AnchorCoHostView.swift) and [AnchorEmptySeatView.swift](https://github.com/Tencent-RTC/TUIKit_iOS/blob/main/live/Sources/Features/AnchorBoardcast/View/LivingView/Video/AnchorEmptySeatView.swift) for complete implementation logic.
|
|
307
|
-
>
|
|
285
|
+
>
|
|
308
286
|
|
|
309
287
|
``` swift
|
|
310
288
|
import UIKit
|
|
311
289
|
import SnapKit
|
|
312
|
-
|
|
290
|
+
|
|
313
291
|
// Custom floating user info view (foreground)
|
|
314
292
|
class CustomSeatView: UIView {
|
|
315
293
|
lazy var nameLabel: UILabel = {
|
|
@@ -318,7 +296,7 @@ Use the slot capability in the `LiveCoreView.VideoViewDelegate` interface to ove
|
|
|
318
296
|
label.font = .systemFont(ofSize: 14)
|
|
319
297
|
return label
|
|
320
298
|
}()
|
|
321
|
-
|
|
299
|
+
|
|
322
300
|
override init(frame: CGRect) {
|
|
323
301
|
super.init(frame: frame)
|
|
324
302
|
backgroundColor = UIColor.black.withAlphaComponent(0.5)
|
|
@@ -335,7 +313,7 @@ Use the slot capability in the `LiveCoreView.VideoViewDelegate` interface to ove
|
|
|
335
313
|
``` swift
|
|
336
314
|
import UIKit
|
|
337
315
|
import SnapKit
|
|
338
|
-
|
|
316
|
+
|
|
339
317
|
// Custom avatar placeholder view (background)
|
|
340
318
|
class CustomAvatarView: UIView {
|
|
341
319
|
lazy var avatarImageView: UIImageView = {
|
|
@@ -343,7 +321,7 @@ Use the slot capability in the `LiveCoreView.VideoViewDelegate` interface to ove
|
|
|
343
321
|
imageView.tintColor = .gray
|
|
344
322
|
return imageView
|
|
345
323
|
}()
|
|
346
|
-
|
|
324
|
+
|
|
347
325
|
override init(frame: CGRect) {
|
|
348
326
|
super.init(frame: frame)
|
|
349
327
|
backgroundColor = .clear
|
|
@@ -361,12 +339,12 @@ Use the slot capability in the `LiveCoreView.VideoViewDelegate` interface to ove
|
|
|
361
339
|
``` swift
|
|
362
340
|
import AtomicXCore
|
|
363
341
|
import RTCRoomEngine
|
|
364
|
-
|
|
342
|
+
|
|
365
343
|
// 1. In your view controller, conform to the VideoViewDelegate protocol
|
|
366
344
|
class YourViewController: UIViewController, VideoViewDelegate {
|
|
367
|
-
|
|
345
|
+
|
|
368
346
|
// ... other code ...
|
|
369
|
-
|
|
347
|
+
|
|
370
348
|
// 2. Fully implement the protocol method, handling both viewLayer types
|
|
371
349
|
func createCoHostView(seatInfo: TUISeatFullInfo, viewLayer: ViewLayer) -> UIView? {
|
|
372
350
|
guard let userId = seatInfo.userId, !userId.isEmpty else {
|
|
@@ -386,72 +364,15 @@ Use the slot capability in the `LiveCoreView.VideoViewDelegate` interface to ove
|
|
|
386
364
|
```
|
|
387
365
|
|
|
388
366
|
#### Parameter Description:
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
<tr>
|
|
399
|
-
<td rowspan="1" colSpan="1" >`seatInfo`</td>
|
|
400
|
-
|
|
401
|
-
<td rowspan="1" colSpan="1" >`TUISeatFullInfo`</td>
|
|
402
|
-
|
|
403
|
-
<td rowspan="1" colSpan="1" >Seat information object containing user details</td>
|
|
404
|
-
</tr>
|
|
405
|
-
|
|
406
|
-
<tr>
|
|
407
|
-
<td rowspan="1" colSpan="1" >`seatInfo.userId`</td>
|
|
408
|
-
|
|
409
|
-
<td rowspan="1" colSpan="1" >`String?`</td>
|
|
410
|
-
|
|
411
|
-
<td rowspan="1" colSpan="1" >User ID on the seat</td>
|
|
412
|
-
</tr>
|
|
413
|
-
|
|
414
|
-
<tr>
|
|
415
|
-
<td rowspan="1" colSpan="1" >`seatInfo.userName`</td>
|
|
416
|
-
|
|
417
|
-
<td rowspan="1" colSpan="1" >`String?`</td>
|
|
418
|
-
|
|
419
|
-
<td rowspan="1" colSpan="1" >User nickname on the seat</td>
|
|
420
|
-
</tr>
|
|
421
|
-
|
|
422
|
-
<tr>
|
|
423
|
-
<td rowspan="1" colSpan="1" >`seatInfo.userAvatar`</td>
|
|
424
|
-
|
|
425
|
-
<td rowspan="1" colSpan="1" >`String?`</td>
|
|
426
|
-
|
|
427
|
-
<td rowspan="1" colSpan="1" >User avatar URL</td>
|
|
428
|
-
</tr>
|
|
429
|
-
|
|
430
|
-
<tr>
|
|
431
|
-
<td rowspan="1" colSpan="1" >`seatInfo.userMicrophoneStatus`</td>
|
|
432
|
-
|
|
433
|
-
<td rowspan="1" colSpan="1" >`TUIDeviceStatus`</td>
|
|
434
|
-
|
|
435
|
-
<td rowspan="1" colSpan="1" >User microphone status</td>
|
|
436
|
-
</tr>
|
|
437
|
-
|
|
438
|
-
<tr>
|
|
439
|
-
<td rowspan="1" colSpan="1" >`seatInfo.userCameraStatus`</td>
|
|
440
|
-
|
|
441
|
-
<td rowspan="1" colSpan="1" >`TUIDeviceStatus`</td>
|
|
442
|
-
|
|
443
|
-
<td rowspan="1" colSpan="1" >User camera status</td>
|
|
444
|
-
</tr>
|
|
445
|
-
|
|
446
|
-
<tr>
|
|
447
|
-
<td rowspan="1" colSpan="1" >`viewLayer`</td>
|
|
448
|
-
|
|
449
|
-
<td rowspan="1" colSpan="1" >`ViewLayer`</td>
|
|
450
|
-
|
|
451
|
-
<td rowspan="1" colSpan="1" >View layer enum<br>- `.foreground`: Foreground widget view, always displayed on top of the video<br>- `.background`: Background widget view, under the foreground view, displayed only when the user has no video stream (e.g., camera off), typically used for the user's default avatar or a placeholder image</td>
|
|
452
|
-
</tr>
|
|
453
|
-
</table>
|
|
454
|
-
|
|
367
|
+
| **Parameter** | **Type** | **Description** |
|
|
368
|
+
| --- | --- | --- |
|
|
369
|
+
| `seatInfo` | `TUISeatFullInfo` | Seat information object containing user details |
|
|
370
|
+
| `seatInfo.userId` | `String?` | User ID on the seat |
|
|
371
|
+
| `seatInfo.userName` | `String?` | User nickname on the seat |
|
|
372
|
+
| `seatInfo.userAvatar` | `String?` | User avatar URL |
|
|
373
|
+
| `seatInfo.userMicrophoneStatus` | `TUIDeviceStatus` | User microphone status |
|
|
374
|
+
| `seatInfo.userCameraStatus` | `TUIDeviceStatus` | User camera status |
|
|
375
|
+
| `viewLayer` | `ViewLayer` | View layer enum<br>- `.foreground`: Foreground widget view, always displayed on top of the video<br>- `.background`: Background widget view, under the foreground view, displayed only when the user has no video stream (e.g., camera off), typically used for the user's default avatar or a placeholder image |
|
|
455
376
|
|
|
456
377
|
### Displaying PK User Score on Video View
|
|
457
378
|
|
|
@@ -459,9 +380,6 @@ When the host starts a PK, you can attach a custom view to the opponent's video
|
|
|
459
380
|
|
|
460
381
|
#### Implementation Example
|
|
461
382
|
|
|
462
|
-

|
|
463
|
-
|
|
464
|
-
|
|
465
383
|
#### Implementation
|
|
466
384
|
- **Step 1**: Create a custom PK user view. For a complete implementation, refer to [AnchorBattleMemberInfoView.swift](https://github.com/Tencent-RTC/TUIKit_iOS/blob/main/live/Sources/Features/AnchorBoardcast/View/HostBattle/View/AnchorBattleMemberInfoView.swift).
|
|
467
385
|
|
|
@@ -469,7 +387,7 @@ When the host starts a PK, you can attach a custom view to the opponent's video
|
|
|
469
387
|
import AtomicXCore
|
|
470
388
|
import RTCRoomEngine
|
|
471
389
|
import SnapKit
|
|
472
|
-
|
|
390
|
+
|
|
473
391
|
// Custom PK user view
|
|
474
392
|
class CustomBattleUserView: UIView {
|
|
475
393
|
private let scoreView: UIView = {
|
|
@@ -478,18 +396,18 @@ When the host starts a PK, you can attach a custom view to the opponent's video
|
|
|
478
396
|
view.layer.cornerRadius = 12
|
|
479
397
|
return view
|
|
480
398
|
}()
|
|
481
|
-
|
|
399
|
+
|
|
482
400
|
private lazy var scoreLabel: UILabel = {
|
|
483
401
|
let label = UILabel()
|
|
484
402
|
label.textColor = .white
|
|
485
403
|
label.font = .systemFont(ofSize: 14, weight: .bold)
|
|
486
404
|
return label
|
|
487
405
|
}()
|
|
488
|
-
|
|
406
|
+
|
|
489
407
|
private var userId: String
|
|
490
408
|
private let battleStore: BattleStore
|
|
491
409
|
private var cancellableSet: Set<AnyCancellable> = []
|
|
492
|
-
|
|
410
|
+
|
|
493
411
|
init(liveId: String, battleUser: TUIBattleUser) {
|
|
494
412
|
self.userId = battleUser.userId
|
|
495
413
|
self.battleStore = BattleStore.create(liveID: liveId)
|
|
@@ -499,7 +417,7 @@ When the host starts a PK, you can attach a custom view to the opponent's video
|
|
|
499
417
|
setupUI()
|
|
500
418
|
subscribeBattleState()
|
|
501
419
|
}
|
|
502
|
-
|
|
420
|
+
|
|
503
421
|
private func setupUI() {
|
|
504
422
|
addSubview(scoreView)
|
|
505
423
|
scoreView.addSubview(scoreLabel)
|
|
@@ -512,7 +430,7 @@ When the host starts a PK, you can attach a custom view to the opponent's video
|
|
|
512
430
|
make.trailing.equalToSuperview().offset(-5)
|
|
513
431
|
}
|
|
514
432
|
}
|
|
515
|
-
|
|
433
|
+
|
|
516
434
|
// Subscribe to PK score changes
|
|
517
435
|
private func subscribeBattleState() {
|
|
518
436
|
battleStore.state
|
|
@@ -532,83 +450,30 @@ When the host starts a PK, you can attach a custom view to the opponent's video
|
|
|
532
450
|
``` swift
|
|
533
451
|
// 1. Let your view controller conform to the VideoViewDelegate protocol
|
|
534
452
|
extension YourViewController: VideoViewDelegate {
|
|
535
|
-
|
|
453
|
+
|
|
536
454
|
public func createBattleView(battleUser: TUIBattleUser) -> UIView? {
|
|
537
455
|
// CustomBattleUserView is your custom PK user info view
|
|
538
456
|
let customView = CustomBattleUserView(liveId: liveId, battleUser: battleUser)
|
|
539
457
|
return customView
|
|
540
458
|
}
|
|
541
|
-
|
|
459
|
+
|
|
542
460
|
}
|
|
543
461
|
```
|
|
544
462
|
|
|
545
463
|
#### Parameter Description:
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
<tr>
|
|
556
|
-
<td rowspan="1" colSpan="1" >`battleUser`</td>
|
|
557
|
-
|
|
558
|
-
<td rowspan="1" colSpan="1" >`TUIBattleUser`</td>
|
|
559
|
-
|
|
560
|
-
<td rowspan="1" colSpan="1" >PK user info object</td>
|
|
561
|
-
</tr>
|
|
562
|
-
|
|
563
|
-
<tr>
|
|
564
|
-
<td rowspan="1" colSpan="1" >`battleUser.roomId`</td>
|
|
565
|
-
|
|
566
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
567
|
-
|
|
568
|
-
<td rowspan="1" colSpan="1" >PK room ID</td>
|
|
569
|
-
</tr>
|
|
570
|
-
|
|
571
|
-
<tr>
|
|
572
|
-
<td rowspan="1" colSpan="1" >`battleUser.userId`</td>
|
|
573
|
-
|
|
574
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
575
|
-
|
|
576
|
-
<td rowspan="1" colSpan="1" >PK user ID</td>
|
|
577
|
-
</tr>
|
|
578
|
-
|
|
579
|
-
<tr>
|
|
580
|
-
<td rowspan="1" colSpan="1" >`battleUser.userName`</td>
|
|
581
|
-
|
|
582
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
583
|
-
|
|
584
|
-
<td rowspan="1" colSpan="1" >PK user nickname</td>
|
|
585
|
-
</tr>
|
|
586
|
-
|
|
587
|
-
<tr>
|
|
588
|
-
<td rowspan="1" colSpan="1" >`battleUser.avatarUrl`</td>
|
|
589
|
-
|
|
590
|
-
<td rowspan="1" colSpan="1" >`String`</td>
|
|
591
|
-
|
|
592
|
-
<td rowspan="1" colSpan="1" >PK user avatar URL</td>
|
|
593
|
-
</tr>
|
|
594
|
-
|
|
595
|
-
<tr>
|
|
596
|
-
<td rowspan="1" colSpan="1" >`battleUser.score`</td>
|
|
597
|
-
|
|
598
|
-
<td rowspan="1" colSpan="1" >`UInt`</td>
|
|
599
|
-
|
|
600
|
-
<td rowspan="1" colSpan="1" >PK score</td>
|
|
601
|
-
</tr>
|
|
602
|
-
</table>
|
|
603
|
-
|
|
464
|
+
| **Parameter** | **Type** | **Description** |
|
|
465
|
+
| --- | --- | --- |
|
|
466
|
+
| `battleUser` | `TUIBattleUser` | PK user info object |
|
|
467
|
+
| `battleUser.roomId` | `String` | PK room ID |
|
|
468
|
+
| `battleUser.userId` | `String` | PK user ID |
|
|
469
|
+
| `battleUser.userName` | `String` | PK user nickname |
|
|
470
|
+
| `battleUser.avatarUrl` | `String` | PK user avatar URL |
|
|
471
|
+
| `battleUser.score` | `UInt` | PK score |
|
|
604
472
|
|
|
605
473
|
### Displaying PK Status on Video Stream
|
|
606
474
|
|
|
607
475
|
#### Implementation Example
|
|
608
476
|
|
|
609
|
-

|
|
610
|
-
|
|
611
|
-
|
|
612
477
|
#### Implementation
|
|
613
478
|
- **Step 1**: Create a custom PK global view (CustomBattleContainerView). For a complete implementation, refer to [AnchorBattleInfoView.swift](https://github.com/Tencent-RTC/TUIKit_iOS/blob/main/live/Sources/Features/AnchorBoardcast/View/HostBattle/View/AnchorBattleInfoView.swift).
|
|
614
479
|
|
|
@@ -630,162 +495,49 @@ When the host starts a PK, you can attach a custom view to the opponent's video
|
|
|
630
495
|
In typical** live host PK scenarios,** the value of gifts received by the host is linked to the PK score (for example, when a viewer sends a "Rocket" gift, the host's PK score increases by 500 points). You can implement real-time PK score updates using our REST API.
|
|
631
496
|
|
|
632
497
|
> Note:
|
|
633
|
-
>
|
|
498
|
+
>
|
|
634
499
|
|
|
635
500
|
> The PK score system in the LiveKit backend uses pure numeric calculation and accumulation. You must calculate the PK score according to your own business logic before calling the update API. See the following PK score calculation examples:
|
|
636
|
-
>
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
<td rowspan="1" colSpan="1" >Example</td>
|
|
644
|
-
</tr>
|
|
645
|
-
|
|
646
|
-
<tr>
|
|
647
|
-
<td rowspan="1" colSpan="1" >Basic Gift</td>
|
|
648
|
-
|
|
649
|
-
<td rowspan="1" colSpan="1" >Gift value × 5</td>
|
|
650
|
-
|
|
651
|
-
<td rowspan="1" colSpan="1" >10 RMB gift → 50 points</td>
|
|
652
|
-
</tr>
|
|
653
|
-
|
|
654
|
-
<tr>
|
|
655
|
-
<td rowspan="1" colSpan="1" >Intermediate Gift</td>
|
|
656
|
-
|
|
657
|
-
<td rowspan="1" colSpan="1" >Gift value × 8</td>
|
|
658
|
-
|
|
659
|
-
<td rowspan="1" colSpan="1" >50 RMB gift → 400 points</td>
|
|
660
|
-
</tr>
|
|
661
|
-
|
|
662
|
-
<tr>
|
|
663
|
-
<td rowspan="1" colSpan="1" >Advanced Gift</td>
|
|
664
|
-
|
|
665
|
-
<td rowspan="1" colSpan="1" >Gift value × 12</td>
|
|
666
|
-
|
|
667
|
-
<td rowspan="1" colSpan="1" >100 RMB gift → 1200 points</td>
|
|
668
|
-
</tr>
|
|
669
|
-
|
|
670
|
-
<tr>
|
|
671
|
-
<td rowspan="1" colSpan="1" >Special Effect Gift</td>
|
|
672
|
-
|
|
673
|
-
<td rowspan="1" colSpan="1" >Fixed high score</td>
|
|
674
|
-
|
|
675
|
-
<td rowspan="1" colSpan="1" >520 RMB gift → 1314 points</td>
|
|
676
|
-
</tr>
|
|
677
|
-
</table>
|
|
678
|
-
|
|
679
|
-
|
|
501
|
+
>
|
|
502
|
+
| Gift Type | Score Calculation Rule | Example |
|
|
503
|
+
| --- | --- | --- |
|
|
504
|
+
| Basic Gift | Gift value × 5 | 10 RMB gift → 50 points |
|
|
505
|
+
| Intermediate Gift | Gift value × 8 | 50 RMB gift → 400 points |
|
|
506
|
+
| Advanced Gift | Gift value × 12 | 100 RMB gift → 1200 points |
|
|
507
|
+
| Special Effect Gift | Fixed high score | 520 RMB gift → 1314 points |
|
|
680
508
|
|
|
681
509
|
#### REST API Call Flow
|
|
682
510
|
|
|
683
|
-

|
|
684
|
-
|
|
685
|
-
|
|
686
511
|
#### Key Process Description
|
|
687
512
|
1. **Obtain PK Status:**
|
|
688
513
|
|
|
689
|
-
- **Callback Configuration**: Configure
|
|
514
|
+
- **Callback Configuration**: Configure PK Status Callback to have the `LiveKit` backend actively notify your system when PK starts or ends.
|
|
690
515
|
|
|
691
|
-
- **Active Query**: Your backend can call the
|
|
516
|
+
- **Active Query**: Your backend can call the PK Status Query API at any time to check the current PK status.
|
|
692
517
|
|
|
693
518
|
2. **PK Score Calculation**: Your backend calculates the PK score increment based on your business rules.
|
|
694
519
|
|
|
695
|
-
3. **PK Score Update**: Your backend calls the
|
|
520
|
+
3. **PK Score Update**: Your backend calls the Update PK Score API to update the PK score in the LiveKit backend.
|
|
696
521
|
|
|
697
522
|
4. **LiveKit Backend Syncs to Client**: The backend automatically synchronizes the updated PK score to all clients.
|
|
698
523
|
|
|
699
|
-
|
|
700
524
|
#### Involved REST API Endpoints
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
<td rowspan="1" colSpan="1" >**Request Example**</td>
|
|
708
|
-
</tr>
|
|
709
|
-
|
|
710
|
-
<tr>
|
|
711
|
-
<td rowspan="1" colSpan="1" >Active API - Query PK Status</td>
|
|
712
|
-
|
|
713
|
-
<td rowspan="1" colSpan="1" >Check whether the current room is in PK</td>
|
|
714
|
-
|
|
715
|
-
<td rowspan="1" colSpan="1" >[Example](https://write.woa.com/document/170220847572692992)</td>
|
|
716
|
-
</tr>
|
|
717
|
-
|
|
718
|
-
<tr>
|
|
719
|
-
<td rowspan="1" colSpan="1" >Active API - Update PK Score</td>
|
|
720
|
-
|
|
721
|
-
<td rowspan="1" colSpan="1" >Update the calculated PK score</td>
|
|
722
|
-
|
|
723
|
-
<td rowspan="1" colSpan="1" >[Example](https://write.woa.com/document/170220034100383744)</td>
|
|
724
|
-
</tr>
|
|
725
|
-
|
|
726
|
-
<tr>
|
|
727
|
-
<td rowspan="1" colSpan="1" >Callback Configuration - PK Start Callback</td>
|
|
728
|
-
|
|
729
|
-
<td rowspan="1" colSpan="1" >Receive real-time notification when PK starts</td>
|
|
730
|
-
|
|
731
|
-
<td rowspan="1" colSpan="1" >[Example](https://write.woa.com/document/170203265552953344)</td>
|
|
732
|
-
</tr>
|
|
733
|
-
|
|
734
|
-
<tr>
|
|
735
|
-
<td rowspan="1" colSpan="1" >Callback Configuration - PK End Callback</td>
|
|
736
|
-
|
|
737
|
-
<td rowspan="1" colSpan="1" >Receive real-time notification when PK ends</td>
|
|
738
|
-
|
|
739
|
-
<td rowspan="1" colSpan="1" >[Example](https://write.woa.com/document/170221608179601408)</td>
|
|
740
|
-
</tr>
|
|
741
|
-
</table>
|
|
742
|
-
|
|
525
|
+
| **API** | **Function Description** | **Request Example** |
|
|
526
|
+
| --- | --- | --- |
|
|
527
|
+
| Active API - Query PK Status | Check whether the current room is in PK | Example |
|
|
528
|
+
| Active API - Update PK Score | Update the calculated PK score | Example |
|
|
529
|
+
| Callback Configuration - PK Start Callback | Receive real-time notification when PK starts | Example |
|
|
530
|
+
| Callback Configuration - PK End Callback | Receive real-time notification when PK ends | Example |
|
|
743
531
|
|
|
744
532
|
## API Documentation
|
|
745
533
|
|
|
746
534
|
For detailed information on all public interfaces, properties, and methods of [CoHostStore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/cohoststore) and related classes, refer to the official API documentation included with the [AtomicXCore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore) framework. The relevant stores used in this guide are as follows:
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
<td rowspan="1" colSpan="1" >**API Reference**</td>
|
|
754
|
-
</tr>
|
|
755
|
-
|
|
756
|
-
<tr>
|
|
757
|
-
<td rowspan="1" colSpan="1" >`LiveCoreView`</td>
|
|
758
|
-
|
|
759
|
-
<td rowspan="1" colSpan="1" >Core view component for displaying and interacting with live video streams. Handles video rendering and view widgets, supports host streaming, audience co-hosting, host connections, and more.</td>
|
|
760
|
-
|
|
761
|
-
<td rowspan="1" colSpan="1" >[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.view/-live-core-view/index.html)</td>
|
|
762
|
-
</tr>
|
|
763
|
-
|
|
764
|
-
<tr>
|
|
765
|
-
<td rowspan="1" colSpan="1" >`DeviceStore`</td>
|
|
766
|
-
|
|
767
|
-
<td rowspan="1" colSpan="1" >Controls audio/video devices: microphone (on/off, volume), camera (on/off, switch, quality), screen sharing, and real-time device status monitoring.</td>
|
|
768
|
-
|
|
769
|
-
<td rowspan="1" colSpan="1" >[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-device-store/index.html)</td>
|
|
770
|
-
</tr>
|
|
771
|
-
|
|
772
|
-
<tr>
|
|
773
|
-
<td rowspan="1" colSpan="1" >`CoHostStore`</td>
|
|
774
|
-
|
|
775
|
-
<td rowspan="1" colSpan="1" >Handles host cross-room connections: supports multiple layout templates (dynamic grid, etc.), initiates/accepts/rejects connections, and manages co-host interactions.</td>
|
|
776
|
-
|
|
777
|
-
<td rowspan="1" colSpan="1" >[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-co-host-store/index.html)</td>
|
|
778
|
-
</tr>
|
|
779
|
-
|
|
780
|
-
<tr>
|
|
781
|
-
<td rowspan="1" colSpan="1" >`BattleStore`</td>
|
|
782
|
-
|
|
783
|
-
<td rowspan="1" colSpan="1" >Manages host PK battles: initiate PK (set duration/opponent), manage PK status (start/end), synchronize scores, and listen for battle results.</td>
|
|
784
|
-
|
|
785
|
-
<td rowspan="1" colSpan="1" >[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-battle-store/index.html)</td>
|
|
786
|
-
</tr>
|
|
787
|
-
</table>
|
|
788
|
-
|
|
535
|
+
| **Store/Component** | **Description** | **API Reference** |
|
|
536
|
+
| --- | --- | --- |
|
|
537
|
+
| `LiveCoreView` | Core view component for displaying and interacting with live video streams. Handles video rendering and view widgets, supports host streaming, audience co-hosting, host connections, and more. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.view/-live-core-view/index.html) |
|
|
538
|
+
| `DeviceStore` | Controls audio/video devices: microphone (on/off, volume), camera (on/off, switch, quality), screen sharing, and real-time device status monitoring. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-device-store/index.html) |
|
|
539
|
+
| `CoHostStore` | Handles host cross-room connections: supports multiple layout templates (dynamic grid, etc.), initiates/accepts/rejects connections, and manages co-host interactions. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-co-host-store/index.html) |
|
|
540
|
+
| `BattleStore` | Manages host PK battles: initiate PK (set duration/opponent), manage PK status (start/end), synchronize scores, and listen for battle results. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-battle-store/index.html) |
|
|
789
541
|
|
|
790
542
|
## FAQs
|
|
791
543
|
|
|
@@ -794,7 +546,6 @@ For detailed information on all public interfaces, properties, and methods of [C
|
|
|
794
546
|
|
|
795
547
|
- Check network stability. The invitation signaling has a default timeout of 30 seconds.
|
|
796
548
|
|
|
797
|
-
|
|
798
549
|
### What happens if one host disconnects from the network or the app crashes during co-hosting or PK?
|
|
799
550
|
|
|
800
551
|
Both `CoHostStore` and `BattleStore` include built-in heartbeat and timeout detection. If one party exits abnormally, the other party is notified via events such as `onCoHostUserLeft` or `onUserExitBattle`. You can update the UI accordingly, for example, by displaying "The other party has disconnected" and ending the interaction.
|
|
@@ -808,8 +559,6 @@ The REST API meets the security, real-time, and scalability requirements for PK
|
|
|
808
559
|
|
|
809
560
|
- **Flexible rule adaptation**: Backend configuration changes (such as adjusting gift-to-score mapping or bonus points) can be made without modifying the frontend, reducing iteration costs.
|
|
810
561
|
|
|
811
|
-
|
|
812
562
|
### How do I manage the lifecycle and events of custom views added via `VideoViewDelegate`?
|
|
813
563
|
|
|
814
564
|
LiveCoreView automatically manages views returned by delegate methods, including adding and removing them. No manual lifecycle management is required.
|
|
815
|
-
|