@tencentcloud/sdk-mcp 1.3.9 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/resource/doc/{tuicallkit/android/faq.md → callkit/faq/android-faq.md} +75 -308
- package/resource/doc/{tuicallkit/faq/common/error_code.md → callkit/faq/common/error-code.md} +2 -2
- package/resource/doc/{tuicallkit/flutter/faq.md → callkit/faq/flutter-faq.md} +83 -315
- package/resource/doc/{tuicallkit/iOS/faq.md → callkit/faq/ios-faq.md} +76 -313
- package/resource/doc/{tuicallkit/vue/faq.md → callkit/faq/web-faq.md} +78 -311
- package/resource/doc/callkit/preset/android/api.md +330 -0
- package/resource/doc/{tuicallkit → callkit/preset}/android/integration.md +63 -420
- package/resource/doc/callkit/preset/flutter/api.md +401 -0
- package/resource/doc/{tuicallkit → callkit/preset}/flutter/integration.md +53 -273
- package/resource/doc/callkit/preset/ios/api.md +282 -0
- package/resource/doc/{tuicallkit/iOS → callkit/preset/ios}/integration.md +39 -120
- package/resource/doc/callkit/preset/react/api.md +600 -0
- package/resource/doc/{tuicallkit → callkit/preset}/react/integration.md +6 -6
- package/resource/doc/callkit/preset/vue/api.md +600 -0
- package/resource/doc/{tuicallkit → callkit/preset}/vue/integration.md +5 -5
- package/resource/doc/{chatuikit → chatkit}/android/faq.md +29 -37
- package/resource/doc/{chatuikit → chatkit}/android/features/theme.md +22 -166
- package/resource/doc/{chatuikit → chatkit}/android/integration.md +30 -126
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +280 -0
- package/resource/doc/{chatuikit → chatkit}/faq/common/product.md +4 -17
- package/resource/doc/{chatuikit → chatkit}/faq/common/server.md +1 -2
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +183 -0
- package/resource/doc/{chatuikit → chatkit}/faq/flutter_sdk/faq.md +3 -3
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +279 -0
- package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/error_code.md +1 -1
- package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/faq.md +4 -4
- package/resource/doc/{chatuikit → chatkit}/flutter/features/theme.md +22 -166
- package/resource/doc/{chatuikit → chatkit}/flutter/integration.md +20 -95
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/faq.md +29 -37
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/features/theme.md +27 -176
- package/resource/doc/{chatuikit/iOS → chatkit/ios}/integration.md +78 -280
- package/resource/doc/{chatuikit/vue → chatkit/react}/components/avatar.md +0 -1
- package/resource/doc/{chatuikit → chatkit}/react/components/chat-header.md +7 -12
- package/resource/doc/{chatuikit → chatkit}/react/components/chat-setting.md +10 -17
- package/resource/doc/{chatuikit → chatkit}/react/components/chat.md +1 -1
- package/resource/doc/{chatuikit → chatkit}/react/components/component-list.md +0 -1
- package/resource/doc/{chatuikit → chatkit}/react/components/contact-list.md +122 -703
- package/resource/doc/chatkit/react/components/conversation-actions.md +174 -0
- package/resource/doc/chatkit/react/components/conversation-list.md +333 -0
- package/resource/doc/chatkit/react/components/conversation-preview.md +116 -0
- package/resource/doc/chatkit/react/components/conversation-search.md +57 -0
- package/resource/doc/{chatuikit → chatkit}/react/components/message-input.md +36 -186
- package/resource/doc/{chatuikit → chatkit}/react/components/message-list.md +21 -113
- package/resource/doc/chatkit/react/components/search.md +282 -0
- package/resource/doc/{chatuikit → chatkit}/react/components/tuikit.md +5 -26
- package/resource/doc/{chatuikit → chatkit}/react/integration.md +37 -104
- package/resource/doc/{chatuikit/react → chatkit/vue}/components/avatar.md +0 -1
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat-header.md +7 -13
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat-setting.md +13 -18
- package/resource/doc/{chatuikit → chatkit}/vue/components/chat.md +1 -2
- package/resource/doc/{chatuikit → chatkit}/vue/components/component-list.md +0 -1
- package/resource/doc/chatkit/vue/components/contact-list.md +271 -0
- package/resource/doc/chatkit/vue/components/conversation-actions.md +228 -0
- package/resource/doc/{chatuikit → chatkit}/vue/components/conversation-list.md +42 -316
- package/resource/doc/chatkit/vue/components/conversation-preview.md +213 -0
- package/resource/doc/chatkit/vue/components/conversation-search.md +50 -0
- package/resource/doc/{chatuikit → chatkit}/vue/components/message-input.md +1 -23
- package/resource/doc/{chatuikit → chatkit}/vue/components/message-list.md +23 -134
- package/resource/doc/{chatuikit → chatkit}/vue/components/search.md +73 -640
- package/resource/doc/chatkit/vue/components/tuikit.md +45 -0
- package/resource/doc/{chatuikit → chatkit}/vue/components/userpicker.md +4 -4
- package/resource/doc/{chatuikit → chatkit}/vue/faq.md +1 -1
- package/resource/doc/{chatuikit → chatkit}/vue/integration.md +53 -121
- package/resource/doc/livekit/core-sdk/live/android/api-reference/AudioEffectStore.md +283 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/BarrageStore.md +148 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/BattleStore.md +316 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CameraView.md +57 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CoGuestStore.md +419 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CoHostStore.md +325 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/DeviceStore.md +436 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/GiftStore.md +165 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LikeStore.md +49 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveAudienceStore.md +239 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveCoreView.md +74 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveSeatStore.md +417 -0
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LoginStore.md +207 -0
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-audience-list.md +17 -88
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-audio-effect.md +34 -192
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-barrage.md +26 -139
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-base-beauty.md +16 -99
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-co-guest-interaction.md +54 -161
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-gift.md +75 -455
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-host-interaction.md +91 -338
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-integration.md +108 -492
- package/resource/doc/livekit/{live → core-sdk/live}/android/live-live-list.md +27 -165
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/AudioEffectStore.md +279 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BarrageStore.md +158 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BaseBeautyStore.md +155 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BattleStore.md +304 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoGuestStore.md +394 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoHostStore.md +303 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/DeviceStore.md +410 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/GiftStore.md +160 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LikeStore.md +51 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveAudienceStore.md +231 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveCoreView.md +143 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveSeatStore.md +375 -0
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LoginStore.md +170 -0
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audience-list.md +13 -91
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audio-effect.md +34 -177
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-barrage.md +18 -102
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-base-beauty.md +24 -164
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-co-guest-interaction.md +56 -161
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-gift.md +66 -460
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-host-interaction.md +117 -364
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-integration.md +160 -543
- package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-live-list.md +22 -161
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/AudioEffectStore.md +287 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BarrageStore.md +165 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BaseBeautyStore.md +143 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BattleStore.md +298 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoGuestStore.md +349 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoHostStore.md +297 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/DeviceStore.md +471 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/GiftStore.md +179 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LikeStore.md +49 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveAudienceStore.md +238 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveCoreView.md +74 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveSeatStore.md +412 -0
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LoginStore.md +173 -0
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audience-list.md +23 -96
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audio-effect.md +33 -195
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-barrage.md +35 -150
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-base-beauty.md +20 -105
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-co-guest-interaction.md +35 -140
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-gift.md +77 -457
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-host-interaction.md +70 -317
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-integration.md +90 -473
- package/resource/doc/livekit/{live → core-sdk/live}/ios/live-live-list.md +28 -163
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-audience-list.md +17 -88
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-audio-effect.md +34 -192
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-barrage.md +26 -139
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-co-guest-interaction.md +53 -262
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-gift.md +75 -455
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-host-interaction.md +60 -272
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-integration.md +63 -440
- package/resource/doc/livekit/{voice → core-sdk/voice}/android/voice-room-list.md +23 -151
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-audience-list.md +13 -91
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-audio-effect.md +34 -177
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-barrage.md +18 -102
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-co-guest-interaction.md +44 -201
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-gift.md +66 -460
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-integration.md +57 -419
- package/resource/doc/livekit/{voice → core-sdk/voice}/flutter/voice-room-list.md +24 -157
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-audience-list.md +23 -96
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-audio-effect.md +33 -195
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-barrage.md +35 -150
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-co-guest-interaction.md +45 -254
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-gift.md +77 -457
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-host-interaction.md +52 -261
- package/resource/doc/livekit/core-sdk/voice/ios/voice-integration.md +478 -0
- package/resource/doc/livekit/{voice → core-sdk/voice}/ios/voice-room-list.md +36 -167
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-audience-list.md +15 -45
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-audio-effect.md +23 -137
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-barrage.md +25 -131
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-co-guest-interaction.md +70 -366
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-gift.md +70 -424
- package/resource/doc/livekit/core-sdk/voice/uni-app/voice-integration.md +323 -0
- package/resource/doc/livekit/{voice → core-sdk/voice}/uni-app/voice-room-list.md +24 -116
- package/resource/doc/livekit/faq/common/{error_code.md → error-code.md} +2 -3
- package/resource/doc/livekit/preset/live/vue/api-reference/index.md +780 -0
- package/resource/doc/livekit/preset/live/vue/components/barrage.md +291 -0
- package/resource/doc/livekit/{live → preset/live}/vue/components/co-guest-panel.md +9 -48
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-audience-list.md +27 -145
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-scene-panel.md +13 -76
- package/resource/doc/livekit/{live → preset/live}/vue/components/live-view.md +33 -224
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +211 -0
- package/resource/doc/livekit/preset/live/vue/faq.md +1 -0
- package/resource/doc/livekit/preset/live/vue/live-list-integration.md +244 -0
- package/resource/doc/livekit/preset/live/vue/live-player-desk-integration.md +301 -0
- package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +307 -0
- package/resource/doc/livekit/preset/live/vue/live-pusher-integration.md +754 -0
- package/resource/doc/roomkit/android/features/call-user-to-room.md +234 -0
- package/resource/doc/roomkit/android/features/room-participant-state.md +850 -0
- package/resource/doc/roomkit/android/features/room-state.md +358 -0
- package/resource/doc/roomkit/android/features/schedule-room.md +336 -0
- package/resource/doc/roomkit/android/integration.md +433 -0
- package/resource/doc/roomkit/{common/error_code.md → faq/common/error-code.md} +1 -1
- package/resource/doc/roomkit/flutter/features/call-user-to-room.md +228 -0
- package/resource/doc/roomkit/flutter/features/room-participant-state.md +796 -0
- package/resource/doc/roomkit/flutter/features/room-state.md +324 -0
- package/resource/doc/roomkit/flutter/features/schedule-room.md +324 -0
- package/resource/doc/roomkit/flutter/integration.md +405 -0
- package/resource/doc/roomkit/ios/features/call-user-to-room.md +226 -0
- package/resource/doc/roomkit/ios/features/room-participant-state.md +821 -0
- package/resource/doc/roomkit/ios/features/room-state.md +320 -0
- package/resource/doc/roomkit/ios/features/schedule-room.md +318 -0
- package/resource/doc/roomkit/ios/integration.md +384 -0
- package/resource/doc/roomkit/vue/faq.md +1 -0
- package/resource/doc/roomkit/vue/features/call-user-to-room.md +17 -53
- package/resource/doc/roomkit/vue/features/device-detection.md +30 -48
- package/resource/doc/roomkit/vue/features/device-state.md +24 -44
- package/resource/doc/roomkit/vue/features/free-beauty-panel.md +13 -36
- package/resource/doc/roomkit/vue/features/room-chat.md +31 -89
- package/resource/doc/roomkit/vue/features/room-participant-state.md +28 -50
- package/resource/doc/roomkit/vue/features/room-state.md +25 -36
- package/resource/doc/roomkit/vue/features/room-view.md +30 -127
- package/resource/doc/roomkit/vue/features/schedule-room.md +9 -40
- package/resource/doc/roomkit/vue/features/screen-share.md +22 -90
- package/resource/doc/roomkit/vue/features/virtual-background.md +13 -34
- package/resource/doc/roomkit/vue/integration.md +21 -80
- package/resource/doc/rtcengine/faq/common/userSig.md +17 -141
- package/resource/doc/rtcengine/faq/web/web.md +15 -22
- package/resource/doc/rtcengine/web/api.md +17 -21
- package/resource/doc/rtcengine/web/how_to_integrated_web_sdk.md +4 -10
- package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +4 -8
- package/resource/doc/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +3 -3
- package/resource/doc/rtcengine/web/plugin/21-advanced-auto-play-policy.md +2 -3
- package/resource/doc/rtcengine/web/plugin/22-advanced-audio-mixer.md +6 -6
- package/resource/doc/rtcengine/web/plugin/23-advanced-support-detection.md +2 -2
- package/resource/doc/rtcengine/web/plugin/24-advanced-network-quality.md +2 -4
- package/resource/doc/rtcengine/web/plugin/25-advanced-device-change.md +1 -2
- package/resource/doc/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +2 -6
- package/resource/doc/rtcengine/web/plugin/27-advanced-small-stream.md +13 -14
- package/resource/doc/rtcengine/web/plugin/28-advanced-beauty.md +10 -90
- package/resource/doc/rtcengine/web/plugin/31-advanced-plugins-overview.md +5 -8
- package/resource/doc/rtcengine/web/plugin/34-advanced-proxy.md +31 -35
- package/resource/doc/rtcengine/web/plugin/35-advanced-ai-denoiser.md +0 -2
- package/resource/doc/rtcengine/web/plugin/36-advanced-virtual-background.md +7 -49
- package/resource/doc/rtcengine/web/plugin/37-advanced-voice-changer.md +1 -1
- package/resource/doc/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -3
- package/resource/doc/rtcengine/web/plugin/40-advanced-video-mixer.md +20 -20
- package/resource/doc/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +1 -1
- package/resource/doc/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +4 -4
- package/resource/doc/rtcengine/web/plugin/43-advanced-face-detection.md +3 -3
- package/resource/doc/trtc/C++/ITRTCCloud.md +718 -2847
- package/resource/doc/trtc/C++/ITRTCStatistics.md +53 -308
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +207 -1041
- package/resource/doc/trtc/C++/ITXDeviceManager.md +127 -768
- package/resource/doc/trtc/C++/TRTCCloudCallback.md +634 -2259
- package/resource/doc/trtc/C++/TRTCTypeDef.md +726 -3465
- package/resource/doc/trtc/C++/TXLiteAVCode.md +117 -916
- package/resource/doc/trtc/android/TRTCCloud.md +638 -2612
- package/resource/doc/trtc/android/TRTCCloudDef.md +769 -3697
- package/resource/doc/trtc/android/TRTCCloudListener.md +609 -2070
- package/resource/doc/trtc/android/TRTCStatistics.md +48 -278
- package/resource/doc/trtc/android/TXAudioEffectManager.md +207 -1049
- package/resource/doc/trtc/android/TXBeautyManager.md +127 -704
- package/resource/doc/trtc/android/TXDeviceManager.md +51 -318
- package/resource/doc/trtc/android/TXLiteAVCode.md +115 -900
- package/resource/doc/trtc/iOS/TRTCCloud.md +726 -2930
- package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +580 -2099
- package/resource/doc/trtc/iOS/TRTCStatistics.md +48 -278
- package/resource/doc/trtc/iOS/TXAudioEffectManager.md +179 -896
- package/resource/doc/trtc/iOS/TXBeautyManager.md +128 -710
- package/resource/doc/trtc/iOS/TXDeviceManager.md +129 -772
- package/resource/doc/trtc/iOS/TXLiteAVCode.md +117 -915
- package/resource/doc/trtc/iOS/TXLiveSDKTypeDef.md +747 -3559
- package/server.js +1 -5
- package/server.js.map +1 -1
- package/tools/call/get_callkit_api.js +32 -0
- package/tools/call/get_callkit_api.js.map +1 -0
- package/tools/call/get_native_call_uikit_integration.js +34 -0
- package/tools/call/get_native_call_uikit_integration.js.map +1 -0
- package/tools/call/{get-web-call-integration.js → get_web_call_uikit_integration.js} +13 -8
- package/tools/call/get_web_call_uikit_integration.js.map +1 -0
- package/tools/chat/get_native_chat_uikit_feature_detail.js +34 -0
- package/tools/chat/get_native_chat_uikit_feature_detail.js.map +1 -0
- package/tools/chat/get_native_chat_uikit_integration.js +45 -0
- package/tools/chat/get_native_chat_uikit_integration.js.map +1 -0
- package/tools/chat/get_web_chat_uikit_component_detail.js +34 -0
- package/tools/chat/get_web_chat_uikit_component_detail.js.map +1 -0
- package/tools/chat/get_web_chat_uikit_integration.js +45 -0
- package/tools/chat/get_web_chat_uikit_integration.js.map +1 -0
- package/tools/common/get_faq.js +265 -0
- package/tools/common/get_faq.js.map +1 -0
- package/tools/common/{get-usersig.js → get_usersig.js} +6 -3
- package/tools/common/get_usersig.js.map +1 -0
- package/tools/common/present_framework_choice.js +63 -0
- package/tools/common/present_framework_choice.js.map +1 -0
- package/tools/common/record_skill_session.js +58 -0
- package/tools/common/record_skill_session.js.map +1 -0
- package/tools/definitions/get_callkit_api_def.js +28 -0
- package/tools/definitions/get_callkit_api_def.js.map +1 -0
- package/tools/definitions/get_faq_def.js +18 -19
- package/tools/definitions/get_faq_def.js.map +1 -1
- package/tools/definitions/get_native_call_uikit_integration_def.js +15 -34
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +31 -0
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +1 -0
- package/tools/definitions/get_native_chat_uikit_integration_def.js +16 -41
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_livekit_core_features_def.js +33 -0
- package/tools/definitions/get_native_livekit_core_features_def.js.map +1 -0
- package/tools/definitions/get_native_livekit_core_integration_def.js +33 -0
- package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -0
- package/tools/definitions/get_native_trtc_sdk_docs_def.js +32 -0
- package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +1 -0
- package/tools/definitions/get_usersig_def.js +17 -24
- package/tools/definitions/get_usersig_def.js.map +1 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js +15 -7
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js +17 -49
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js +16 -19
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +13 -18
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_livekit_api_def.js +27 -0
- package/tools/definitions/get_web_livekit_api_def.js.map +1 -0
- package/tools/definitions/get_web_livekit_component_detail_def.js +29 -0
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +1 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +13 -46
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +30 -0
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_api_def.js +25 -0
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +25 -0
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +1 -0
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +25 -0
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +23 -12
- package/tools/definitions/present_framework_choice_def.js.map +1 -1
- package/tools/definitions/record_skill_session_def.js +31 -0
- package/tools/definitions/record_skill_session_def.js.map +1 -0
- package/tools/index.js +49 -61
- package/tools/index.js.map +1 -1
- package/tools/live/get_native_livekit_core_features.js +65 -0
- package/tools/live/get_native_livekit_core_features.js.map +1 -0
- package/tools/live/get_native_livekit_core_integration.js +59 -0
- package/tools/live/get_native_livekit_core_integration.js.map +1 -0
- package/tools/live/get_web_live_uikit_integration.js +48 -0
- package/tools/live/get_web_live_uikit_integration.js.map +1 -0
- package/tools/live/get_web_livekit_api.js +32 -0
- package/tools/live/get_web_livekit_api.js.map +1 -0
- package/tools/live/get_web_livekit_component_detail.js +34 -0
- package/tools/live/get_web_livekit_component_detail.js.map +1 -0
- package/tools/room/{get-web-room-integration.js → get_web_room_uikit_integration.js} +13 -14
- package/tools/room/get_web_room_uikit_integration.js.map +1 -0
- package/tools/room/{get-web-room-feature-detail.js → get_web_roomkit_feature_detail.js} +30 -31
- package/tools/room/get_web_roomkit_feature_detail.js.map +1 -0
- package/tools/rtcengine/get_web_trtc_sdk_api.js +31 -0
- package/tools/rtcengine/get_web_trtc_sdk_api.js.map +1 -0
- package/tools/rtcengine/get_web_trtc_sdk_integration.js +31 -0
- package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +1 -0
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js +31 -0
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +1 -0
- package/tools/trtc/get_native_trtc_sdk_docs.js +73 -0
- package/tools/trtc/get_native_trtc_sdk_docs.js.map +1 -0
- package/utils/generate-structured-result.js +61 -17
- package/utils/generate-structured-result.js.map +1 -1
- package/utils/report-cls-client.js +21 -1
- package/utils/report-cls-client.js.map +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/doc/chatuikit/android/workflow.md +0 -713
- package/resource/doc/chatuikit/faq/android_sdk/client-api.md +0 -1376
- package/resource/doc/chatuikit/faq/flutter_sdk/client-api.md +0 -860
- package/resource/doc/chatuikit/faq/ios_sdk/client-api.md +0 -1371
- package/resource/doc/chatuikit/flutter/workflow.md +0 -816
- package/resource/doc/chatuikit/iOS/workflow.md +0 -0
- package/resource/doc/chatuikit/react/components/conversation-list.md +0 -765
- package/resource/doc/chatuikit/react/components/search.md +0 -885
- package/resource/doc/chatuikit/react/create-group.md +0 -22
- package/resource/doc/chatuikit/react/init.md +0 -25
- package/resource/doc/chatuikit/react/workflow.md +0 -254
- package/resource/doc/chatuikit/uniapp-app/faq.md +0 -0
- package/resource/doc/chatuikit/uniapp-app/integration.md +0 -619
- package/resource/doc/chatuikit/uniapp-app/workflow.md +0 -576
- package/resource/doc/chatuikit/vue/components/contact-list.md +0 -679
- package/resource/doc/chatuikit/vue/components/tuikit.md +0 -110
- package/resource/doc/chatuikit/vue/create-group.md +0 -26
- package/resource/doc/chatuikit/vue/init.md +0 -35
- package/resource/doc/chatuikit/vue/workflow.md +0 -395
- package/resource/doc/livekit/live/android/workflow.md +0 -322
- package/resource/doc/livekit/live/flutter/workflow.md +0 -353
- package/resource/doc/livekit/live/ios/workflow.md +0 -352
- package/resource/doc/livekit/live/vue/components/barrage.md +0 -615
- package/resource/doc/livekit/live/vue/components/stream-mixer.md +0 -442
- package/resource/doc/livekit/live/vue/faq.md +0 -0
- package/resource/doc/livekit/live/vue/live-list-integration.md +0 -195
- package/resource/doc/livekit/live/vue/live-player-desk-integration.md +0 -293
- package/resource/doc/livekit/live/vue/live-player-h5-integration.md +0 -381
- package/resource/doc/livekit/live/vue/live-pusher-integration.md +0 -598
- package/resource/doc/livekit/live/vue/states/live-state.md +0 -2656
- package/resource/doc/livekit/live/vue/workflow.md +0 -219
- package/resource/doc/livekit/voice/android/workflow.md +0 -333
- package/resource/doc/livekit/voice/flutter/workflow.md +0 -359
- package/resource/doc/livekit/voice/ios/voice-integration.md +0 -853
- package/resource/doc/livekit/voice/ios/workflow.md +0 -358
- package/resource/doc/livekit/voice/uni-app/voice-integration.md +0 -613
- package/resource/doc/livekit/voice/uni-app/workflow.md +0 -369
- package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +0 -334
- package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +0 -434
- package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +0 -685
- package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +0 -712
- package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +0 -284
- package/resource/doc/native_live/android/V2TXLivePusherObserver_api_android.md +0 -849
- package/resource/doc/native_live/android/V2TXLivePusher_api_android.md +0 -1046
- package/resource/doc/native_live/flutter/V2TXLiveCode_api_flutter.md +0 -460
- package/resource/doc/native_live/flutter/V2TXLiveDef_api_flutter.md +0 -558
- package/resource/doc/native_live/flutter/V2TXLivePlayerObserver_api_flutter.md +0 -879
- package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +0 -668
- package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +0 -456
- package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +0 -332
- package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +0 -748
- package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +0 -328
- package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +0 -505
- package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +0 -507
- package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +0 -676
- package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +0 -284
- package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +0 -820
- package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +0 -1065
- package/resource/doc/roomkit/vue/features/workflow.md +0 -553
- package/resource/doc/roomkit/vue/workflow.md +0 -733
- package/resource/doc/tuicallkit/android/workflow.md +0 -432
- package/resource/doc/tuicallkit/faq/android_sdk/call-observer-api.md +0 -786
- package/resource/doc/tuicallkit/faq/android_sdk/callkit-api.md +0 -663
- package/resource/doc/tuicallkit/faq/flutter_sdk/call-define-api.md +0 -932
- package/resource/doc/tuicallkit/faq/flutter_sdk/call-observer-api.md +0 -926
- package/resource/doc/tuicallkit/faq/flutter_sdk/callkit-api.md +0 -452
- package/resource/doc/tuicallkit/faq/ios_sdk/call-observer-api.md +0 -779
- package/resource/doc/tuicallkit/faq/ios_sdk/callkit-api.md +0 -635
- package/resource/doc/tuicallkit/flutter/workflow.md +0 -331
- package/resource/doc/tuicallkit/react/api.md +0 -1512
- package/resource/doc/tuicallkit/react/faq.md +0 -986
- package/resource/doc/tuicallkit/vue/api.md +0 -1512
- package/tools/call/get-native-call-integration.js +0 -43
- package/tools/call/get-native-call-integration.js.map +0 -1
- package/tools/call/get-web-call-api.js +0 -27
- package/tools/call/get-web-call-api.js.map +0 -1
- package/tools/call/get-web-call-integration.js.map +0 -1
- package/tools/chat/get-native-chat-feature-detail.js +0 -30
- package/tools/chat/get-native-chat-feature-detail.js.map +0 -1
- package/tools/chat/get-native-chat-integration.js +0 -45
- package/tools/chat/get-native-chat-integration.js.map +0 -1
- package/tools/chat/get-web-chat-component-detail.js +0 -31
- package/tools/chat/get-web-chat-component-detail.js.map +0 -1
- package/tools/chat/get-web-chat-integration.js +0 -45
- package/tools/chat/get-web-chat-integration.js.map +0 -1
- package/tools/chat/get-web-chat-uikit-init.js +0 -28
- package/tools/chat/get-web-chat-uikit-init.js.map +0 -1
- package/tools/chat/get-web-create-group-doc.js +0 -28
- package/tools/chat/get-web-create-group-doc.js.map +0 -1
- package/tools/common/get-faq.js +0 -91
- package/tools/common/get-faq.js.map +0 -1
- package/tools/common/get-usersig.js.map +0 -1
- package/tools/common/present-framework-choice.js +0 -16
- package/tools/common/present-framework-choice.js.map +0 -1
- package/tools/common/present-scenario-choice.js +0 -16
- package/tools/common/present-scenario-choice.js.map +0 -1
- package/tools/common/record-prompt.js +0 -55
- package/tools/common/record-prompt.js.map +0 -1
- package/tools/common/record-result.js +0 -60
- package/tools/common/record-result.js.map +0 -1
- package/tools/definitions/get_native_chat_feature_detail_def.js +0 -32
- package/tools/definitions/get_native_chat_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_native_live_api_def.js +0 -22
- package/tools/definitions/get_native_live_api_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_extra_features_def.js +0 -109
- package/tools/definitions/get_native_live_uikit_extra_features_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_integration_def.js +0 -75
- package/tools/definitions/get_native_live_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_native_live_uikit_interaction_def.js +0 -63
- package/tools/definitions/get_native_live_uikit_interaction_def.js.map +0 -1
- package/tools/definitions/get_trtc_native_api_def.js +0 -17
- package/tools/definitions/get_trtc_native_api_def.js.map +0 -1
- package/tools/definitions/get_web_call_uikit_api_def.js +0 -23
- package/tools/definitions/get_web_call_uikit_api_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_init_def.js +0 -23
- package/tools/definitions/get_web_chat_uikit_init_def.js.map +0 -1
- package/tools/definitions/get_web_create_group_doc_def.js +0 -18
- package/tools/definitions/get_web_create_group_doc_def.js.map +0 -1
- package/tools/definitions/get_web_live_state_detail_def.js +0 -19
- package/tools/definitions/get_web_live_state_detail_def.js.map +0 -1
- package/tools/definitions/get_web_live_uikit_component_detail_def.js +0 -27
- package/tools/definitions/get_web_live_uikit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_room_feature_detail_def.js +0 -92
- package/tools/definitions/get_web_room_feature_detail_def.js.map +0 -1
- package/tools/definitions/present_scenario_choice_def.js +0 -53
- package/tools/definitions/present_scenario_choice_def.js.map +0 -1
- package/tools/definitions/record_prompt_def.js +0 -58
- package/tools/definitions/record_prompt_def.js.map +0 -1
- package/tools/definitions/record_result_def.js +0 -46
- package/tools/definitions/record_result_def.js.map +0 -1
- package/tools/live/get-native-live-uikit-integration.js +0 -177
- package/tools/live/get-native-live-uikit-integration.js.map +0 -1
- package/tools/live/get-web-live-component-detail.js +0 -31
- package/tools/live/get-web-live-component-detail.js.map +0 -1
- package/tools/live/get-web-live-state-detail.js +0 -31
- package/tools/live/get-web-live-state-detail.js.map +0 -1
- package/tools/live/get-web-live-uikit-integration.js +0 -52
- package/tools/live/get-web-live-uikit-integration.js.map +0 -1
- package/tools/live/get_native_live_uikit_extra_features.js +0 -105
- package/tools/live/get_native_live_uikit_extra_features.js.map +0 -1
- package/tools/live/get_native_live_uikit_interaction.js +0 -194
- package/tools/live/get_native_live_uikit_interaction.js.map +0 -1
- package/tools/native_live/get-native-live-api.js +0 -31
- package/tools/native_live/get-native-live-api.js.map +0 -1
- package/tools/room/get-web-room-feature-detail.js.map +0 -1
- package/tools/room/get-web-room-integration.js.map +0 -1
- package/tools/rtcengine/get-rtcengine-web-sdk-integration.js +0 -28
- package/tools/rtcengine/get-rtcengine-web-sdk-integration.js.map +0 -1
- package/tools/rtcengine/get-trtc-sdk-faq.js +0 -32
- package/tools/rtcengine/get-trtc-sdk-faq.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-api.js +0 -28
- package/tools/rtcengine/get-trtc-web-sdk-api.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-faq.js +0 -30
- package/tools/rtcengine/get-trtc-web-sdk-faq.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-integration.js +0 -29
- package/tools/rtcengine/get-trtc-web-sdk-integration.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-plugin.js +0 -45
- package/tools/rtcengine/get-trtc-web-sdk-plugin.js.map +0 -1
- package/tools/trtc/get-trtc-native-api.js +0 -31
- package/tools/trtc/get-trtc-native-api.js.map +0 -1
- package/utils/handle-component-name.js +0 -33
- package/utils/handle-component-name.js.map +0 -1
- /package/resource/doc/{rtcengine/web → callkit/core-sdk}/.gitkeep +0 -0
- /package/resource/doc/{chatuikit → chatkit}/faq/common/server_error_code.md +0 -0
- /package/resource/doc/{chatuikit → chatkit}/flutter/faq.md +0 -0
- /package/resource/doc/{chatuikit → chatkit}/react/faq.md +0 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
TUIRoomKit 是腾讯云提供的一站式多人音视频房间解决方案,集成了完整的 UI 组件和核心功能。通过本文档,开发者可以快速了解如何将 TUIRoomKit 集成到项目中,实现多人音视频房间功能。本文还将详细介绍如何快速替换图片资源、本地化文案等个性化配置,帮助开发者打造符合品牌特色的音视频应用。
|
|
2
|
+
| 房间准备页 | 标准房间主页 | 大型研讨会房间主页 | 成员管理 |
|
|
3
|
+
| --- | --- | --- | --- |
|
|
4
|
+
| | | | |
|
|
5
|
+
|
|
6
|
+
## 前提条件
|
|
7
|
+
|
|
8
|
+
### 开通服务
|
|
9
|
+
|
|
10
|
+
请参考 开通服务 领取 TUIRoomKit 体验版,并在 [应用管理](https://console.cloud.tencent.com/trtc) 页面获取以下信息:
|
|
11
|
+
- **SDKAppID**:应用标识(必填),腾讯云基于 SDKAppID 完成计费统计。
|
|
12
|
+
|
|
13
|
+
- **SDKSecretKey**:应用密钥,用于初始化配置文件的密钥信息。
|
|
14
|
+
|
|
15
|
+
### 环境准备
|
|
16
|
+
- `Android` 5.0 (SDK API level 21)及以上。
|
|
17
|
+
|
|
18
|
+
- `Gradle` 8.0 及以上。
|
|
19
|
+
|
|
20
|
+
- `Android` 5.0 以上的设备。
|
|
21
|
+
|
|
22
|
+
- 需使用 `JDK` 17、18 或 19 版本。
|
|
23
|
+
|
|
24
|
+
## 快速接入
|
|
25
|
+
|
|
26
|
+
### **步骤1:下载 TUIRoomKit 组件**
|
|
27
|
+
|
|
28
|
+
在 [GitHub](https://github.com/Tencent-RTC/TUIKit_Android) 中克隆/下载代码,然后将 `room` 子目录和 `atomic_x` 子目录拷贝到您当前 `Android` 项目的 `app` 文件夹同级目录中。
|
|
29
|
+
|
|
30
|
+
### 步骤2:工程配置
|
|
31
|
+
|
|
32
|
+
#### 1. 导入 TUIRoomKit 组件
|
|
33
|
+
|
|
34
|
+
在工程根目录下的 `settings.gradle.kts` 或 `settings.gradle`文件中,增加以下代码以导入 `tuiroomkit` 组件。
|
|
35
|
+
|
|
36
|
+
【settings.gradle.kts】
|
|
37
|
+
``` java
|
|
38
|
+
include(":tuiroomkit")
|
|
39
|
+
project(":tuiroomkit").projectDir = File(settingsDir, "room/tuiroomkit")
|
|
40
|
+
|
|
41
|
+
include(":atomic_x")
|
|
42
|
+
project(":atomic_x").projectDir = File(settingsDir, "atomic_x")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
【settings.gradle】
|
|
46
|
+
``` java
|
|
47
|
+
include ':tuiroomkit'
|
|
48
|
+
project(':tuiroomkit').projectDir = new File(settingsDir, "room/tuiroomkit")
|
|
49
|
+
|
|
50
|
+
include(":atomic_x")
|
|
51
|
+
project(':atomic_x').projectDir = new File(settingsDir, "atomic_x")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### 2. 添加组件依赖
|
|
55
|
+
|
|
56
|
+
在 `app` 目录下找到 `build.gradle.kts`(或 `build.gradle`)文件,并在文件中增加以下代码,该步骤的作用是声明当前 App 对新加入的 **tuiroomkit** 组件的依赖。
|
|
57
|
+
|
|
58
|
+
【build.gradle.kts】
|
|
59
|
+
``` java
|
|
60
|
+
dependencies {
|
|
61
|
+
// 添加 tuiroomkit 依赖
|
|
62
|
+
api(project(":tuiroomkit"))
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
【build.gradle】
|
|
67
|
+
``` java
|
|
68
|
+
dependencies {
|
|
69
|
+
// 添加 tuiroomkit 依赖
|
|
70
|
+
api project(':tuiroomkit')
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
> **说明:**
|
|
75
|
+
>
|
|
76
|
+
|
|
77
|
+
> TUIRoomKit 内部已默认依赖 TRTC SDK、IM SDK 等公共库,您无需单独配置。
|
|
78
|
+
>
|
|
79
|
+
|
|
80
|
+
#### 3. 配置混淆规则
|
|
81
|
+
|
|
82
|
+
由于 SDK 内部使用了 Java 反射,请在 `proguard-rules.pro`文件中添加以下代码,将相关类加入不混淆名单,以确保功能正常运行。
|
|
83
|
+
``` java
|
|
84
|
+
-keep class com.tencent.** { *; }
|
|
85
|
+
-keep class com.tencent.beacon.** { *; }
|
|
86
|
+
-keep class com.tencent.cloud.iai.lib.** { *; }
|
|
87
|
+
-keep class com.tencent.qimei.** { *; }
|
|
88
|
+
-keep class com.tencent.xmagic.** { *; }
|
|
89
|
+
-keep class com.tcmediax.** { *; }
|
|
90
|
+
|
|
91
|
+
# Google 序列化/反序列化框架 Gson 库相关混淆
|
|
92
|
+
-keep class com.google.gson.** { *; }
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### 4. 修改 AndroidManifest.xml
|
|
97
|
+
|
|
98
|
+
为了防止编译时`AndroidManifest`合并过程中产生属性冲突,您需要在 `app/src/main/AndroidManifest.xml` 文件的 `<application>` 节点中,添加 `tools:replace="android:allowBackup"` 和 `android:allowBackup="false"`,用以覆盖组件内的设置。
|
|
99
|
+
``` xml
|
|
100
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
101
|
+
xmlns:tools="http://schemas.android.com/tools">
|
|
102
|
+
<!-- 添加如下配置覆盖 依赖的 sdk 中的配置 -->
|
|
103
|
+
<application
|
|
104
|
+
android:allowBackup="false"
|
|
105
|
+
tools:replace="android:allowBackup" />
|
|
106
|
+
</manifest>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### 5. 完成项目同步
|
|
110
|
+
|
|
111
|
+
在您完成上述步骤后,通常情况下 Android Studio 会自动为您弹出 **Sync Now **按钮,您需要点击该同步按钮完成项目的同步,若 IDE 没有自动弹出同步按钮,请您手动点击工具栏中的同步按钮进行项目的同步,同步后 IDE 会完成项目的构建配置和索引等工作,您就可以在您的项目中正常使用 TUIRoomKit 组件了。
|
|
112
|
+
|
|
113
|
+
### 步骤3:登录
|
|
114
|
+
|
|
115
|
+
代码集成完成后,您需要完成登录。这是**使用 TUIRoomKit 的关键步骤**,因为只有在登录成功后才能正常使用 TUIRoomKit 的各项功能,故请您耐心检查相关参数是否配置正确:
|
|
116
|
+
|
|
117
|
+
> **说明:**
|
|
118
|
+
>
|
|
119
|
+
|
|
120
|
+
> 在示例代码中,直接进行了登录接口的调用。但在实际项目场景下,强烈推荐**您在完成自己的用户身份验证等相关登录操作后,再调用 AtomicXCore 的登录服务**。这样可以避免因过早调用登录服务,导致业务逻辑混乱或数据不一致的问题,同时也能更好地适配您项目中现有的用户管理和权限控制体系。
|
|
121
|
+
>
|
|
122
|
+
|
|
123
|
+
``` java
|
|
124
|
+
import android.os.Bundle
|
|
125
|
+
import androidx.appcompat.app.AppCompatActivity
|
|
126
|
+
import io.trtc.tuikit.atomicxcore.api.login.LoginStore
|
|
127
|
+
import io.trtc.tuikit.atomicxcore.api.CompletionHandler
|
|
128
|
+
import android.util.Log
|
|
129
|
+
|
|
130
|
+
class MainActivity : AppCompatActivity() {
|
|
131
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
132
|
+
super.onCreate(savedInstanceState)
|
|
133
|
+
LoginStore.shared.login(
|
|
134
|
+
this, // context
|
|
135
|
+
1400000001, // 替换为项目的 sdkAppID
|
|
136
|
+
"test_001", // 替换为项目的 userID
|
|
137
|
+
"xxxxxxxxxxx", // 替换为项目的 userSig
|
|
138
|
+
object : CompletionHandler {
|
|
139
|
+
override fun onSuccess() {
|
|
140
|
+
// 登录成功处理
|
|
141
|
+
Log.d("Login", "login success");
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
override fun onFailure(code: Int, desc: String) {
|
|
145
|
+
// 登录失败处理
|
|
146
|
+
Log.e("Login", "login failed, code: $code, error: $desc");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**登录接口参数说明:**
|
|
155
|
+
| 参数 | 类型 | 说明 |
|
|
156
|
+
| --- | --- | --- |
|
|
157
|
+
| `sdkAppID` | `Int32` | 从 [控制台](https://console.cloud.tencent.com/trtc) 获取,通常是以 `140` 或 `160` 开头的 10 位整数。 |
|
|
158
|
+
| `userID` | `String` | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。为避免多端登录冲突,**请勿使用**`1`、`123`**等简单 ID**。 |
|
|
159
|
+
| `userSig` | `String` | 用于腾讯云鉴权的票据。更多信息请参见 如何计算及使用 UserSig。<br>【注意事项】<br>- 开发环境:可以采用本地 `GenerateTestUserSig.genTestSig` 函数生成 userSig 或者通过 [UserSig 辅助工具](https://console.cloud.tencent.com/im/tool-usersig) 生成临时的 userSig。<br>- 生产环境:为了防止密钥泄露,请务必采用服务端生成 userSig 的方式。详细信息请参考 服务端生成 UserSig。 |
|
|
160
|
+
|
|
161
|
+
### 步骤4:设置头像和昵称
|
|
162
|
+
|
|
163
|
+
首次登录的用户没有头像和昵称信息,需要通过 `LoginStore` 的 `setSelfInfo`接口设置个人信息:
|
|
164
|
+
``` java
|
|
165
|
+
import android.util.Log
|
|
166
|
+
import io.trtc.tuikit.atomicxcore.api.CompletionHandler
|
|
167
|
+
import io.trtc.tuikit.atomicxcore.api.login.LoginStore
|
|
168
|
+
import io.trtc.tuikit.atomicxcore.api.login.UserProfile
|
|
169
|
+
|
|
170
|
+
private val TAG = "Test"
|
|
171
|
+
|
|
172
|
+
fun setSelfInfo() {
|
|
173
|
+
val userProfile = UserProfile(
|
|
174
|
+
userID = "test_001", // 您已经登录的userID
|
|
175
|
+
nickname = "tom", // 设置昵称
|
|
176
|
+
avatarURL = "http://xxx.png" // 设置头像URL
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
LoginStore.shared.setSelfInfo(userProfile, object : CompletionHandler {
|
|
180
|
+
override fun onSuccess() {
|
|
181
|
+
Log.d(TAG, "setSelfInfo success")
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
override fun onFailure(code: Int, desc: String) {
|
|
185
|
+
Log.e(TAG, "setSelfInfo failed code:$code, message:$desc")
|
|
186
|
+
}
|
|
187
|
+
})
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**setSelfInfo接口参数说明:**
|
|
192
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
193
|
+
| --- | --- | --- | --- |
|
|
194
|
+
| `userProfile` | `UserProfile` | 是 | 个人用户信息核心模型,包含:<br>- userID:要设置用户信息的用户 ID。<br>- nickname:昵称信息。<br>- avatarURL:头像链接。 |
|
|
195
|
+
| `completion` | `CompletionHandler` | 否 | 设置个人信息接口的结果回调。若失败会返回错误码和错误信息。 |
|
|
196
|
+
|
|
197
|
+
### 步骤5:创建房间
|
|
198
|
+
|
|
199
|
+
在`TUIRoomKit` 组件中,`RoomMainView`是集成了完整的多人音视频房间功能的核心界面,以下将对开发者演示如何以房主身份将`RoomMainView`嵌入到应用中。
|
|
200
|
+
|
|
201
|
+
#### **实现方式:**
|
|
202
|
+
1. **加载创建视图页面**:懒加载方式实例化 `RoomMainView `。
|
|
203
|
+
|
|
204
|
+
2. **构造进房的配置项**:进入房间后是否需要自动打开音视频设备的配置项。
|
|
205
|
+
|
|
206
|
+
3. **初始化房间主页面**:通过房主身份初始化房间主页面。
|
|
207
|
+
|
|
208
|
+
4. **将视图添加到视图 Activity**:在`Activity`的 `onCreate` 方法中,将 `RoomMainView` 添加到`Activity`中,并使用布局使其充满整个视图区域。
|
|
209
|
+
|
|
210
|
+
> **说明:**
|
|
211
|
+
>
|
|
212
|
+
|
|
213
|
+
> 移动端仅支持创建标准房间,如您需要创建大型研讨会房间,请参考 Web 快速接入 使用 Web 端创建。
|
|
214
|
+
>
|
|
215
|
+
|
|
216
|
+
#### **示例代码:**
|
|
217
|
+
``` java
|
|
218
|
+
import android.os.Bundle
|
|
219
|
+
import androidx.appcompat.app.AppCompatActivity
|
|
220
|
+
import com.trtc.uikit.roomkit.view.RoomMainView
|
|
221
|
+
import io.trtc.tuikit.atomicxcore.api.room.CreateRoomOptions
|
|
222
|
+
|
|
223
|
+
// MainActivity 代表您加载房间主页面的 Activity
|
|
224
|
+
class MainActivity : AppCompatActivity() {
|
|
225
|
+
|
|
226
|
+
// 1 加载创建视图页面
|
|
227
|
+
private val roomView: RoomMainView by lazy {
|
|
228
|
+
RoomMainView(this).apply {
|
|
229
|
+
// 2 构造进房的配置项
|
|
230
|
+
val config = RoomMainView.ConnectConfig(
|
|
231
|
+
autoEnableMicrophone = true, // 进房后是否自动开启麦克风
|
|
232
|
+
autoEnableCamera = true, // 进房后是否自动开启摄像头
|
|
233
|
+
autoEnableSpeaker = true // 进房后是否自动开启扬声器
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
val options = CreateRoomOptions(roomName = "roomName") // 房间名称
|
|
237
|
+
val behavior = RoomMainView.RoomBehavior.Create(options)
|
|
238
|
+
// 3 初始化房间主页面
|
|
239
|
+
init("roomID", behavior, config)
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
244
|
+
super.onCreate(savedInstanceState)
|
|
245
|
+
// 4. 将视图添加到视图Activity
|
|
246
|
+
setContentView(roomView)
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**RoomMainView init 函数参数详细说明****:**
|
|
252
|
+
| 参数 | 类型 | 说明 |
|
|
253
|
+
| --- | --- | --- |
|
|
254
|
+
| `roomID` | `String` | - 字符串类型的房间唯一标识符。<br>- 限制长度为 0-48 字节。<br>- 建议仅包含数字、英文字母(区分大小写)、下划线(_)和连字符(-)。避免使用空格和中文字符。 |
|
|
255
|
+
| `behavior` | `RoomBehavior` | 房间主页面初始化来源。<br>- Create: 房主身份创建房间。此方式需要构造创建房间配置项,关于 CreateRoomOptions 的详细用法请参考:CreateRoomOptions 结构体详细说明。<br>- Join:参与者身份加入房间。 |
|
|
256
|
+
| `config` | `ConnectConfig` | 进房后音视频设备控制的配置项。 |
|
|
257
|
+
|
|
258
|
+
**ConnectConfig 参数详细说明****:**
|
|
259
|
+
| 参数 | 类型 | 说明 |
|
|
260
|
+
| --- | --- | --- |
|
|
261
|
+
| autoEnableMicrophone | `Boolean` | 进房后是否自动开启麦克风<br>- true:自动开启 (默认值)。<br>- false:不自动开启。 |
|
|
262
|
+
| autoEnableCamera | `Boolean` | 进房后是否自动开启摄像头。<br>- true:自动开启 (默认值)。<br>- false:不自动开启。 |
|
|
263
|
+
| autoEnableSpeaker | `Boolean` | 进房后是否自动开启扬声器。<br>- true:自动开启 (默认值)。<br>- false:不自动开启。 |
|
|
264
|
+
|
|
265
|
+
##### CreateRoomOptions 结构体详细说明
|
|
266
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
267
|
+
| --- | --- | --- | --- |
|
|
268
|
+
| `roomName` | `String` | 否 | - 房间名称,可以不设置,默认为空字符串。<br>- 限制长度为 0-60 字节。<br>- 支持中英文、数字、特殊字符。 |
|
|
269
|
+
| `password` | `String` | 否 | - 房间密码,空字符串 "" 通常表示该房间不设密码。<br>- 限制长度为 0-32 字节。<br>- 推荐使用 4-8 位纯数字,方便移动端输入。设置后,其他用户加入房间时需输入密码。建议不要存储明文敏感信息。 |
|
|
270
|
+
| `isAllMicrophoneDisabled` | `Boolean` | 否 | 是否全员禁止打开麦克风。开启后,除房主/管理员外,普通参与者默认禁止打开麦克风。<br>- true:禁止。<br>- false:取消禁止 (默认值)。 |
|
|
271
|
+
| `isAllCameraDisabled` | `Boolean` | 否 | 是否全员禁止打开摄像头。开启后,除房主/管理员外,普通参与者默认禁止打开摄像头。<br>- true:禁止。<br>- false:取消禁止(默认值)。 |
|
|
272
|
+
| `isAllScreenShareDisabled` | `Boolean` | 否 | 是否全员禁止发起屏幕共享。开启后,仅房主/管理员可进行屏幕共享。<br>- true:禁止。<br>- false:取消禁止(默认值)。 |
|
|
273
|
+
| `isAllMessageDisabled` | `Boolean` | 否 | 是否全员禁止发送聊天消息(禁言)。开启后,普通参与者无法在房间内发送文字消息。<br>- true:禁止。<br>- false:取消禁止(默认值)。 |
|
|
274
|
+
|
|
275
|
+
### 步骤6:加入房间
|
|
276
|
+
|
|
277
|
+
以下示例将向开发者演示如何以参与者身份将`RoomMainView`嵌入到应用中。
|
|
278
|
+
|
|
279
|
+
#### **实现方式:**
|
|
280
|
+
1. **加载创建视图页面**:懒加载方式实例化 `RoomMainView `。
|
|
281
|
+
|
|
282
|
+
2. **构造进房的配置项**:进入房间后是否需要自动打开音视频设备的配置项。
|
|
283
|
+
|
|
284
|
+
3. **初始化房间主页面**:通过参与者身份初始化房间主页面。
|
|
285
|
+
|
|
286
|
+
4. **将视图添加到视图 Activity**:在`Activity`的 `onCreate` 方法中,将 `RoomMainView` 添加到`Activity`中,并使用布局使其充满整个视图区域。
|
|
287
|
+
|
|
288
|
+
> **说明:**
|
|
289
|
+
>
|
|
290
|
+
|
|
291
|
+
> 使用 **TUIRoomKit** 组件进入大型研讨会房间时,需确保 Web 端创建的研讨会房间的房间 ID 以 `webinar_` 开头。
|
|
292
|
+
>
|
|
293
|
+
|
|
294
|
+
#### 代码示例:
|
|
295
|
+
``` java
|
|
296
|
+
import android.os.Bundle
|
|
297
|
+
import androidx.appcompat.app.AppCompatActivity
|
|
298
|
+
import com.trtc.uikit.roomkit.view.RoomMainView
|
|
299
|
+
|
|
300
|
+
// MainActivity 代表您加载房间主页面的 Activity
|
|
301
|
+
class MainActivity : AppCompatActivity() {
|
|
302
|
+
|
|
303
|
+
// 1 加载创建视图页面
|
|
304
|
+
private val roomView: RoomMainView by lazy {
|
|
305
|
+
RoomMainView(this).apply {
|
|
306
|
+
// 2 构造进房的配置项
|
|
307
|
+
val config = RoomMainView.ConnectConfig(
|
|
308
|
+
autoEnableMicrophone = true, // 进房后是否自动开启麦克风
|
|
309
|
+
autoEnableCamera = true, // 进房后是否自动开启摄像头
|
|
310
|
+
autoEnableSpeaker = true // 进房后是否自动开启扬声器
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
val behavior = RoomMainView.RoomBehavior.Join
|
|
314
|
+
// 3 初始化房间主页面
|
|
315
|
+
init("roomID", behavior, config)
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
320
|
+
super.onCreate(savedInstanceState)
|
|
321
|
+
// 4. 将视图添加到视图Activity
|
|
322
|
+
setContentView(roomView)
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
**参数详细说明请参考:**RoomMainView init 函数参数详细说明和 ConnectConfig 参数详细说明。
|
|
328
|
+
|
|
329
|
+
## 核心功能
|
|
330
|
+
|
|
331
|
+
接入`RoomMainView`代码后,开发者将得到一个完整的多人音视频页面,内部包含成员管理,音视频设备控制,房间信息展示等功能,这是 `TUIRoomKit` 组件的核心。
|
|
332
|
+
| 标准房间 | 大型研讨会房间 |
|
|
333
|
+
| --- | --- |
|
|
334
|
+
| | |
|
|
335
|
+
|
|
336
|
+
## 界面定制
|
|
337
|
+
|
|
338
|
+
`RoomMainView`房间主页面内功能丰富,可定制化度高,开发者可以根据实际产品需求,对 UI 进行定制化修改,以适配业务交互场景。以下将详细为开发者展示`RoomMainView`页面中视图组件,便于开发者快速修改。
|
|
339
|
+
| 标准房间 | 大型研讨会房间 |
|
|
340
|
+
| --- | --- |
|
|
341
|
+
| | |
|
|
342
|
+
|
|
343
|
+
`RoomMainView`**中组件详细说明**
|
|
344
|
+
| 组件 | 功能描述 | 定制化建议 |
|
|
345
|
+
| --- | --- | --- |
|
|
346
|
+
| [RoomMainView](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/room/tuiroomkit/src/main/java/com/trtc/uikit/roomkit/view/RoomMainView.kt) | 房间主视图容器,负责协调各子组件的布局与数据流转。 | 可调整整体背景、安全区域适配、组件显隐逻辑。 |
|
|
347
|
+
| [RoomTopBarView](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/room/tuiroomkit/src/main/java/com/trtc/uikit/roomkit/view/main/RoomTopBarView.kt) | 顶部导航栏,包含房间信息、摄像头和声音控制、退出房间功能入口。 | 可替换图标、调整背景透明度、添加自定义按钮(例如录制、 窗口化)。 |
|
|
348
|
+
| [RoomView](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/room/tuiroomkit/src/main/java/com/trtc/uikit/roomkit/view/main/RoomView.kt) | 视频流展示区域,采用瀑布流布局管理多个用户视频画面。 | 可修改布局算法(行列数、间距)、分页指示器样式、空状态视图。 |
|
|
349
|
+
| [RoomVideoNameOverlayView](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/room/tuiroomkit/src/main/java/com/trtc/uikit/roomkit/view/main/roomview/RoomVideoNameOverlayView.kt) | 单个视频流单元格挂件,承载用户视频画面与基本信息。 | 可自定义视频渲染层、用户信息面板(头像、徽章)、互动控件(语音波形)。 |
|
|
350
|
+
| [RoomBottomBarView](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/room/tuiroomkit/src/main/java/com/trtc/uikit/roomkit/view/main/RoomBottomBarView.kt) | 底部工具栏,集成麦克风、摄像头、成员管理操作按钮。 | 可重新排列按钮顺序、修改按钮样式(颜色、尺寸)、添加业务相关功能(例如屏幕分享、会中呼叫、美颜)。 |
|
|
351
|
+
|
|
352
|
+
## 图标定制
|
|
353
|
+
|
|
354
|
+
接入 `TUIRoomKit`组件后,开发者可以根据实际 UI 交互需求直接替换组件下的图标资源, 以适配开发者的业务场景。
|
|
355
|
+
|
|
356
|
+
**常用的图片文件列表**
|
|
357
|
+
| 图标 | 文件名 | 说明 |
|
|
358
|
+
| --- | --- | --- |
|
|
359
|
+
| | roomkit_ic_camera_off.png | 摄像头关闭图标 |
|
|
360
|
+
| | roomkit_ic_camera_on.png | 摄像头开启图标 |
|
|
361
|
+
| | roomkit_ic_microphone_off.png | 麦克风关闭图标 |
|
|
362
|
+
| | roomkit_ic_microphone_on.png | 麦克风开启图标 |
|
|
363
|
+
| | roomkit_icon_user_room_manager.png | 管理员身份标识图标 |
|
|
364
|
+
| | roomkit_ic_video_seat_owner.png | 房主身份标识图标 |
|
|
365
|
+
|
|
366
|
+
## 文案定制
|
|
367
|
+
|
|
368
|
+
TUIRoomKit 使用 Android 通用的 XML 资源文件来管理 UI 所需的文案显示,您可以直接通过 `XML` 文件修改需要调整的文案:
|
|
369
|
+
|
|
370
|
+
## 常见问题
|
|
371
|
+
|
|
372
|
+
### 每次进房都需要调用登录吗?
|
|
373
|
+
|
|
374
|
+
不需要。通常您只需要完成一次 `LoginStore.shared.login` 调用即可,我们建议您将 `LoginStore.shared.login` 和
|
|
375
|
+
|
|
376
|
+
`LoginStore.shared.logout` 与自己的登录业务关联。
|
|
377
|
+
|
|
378
|
+
### Android 14 以上机型切到后台后, 采集音视频无画面/无声音?
|
|
379
|
+
|
|
380
|
+
Android 14 及以上版本,应用在后台采集摄像头或麦克风数据时,必须启动前台服务并声明对应的服务类型,否则无法正常采集,解决方案可按照下面步骤:
|
|
381
|
+
1. AndroidManifest.xml 声明 `FOREGROUND_SERVICE` 、 `FOREGROUND_SERVICE_CAMERA` 、 `FOREGROUND_SERVICE_MICROPHONE` 权限和 service 声明。
|
|
382
|
+
|
|
383
|
+
``` xml
|
|
384
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
385
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
|
|
386
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
|
|
387
|
+
|
|
388
|
+
<service
|
|
389
|
+
android:name=".MediaCaptureService"
|
|
390
|
+
android:foregroundServiceType="camera|microphone" />
|
|
391
|
+
```
|
|
392
|
+
2. 在界面启动后开启后台采集服务。
|
|
393
|
+
|
|
394
|
+
``` java
|
|
395
|
+
import android.app.NotificationChannel
|
|
396
|
+
import android.app.NotificationManager
|
|
397
|
+
import android.app.Service
|
|
398
|
+
import android.content.Intent
|
|
399
|
+
import android.content.pm.ServiceInfo
|
|
400
|
+
import android.os.Bundle
|
|
401
|
+
import android.os.IBinder
|
|
402
|
+
import androidx.appcompat.app.AppCompatActivity
|
|
403
|
+
import androidx.core.app.NotificationCompat
|
|
404
|
+
|
|
405
|
+
class MainActivity : AppCompatActivity() {
|
|
406
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
407
|
+
super.onCreate(savedInstanceState)
|
|
408
|
+
startForegroundService(Intent(this, MediaCaptureService::class.java))
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
class MediaCaptureService : Service() {
|
|
413
|
+
override fun onCreate() {
|
|
414
|
+
super.onCreate()
|
|
415
|
+
// 1. 创建通知渠道
|
|
416
|
+
val channel = NotificationChannel("media", "媒体采集", NotificationManager.IMPORTANCE_LOW)
|
|
417
|
+
getSystemService(NotificationManager::class.java).createNotificationChannel(channel)
|
|
418
|
+
|
|
419
|
+
// 2. 构建通知
|
|
420
|
+
val notification = NotificationCompat.Builder(this, "media")
|
|
421
|
+
.setContentTitle("音视频通话中")
|
|
422
|
+
.setSmallIcon(android.R.drawable.ic_menu_call)
|
|
423
|
+
.build()
|
|
424
|
+
|
|
425
|
+
// 3. 启动前台服务,指定 camera 和 microphone 类型(Android 14+ 必须)
|
|
426
|
+
startForeground(1, notification,
|
|
427
|
+
ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA or ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE)
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
override fun onBind(intent: Intent?): IBinder? = null
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
```
|
|
@@ -39,7 +39,7 @@ keywords: ['错误码', '报错', 'roomKit', 'room 套餐问题', '麦克风权
|
|
|
39
39
|
**解决方案:** 请检查浏览器设置,确保已允许使用您的麦克风。如果您确认已授予权限, 请前往 [音视频能力检测工具] 检查您的设备和环境是否支持: https://web.sdk.qcloud.com/trtc/webrtc/demo/detect/index.html
|
|
40
40
|
|
|
41
41
|
## 错误码 100007
|
|
42
|
-
**原因:**
|
|
42
|
+
**原因:**
|
|
43
43
|
**解决方案:** 未购买套餐包或者已欠费,请前往[腾讯云控制台购买](https://buy.cloud.tencent.com/trtc)。首次使用,可以[开通体验版](https://cloud.tencent.com/document/product/647/105439)。
|
|
44
44
|
|
|
45
45
|
## 错误码 70001
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
`RoomStore` 是 `AtomicXCore` 中专职房间事务管理的模块,深度集成了会中呼叫能力。本章节旨在指导如何利用 `RoomStore` 高效完成会中呼叫相关功能的开发与接入。
|
|
2
|
+
|
|
3
|
+
## 核心功能
|
|
4
|
+
- **会中呼叫**:房间内任意参与者均可呼叫房间外任意成员加入房间。
|
|
5
|
+
|
|
6
|
+
- **获取会中呼叫用户列表**:可以获取指定房间的会中呼叫的用户列表。
|
|
7
|
+
|
|
8
|
+
## 核心概念
|
|
9
|
+
|
|
10
|
+
在开始集成之前,需要通过下表了解一下`RoomStore`中与会中呼叫相关的几个核心概念:
|
|
11
|
+
| **核心概念** | **核心职责与描述** |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| [RoomCallStatus](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomcallstatus) | 代表会中呼叫的状态,包含:<br>- `none`(默认态)。<br>- `calling`(呼叫中)。<br>- `timeout`(呼叫超时)。<br>- `rejected`(呼叫被拒绝)。 |
|
|
14
|
+
| [RoomCallResult](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomcallresult) | 代表会中呼叫的结果,包含:<br>- `success`(呼叫成功)。<br>- `alreadyInCalling`(已在呼叫中)。<br>- `alreadyInRoom`(已在房间中)。 |
|
|
15
|
+
| [CallRejectionReason](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/callrejectionreason) | 代表呼叫被拒绝的原因,目前仅支持:<br>- `rejected`(主动拒绝)。<br>- `inOtherRoom`(在其他房间中)。 |
|
|
16
|
+
| [RoomCall](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomcall) | 代表会中呼叫业务的核心数据结构。负责存储呼叫者信息、被呼叫者信息、以及当前呼叫状态。 |
|
|
17
|
+
| [RoomEvent](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent) | 代表房间动态的实时事件。其中包含会中呼叫相关的事件。 |
|
|
18
|
+
| [RoomStore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstore) | 这是与房间全生命周期相关的核心类。功能包含:发起会中呼叫,响应会中呼叫,获取房间的会中呼叫列表,并通过订阅其 `roomEventPublisher` 来接收与会中呼叫相关的实时动态事件。 |
|
|
19
|
+
|
|
20
|
+
## 实现步骤
|
|
21
|
+
|
|
22
|
+
### 步骤1:组件集成
|
|
23
|
+
|
|
24
|
+
请参考 接入概览 集成 **AtomicXCore SDK**,并已完成 实现登录逻辑 部分接入。
|
|
25
|
+
|
|
26
|
+
### 步骤2:呼叫方功能
|
|
27
|
+
|
|
28
|
+
#### **1. 发起呼叫**
|
|
29
|
+
|
|
30
|
+
作为呼叫方调用`RoomStore`的`callUserToRoom`接口,可以批量呼叫用户进房。
|
|
31
|
+
``` java
|
|
32
|
+
import 'package:atomic_x_core/atomicxcore.dart';
|
|
33
|
+
|
|
34
|
+
Future<void> callUserToRoom({
|
|
35
|
+
required List<String> userIDList,
|
|
36
|
+
int timeout = 30,
|
|
37
|
+
String? extensionInfo,
|
|
38
|
+
}) async {
|
|
39
|
+
final result = await RoomStore.shared.callUserToRoom(
|
|
40
|
+
roomID: "roomID",
|
|
41
|
+
userIDList: userIDList,
|
|
42
|
+
timeout: timeout,
|
|
43
|
+
extensionInfo: extensionInfo,
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
if (result.isSuccess) {
|
|
47
|
+
print("呼叫用户请求发送成功");
|
|
48
|
+
} else {
|
|
49
|
+
print("呼叫用户失败: [错误码: ${result.errorCode}]: ${result.errorMessage}");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### **2. 取消呼叫**
|
|
55
|
+
|
|
56
|
+
作为呼叫方调用`RoomStore`的`cancelCall`接口,可以批量取消正在呼叫申请。
|
|
57
|
+
``` java
|
|
58
|
+
import 'package:atomic_x_core/atomicxcore.dart';
|
|
59
|
+
|
|
60
|
+
Future<void> cancelCall(List<String> userIDList) async {
|
|
61
|
+
final result = await RoomStore.shared.cancelCall(
|
|
62
|
+
roomID: "roomID",
|
|
63
|
+
userIDList: userIDList,
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
if (result.isSuccess) {
|
|
67
|
+
print("取消呼叫成功");
|
|
68
|
+
} else {
|
|
69
|
+
print("取消呼叫失败: [错误码: ${result.errorCode}]: ${result.errorMessage}");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### **3. 获取呼叫列表信息**
|
|
75
|
+
|
|
76
|
+
进入房间后,调用`RoomStore`的`getPendingCalls`接口,可以分页查询当前房间正在呼叫的用户列表信息。
|
|
77
|
+
``` java
|
|
78
|
+
import 'package:atomic_x_core/atomicxcore.dart';
|
|
79
|
+
|
|
80
|
+
Future<void> getPendingCalls(String roomID, String? cursor) async {
|
|
81
|
+
// cursor 为分页游标,首次调用时传入 null,获取第一页数据,后续调用时传入上次返回的 cursor 值。
|
|
82
|
+
final result = await RoomStore.shared.getPendingCalls(
|
|
83
|
+
roomID: roomID,
|
|
84
|
+
cursor: cursor,
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
if (result.isSuccess) {
|
|
88
|
+
print("获取呼叫列表成功,列表信息: ${result.data}, 分页游标: ${result.cursor}");
|
|
89
|
+
} else {
|
|
90
|
+
print("获取呼叫列表失败: [错误码: ${result.errorCode}]: ${result.errorMessage}");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### **4. 订阅会中呼叫事件**
|
|
96
|
+
|
|
97
|
+
作为呼叫方订阅 `RoomStore` 的 `roomEventPublisher` 能够实时获取呼叫的生命周期事件。通过监听以下回调,可以精准捕捉呼叫的最终结果并据此更新 UI 状态或执行后续业务逻辑。
|
|
98
|
+
``` java
|
|
99
|
+
import 'package:atomic_x_core/atomicxcore.dart';
|
|
100
|
+
|
|
101
|
+
late RoomListener _listener;
|
|
102
|
+
|
|
103
|
+
/// 订阅会中呼叫相关事件
|
|
104
|
+
void addRoomCallListener() {
|
|
105
|
+
_listener = RoomListener(
|
|
106
|
+
onCallTimeout: (roomInfo, call) {
|
|
107
|
+
print("呼叫超时 房间信息: ${roomInfo.roomID}, 呼叫者: ${call.caller.userID}");
|
|
108
|
+
},
|
|
109
|
+
onCallAccepted: (roomInfo, call) {
|
|
110
|
+
print("呼叫已被接受 房间信息: ${roomInfo.roomID}, 被呼叫者: ${call.callee.userID}");
|
|
111
|
+
},
|
|
112
|
+
onCallRejected: (roomInfo, call, reason) {
|
|
113
|
+
print("呼叫被拒绝 房间信息: ${roomInfo.roomID}, 被呼叫者: ${call.callee.userID}, 拒绝原因: $reason");
|
|
114
|
+
},
|
|
115
|
+
onCallHandledByOtherDevice: (roomInfo, isAccepted) {
|
|
116
|
+
print("呼叫已被其他设备处理 房间信息: ${roomInfo.roomID}, 处理结果: $isAccepted");
|
|
117
|
+
},
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
RoomStore.shared.addRoomListener(_listener);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
void removeRoomCallListener() {
|
|
124
|
+
RoomStore.shared.removeRoomListener(_listener);
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**呼叫事件函数详细说明**
|
|
129
|
+
| 事件函数 | 触发时机与说明 |
|
|
130
|
+
| --- | --- |
|
|
131
|
+
| [onCallTimeout](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent/oncalltimeout(roominfo:call:)) | 呼叫超时。当呼叫请求在预设的时间内(由调用 callUserToRoom 时指定)未得到被呼叫方的响应时触发。此时,呼叫自动结束,呼叫方通常需要提示“对方无人接听”。 |
|
|
132
|
+
| [onCallAccepted](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent/oncallaccepted(roominfo:call:)) | 呼叫被接受。被呼叫方主动点击了“接听”或“接受”按钮。收到此回调后,表示双方已达成呼叫意图,呼叫方通常应立即执行进入房间或开始推流的操作。 |
|
|
133
|
+
| [onCallRejected](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent/oncallrejected(roominfo:call:reason:)) | 呼叫被拒绝。被呼叫方主动拒绝了通话请求,或者因为被呼叫方当前正处于其他房间中而自动拒绝。回调中通常包含拒绝原因(如主动拒绝或在其他房间中)。 |
|
|
134
|
+
| [onCallHandledByOtherDevice](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent/oncallhandledbyotherdevice(roominfo:isaccepted:)) | 呼叫已在其他设备处理。当用户在多个设备(例如手机和 iPad)同时登录时,如果呼叫已在其中一台设备上被处理(接受或拒绝),当前设备会收到此通知,用于同步 UI 状态并自动消除呼叫界面。 |
|
|
135
|
+
|
|
136
|
+
### 步骤3:被呼叫方功能
|
|
137
|
+
|
|
138
|
+
#### **1. 订阅会中呼叫事件**
|
|
139
|
+
|
|
140
|
+
作为被呼叫方订阅 `RoomStore` 的 `roomEventPublisher` 可以实时监听并响应来自呼叫方的呼叫行为。以下是构建呼叫提醒界面以及维护呼叫链路状态的关键事件。
|
|
141
|
+
``` java
|
|
142
|
+
import 'package:atomic_x_core/atomicxcore.dart';
|
|
143
|
+
|
|
144
|
+
late RoomListener _listener;
|
|
145
|
+
|
|
146
|
+
/// 订阅会中呼叫相关事件
|
|
147
|
+
void addRoomCallListener() {
|
|
148
|
+
_listener = RoomListener(
|
|
149
|
+
onCallReceived: (roomInfo, call, extensionInfo) {
|
|
150
|
+
print("收到房间呼叫 房间信息: ${roomInfo.roomID}, 呼叫者: ${call.caller.userID}, 扩展信息: $extensionInfo");
|
|
151
|
+
},
|
|
152
|
+
onCallCancelled: (roomInfo, call) {
|
|
153
|
+
print("呼叫被取消 房间信息: ${roomInfo.roomID}, 呼叫者: ${call.caller.userID}");
|
|
154
|
+
},
|
|
155
|
+
onCallRevokedByAdmin: (roomInfo, call, operatorUser) {
|
|
156
|
+
print("呼叫被管理员移除 房间信息: ${roomInfo.roomID}, 呼叫者: ${call.caller.userID}, 移除操作者: ${operatorUser.userID}");
|
|
157
|
+
},
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
RoomStore.shared.addRoomListener(_listener);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
void removeRoomCallListener() {
|
|
164
|
+
RoomStore.shared.removeRoomListener(_listener);
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**事件函数详细说明**
|
|
169
|
+
| 事件函数 | 触发时机与说明 |
|
|
170
|
+
| --- | --- |
|
|
171
|
+
| [onCallReceived](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent/oncallreceived(roominfo:call:extensioninfo:)) | 收到呼叫邀请。当有其他用户向您发起入会邀请时触发。收到此回调后,被呼叫方通常应立即弹出“呼叫提醒”界面,展示呼叫者信息、房间信息,并提供“接听”和“拒绝”按钮。 |
|
|
172
|
+
| [onCallCancelled](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent/oncallcancelled(roominfo:call:)) | 呼叫被发起方取消。呼叫方在您未做出响应前,主动撤回了呼叫请求。收到此回调后,被呼叫方应立即关闭当前的来电界面,并提示“对方已取消呼叫”,以恢复应用正常操作流程。 |
|
|
173
|
+
| [onCallRevokedByAdmin](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent/oncallrevokedbyadmin(roominfo:call:operator:)) | 呼叫被管理员撤销。房间管理员或后台系统因权限变更、房间解散等原因强行终止了该笔呼叫邀请。收到此通知后,被呼叫方需立即停止呼叫流程并隐藏相关 UI,处理逻辑通常类似于呼叫被取消。 |
|
|
174
|
+
|
|
175
|
+
#### **2. 接受呼叫、拒绝呼叫**
|
|
176
|
+
|
|
177
|
+
作为被呼叫方调用`RoomStore`的`acceptCall`或者`rejectCall`接口,处理接受或者拒绝呼叫邀请。
|
|
178
|
+
``` java
|
|
179
|
+
import 'package:atomic_x_core/atomicxcore.dart';
|
|
180
|
+
|
|
181
|
+
late RoomListener _listener;
|
|
182
|
+
|
|
183
|
+
/// 订阅会中呼叫相关事件
|
|
184
|
+
void addRoomCallListener() {
|
|
185
|
+
_listener = RoomListener(
|
|
186
|
+
onCallReceived: (roomInfo, call, extensionInfo) {
|
|
187
|
+
print("收到房间呼叫 房间信息: ${roomInfo.roomID}, 呼叫者: ${call.caller.userID}, 扩展信息: $extensionInfo");
|
|
188
|
+
// 接受、拒绝呼叫邀请操作
|
|
189
|
+
},
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
RoomStore.shared.addRoomListener(_listener);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
void removeRoomCallListener() {
|
|
196
|
+
RoomStore.shared.removeRoomListener(_listener);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// 接受呼叫邀请
|
|
200
|
+
Future<void> acceptCall(String roomID) async {
|
|
201
|
+
final result = await RoomStore.shared.acceptCall(roomID);
|
|
202
|
+
|
|
203
|
+
if (result.isSuccess) {
|
|
204
|
+
print("接受呼叫成功,房间ID: $roomID");
|
|
205
|
+
} else {
|
|
206
|
+
print("接受呼叫失败: [错误码: ${result.errorCode}] ${result.errorMessage}");
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// 拒绝呼叫邀请
|
|
211
|
+
Future<void> rejectCall(String roomID, {CallRejectionReason reason = CallRejectionReason.rejected}) async {
|
|
212
|
+
final result = await RoomStore.shared.rejectCall(
|
|
213
|
+
roomID: roomID,
|
|
214
|
+
reason: reason,
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
if (result.isSuccess) {
|
|
218
|
+
print("拒绝呼叫成功,房间ID: $roomID");
|
|
219
|
+
} else {
|
|
220
|
+
print("拒绝呼叫失败: [错误码: ${result.errorCode}] ${result.errorMessage}");
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## API 文档
|
|
226
|
+
| **Store/Component** | **功能描述** | **API文档** |
|
|
227
|
+
| --- | --- | --- |
|
|
228
|
+
| **RoomStore** | 房间全生命周期管理:创建并加入 / 加入 / 离开 / 结束房间 / 更新、获取房间信息 / 预定房间 / 呼叫房间外成员 / 监听房间内被动事件(例如房间解散,房间信息更新等)。 | [API 文档](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstore) |
|