@tencent-rtc/mcp 1.6.7 → 1.7.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/CHANGELOG.md +25 -0
- package/README.md +53 -39
- package/knowledge/build-index.js +31 -4
- package/knowledge/chunker.js +82 -14
- package/knowledge/chunking-policy.js +100 -0
- package/knowledge/content-loader.js +3 -1
- package/knowledge/frontmatter-meta.js +167 -0
- package/knowledge/path-meta.js +28 -6
- package/knowledge/search/exact-lookup.js +9 -227
- package/knowledge/search/filter-pool.js +17 -26
- package/knowledge/search/framework-fallback.js +22 -0
- package/knowledge/search/intent-router.js +13 -0
- package/knowledge/search/query-normalizer.js +129 -0
- package/knowledge/search/search-core.js +391 -0
- package/knowledge/search/search-knowledge.js +351 -323
- package/knowledge/search/search-message.js +87 -0
- package/knowledge/search/search-pass.js +428 -0
- package/knowledge/search/search-types.js +1 -0
- package/knowledge/search/url-row-scorer.js +258 -0
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +1 -0
- package/resource/_schema/query-normalization.yaml +9 -0
- package/resource/index/manifest.json +1 -1
- package/resource/integration/callkit/preset/android/integration.md +3 -14
- package/resource/integration/callkit/preset/flutter/integration.md +1 -12
- package/resource/integration/callkit/preset/ios/integration.md +2 -12
- package/resource/integration/callkit/preset/react/integration.md +1 -14
- package/resource/integration/callkit/preset/vue/integration.md +1 -14
- package/resource/integration/chat/preset/android/integration.md +6 -13
- package/resource/integration/chat/preset/flutter/integration.md +1 -8
- package/resource/integration/chat/preset/ios/integration.md +4 -12
- package/resource/integration/chat/preset/react/integration.md +6 -16
- package/resource/integration/chat/preset/vue/integration.md +0 -9
- package/resource/integration/livekit/preset/live/android/live-audience-integration.md +2 -6
- package/resource/integration/livekit/preset/live/android/live-host-integration.md +1 -11
- package/resource/integration/livekit/preset/live/android/live-list-integration.md +2 -6
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +2 -7
- package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +2 -7
- package/resource/integration/livekit/preset/live/ios/live-host-integration.md +1 -13
- package/resource/integration/livekit/preset/live/ios/live-list-integration.md +2 -10
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +3 -8
- package/resource/integration/livekit/preset/live/vue/live-list-integration.md +0 -4
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +1 -5
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +2 -7
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +2 -8
- package/resource/integration/roomkit/preset/vue/integration.md +0 -11
- package/resource/knowledge/callkit/best-practice/callkit-miniprogram/uniapp-shrink.md +60 -0
- package/resource/knowledge/callkit/best-practice/common/call-autoplay-blocked.md +77 -0
- package/resource/knowledge/callkit/best-practice/common/call-message-in-chat.md +78 -0
- package/resource/knowledge/callkit/best-practice/common/call-vs-calls.md +110 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-call-flow.md +123 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-log-level.md +67 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-engine-instance.md +81 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-roomid.md +78 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-limitations.md +37 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-user-register-and-kicked.md +98 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +0 -7
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -8
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +1 -9
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +2 -8
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +2 -8
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -16
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -8
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -8
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -11
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +178 -200
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +195 -217
- package/resource/knowledge/callkit/faq/android.md +4 -14
- package/resource/knowledge/callkit/faq/common.md +0 -2
- package/resource/knowledge/callkit/faq/error-code.md +2 -4
- package/resource/knowledge/callkit/faq/ios.md +1 -4
- package/resource/knowledge/callkit/preset/android/api.md +0 -6
- package/resource/knowledge/callkit/preset/ios/api.md +0 -4
- package/resource/knowledge/callkit/preset/react/api.md +3 -4
- package/resource/knowledge/callkit/preset/vue/api.md +3 -4
- package/resource/knowledge/chat/best-practice/common/avchatroom-message-loss-diagnosis.md +65 -0
- package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md +62 -0
- package/resource/knowledge/chat/best-practice/common/image-message-url-lifecycle.md +59 -0
- package/resource/knowledge/chat/best-practice/common/login-repeat-2025-diagnosis.md +61 -0
- package/resource/knowledge/chat/best-practice/common/message-read-report-and-receipt.md +64 -0
- package/resource/knowledge/chat/best-practice/common/message-receive-event.md +65 -0
- package/resource/knowledge/chat/best-practice/common/message-risk-error-and-render.md +65 -0
- package/resource/knowledge/chat/best-practice/common/message-unread-count.md +71 -0
- package/resource/knowledge/chat/best-practice/miniprogram/audio-message-send.md +113 -0
- package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +63 -0
- package/resource/knowledge/chat/best-practice/miniprogram/media-upload-fail-diagnosis.md +64 -0
- package/resource/knowledge/chat/best-practice/web/audio-message-send.md +118 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +0 -5
- package/resource/knowledge/chat/preset/android/features/contact-list.md +0 -7
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +0 -6
- package/resource/knowledge/chat/preset/android/features/language.md +0 -8
- package/resource/knowledge/chat/preset/android/features/message-input.md +0 -6
- package/resource/knowledge/chat/preset/android/features/message-list.md +0 -8
- package/resource/knowledge/chat/preset/android/features/search.md +0 -7
- package/resource/knowledge/chat/preset/android/features/theme.md +0 -4
- package/resource/knowledge/chat/preset/android-view/integration.md +0 -6
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +0 -4
- package/resource/knowledge/chat/preset/flutter/features/contact-list.md +0 -9
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -7
- package/resource/knowledge/chat/preset/flutter/features/language.md +0 -5
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +0 -6
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +0 -8
- package/resource/knowledge/chat/preset/flutter/features/search.md +0 -5
- package/resource/knowledge/chat/preset/flutter/features/theme.md +0 -4
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +0 -5
- package/resource/knowledge/chat/preset/ios/features/contact-list.md +0 -5
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +0 -7
- package/resource/knowledge/chat/preset/ios/features/language.md +1 -8
- package/resource/knowledge/chat/preset/ios/features/message-input.md +0 -6
- package/resource/knowledge/chat/preset/ios/features/message-list.md +0 -8
- package/resource/knowledge/chat/preset/ios/features/search.md +0 -5
- package/resource/knowledge/chat/preset/ios/features/theme.md +0 -4
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +0 -6
- package/resource/knowledge/chat/preset/react/features/contact-list.md +0 -23
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +2 -11
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +4 -26
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +0 -6
- package/resource/knowledge/chat/preset/react/features/search.md +0 -1
- package/resource/knowledge/chat/preset/react/features/theme.md +0 -1
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +3 -9
- package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +0 -3
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +2 -13
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +2 -3
- package/resource/knowledge/chat/preset/vue/features/conversation-search.md +1 -0
- package/resource/knowledge/chat/preset/vue/features/search.md +4 -3
- package/resource/knowledge/chat/urls/sdk/web.md +1 -1
- package/resource/knowledge/livekit/best-practice/android/voice-room-anchor-start.md +120 -0
- package/resource/knowledge/livekit/best-practice/common/admin-take-seat.md +73 -0
- package/resource/knowledge/livekit/best-practice/common/audience-leave-live.md +81 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-no-audio-troubleshoot.md +100 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-seat-list-change.md +65 -0
- package/resource/knowledge/livekit/best-practice/flutter/voice-room-anchor-start.md +122 -0
- package/resource/knowledge/livekit/best-practice/ios/voice-room-anchor-start.md +126 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/audio-effect.md +2 -3
- package/resource/knowledge/livekit/core-sdk/features/android/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +3 -4
- package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +2 -4
- package/resource/knowledge/livekit/core-sdk/features/flutter/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/audio-effect.md +2 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +3 -4
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -3
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -1
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +0 -5
- package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +3 -6
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +1 -4
- package/resource/knowledge/livekit/faq/error-code.md +0 -1
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +2 -3
- package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +3 -3
- package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +3 -3
- package/resource/knowledge/push/api-reference/android.md +0 -1
- package/resource/knowledge/push/api-reference/harmonyos.md +0 -2
- package/resource/knowledge/push/api-reference/react-native.md +3 -5
- package/resource/knowledge/push/api-reference/uni-app.md +3 -5
- package/resource/knowledge/push/api-reference/unity.md +0 -1
- package/resource/knowledge/push/api-reference/unreal-engine.md +0 -1
- package/resource/knowledge/push/config/android.md +0 -24
- package/resource/knowledge/push/config/harmonyos.md +0 -1
- package/resource/knowledge/push/config/ios.md +0 -3
- package/resource/knowledge/push/config/react-native.md +0 -29
- package/resource/knowledge/push/config/unity.md +1 -24
- package/resource/knowledge/push/config/unreal-engine.md +1 -24
- package/resource/knowledge/push/integration/android.md +0 -14
- package/resource/knowledge/push/integration/flutter.md +0 -19
- package/resource/knowledge/push/integration/harmonyos.md +0 -2
- package/resource/knowledge/push/integration/ios.md +0 -3
- package/resource/knowledge/push/integration/react-native.md +0 -24
- package/resource/knowledge/push/integration/uni-app.md +1 -11
- package/resource/knowledge/push/integration/unity.md +0 -9
- package/resource/knowledge/push/integration/unreal-engine.md +1 -17
- package/resource/knowledge/roomkit/best-practice/common/room-ghost-member.md +70 -0
- package/resource/knowledge/roomkit/best-practice/common/room-limit-and-multi.md +83 -0
- package/resource/knowledge/roomkit/best-practice/common/room-screen-share-preview.md +83 -0
- package/resource/knowledge/roomkit/best-practice/common/room-status-after-all-leave.md +69 -0
- package/resource/knowledge/roomkit/best-practice/vue/room-uikit-vs-atomicx.md +111 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +1 -5
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +1 -5
- package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -6
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -11
- package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +1 -5
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +1 -8
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -5
- package/resource/knowledge/roomkit/preset/android/integration.md +0 -4
- package/resource/knowledge/roomkit/preset/flutter/integration.md +1 -13
- package/resource/knowledge/roomkit/preset/ios/integration.md +0 -6
- package/resource/knowledge/roomkit/preset/react/integration.md +0 -16
- package/resource/knowledge/rtcengine/web/api.md +1 -8
- package/resource/knowledge/rtcengine/web/faq.md +3 -5
- package/resource/knowledge/rtcengine/web/how_to_integrated_web_sdk.md +0 -6
- package/resource/knowledge/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/21-advanced-auto-play-policy.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/27-advanced-small-stream.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md +2 -0
- package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -3
- package/resource/knowledge/rtcengine/web/plugin/34-advanced-proxy.md +2 -4
- package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -4
- package/resource/knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md +1 -1
- package/resource/knowledge/trtc/android/TRTCCloud.md +8 -56
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +6 -7
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +1 -18
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +0 -14
- package/resource/knowledge/trtc/android/TXDeviceManager.md +0 -1
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -1
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +7 -59
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +0 -14
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +0 -4
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1 -19
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +6 -7
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -1
- package/resource/knowledge/trtc/ios/TRTCCloud.md +9 -60
- package/resource/knowledge/trtc/ios/TRTCCloudDef.md +6 -7
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1 -19
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +0 -13
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +0 -4
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -1
- package/server.js +27 -22
- package/tools/common/finalize_answer.js +9 -1
- package/tools/common/search_trtc_knowledge.js +3 -1
- package/tools/definitions/finalize_answer_def.js +2 -2
- package/tools/definitions/integration-boundary.js +2 -1
- package/tools/definitions/search_trtc_knowledge_def.js +2 -1
- package/utils/report-cls-client.js +3 -3
- package/utils/report-es-client.js +1 -1
- package/cursor-setting.png +0 -0
- package/mcp-server-prompt.png +0 -0
- package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +0 -80
- package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +0 -24
- package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +0 -116
- package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +0 -445
- package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +0 -465
- package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +0 -16
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -230
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -797
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +0 -325
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +0 -325
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "TUIRoomKit Room Status and Billing After All Members Leave(TUIRoomKit / 所有人离开 / 房间销毁 / 回收房间 / 解散房间)"
|
|
3
|
+
product: room
|
|
4
|
+
frameworks: [react, vue, web, android, ios, flutter]
|
|
5
|
+
scope: platform_common
|
|
6
|
+
tags: [TUIRoomKit, all members leave, room destruction, room reclaim, dismiss room, billing, meeting end, room existence, room count]
|
|
7
|
+
version_range: ">=2.0.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# TUIRoomKit Room Status and Billing After All Members Leave
|
|
11
|
+
|
|
12
|
+
## 1. Key Takeaways
|
|
13
|
+
|
|
14
|
+
- A room is **not** automatically destroyed immediately when "all members leave."
|
|
15
|
+
- After a meeting ends, the business side should **proactively call the dismiss room API** to end the meeting.
|
|
16
|
+
- If not manually dismissed: the backend attempts to reclaim the room **6 hours after** the meeting end time, provided the **member count is 0**.
|
|
17
|
+
- Billing is based on actual push/pull stream and call consumption. After all members leave and there is no media usage, audio/video duration charges generally stop; however, the room object still occupies room count quota until dismissed or reclaimed.
|
|
18
|
+
|
|
19
|
+
## 2. Field / API Reference
|
|
20
|
+
|
|
21
|
+
| Field / Capability | Purpose | Notes |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Dismiss room API | Proactively end a meeting | Business side calls after meeting ends |
|
|
24
|
+
| Backend reclaim | Automatic room cleanup | Attempted 6 hours after meeting end; condition: member count is 0 |
|
|
25
|
+
| Room member count | Room member statistics | Reclaim condition: member count is 0 |
|
|
26
|
+
| Audio/video duration billing | Call consumption billing | Billed by actual push/pull stream and call consumption |
|
|
27
|
+
| Room count occupation | Room object occupation | Still occupies room count quota until dismissed or reclaimed |
|
|
28
|
+
|
|
29
|
+
## 3. Mechanism & Sequence
|
|
30
|
+
|
|
31
|
+
All members leave room -> Room is not destroyed immediately -> Business side proactively calls dismiss room API (recommended), or waits for backend automatic reclaim -> Backend attempts reclaim 6 hours after meeting end (condition: member count is 0) -> Room is reclaimed.
|
|
32
|
+
|
|
33
|
+
Billing dimensions:
|
|
34
|
+
|
|
35
|
+
- Audio/video duration is billed by actual push/pull stream and call consumption.
|
|
36
|
+
- After all members leave and there is no media usage, audio/video duration charges for that room generally stop.
|
|
37
|
+
- The room object still occupies room count quota until dismissed or reclaimed.
|
|
38
|
+
|
|
39
|
+
## 4. Standard Usage
|
|
40
|
+
|
|
41
|
+
1. After the meeting ends, the business side proactively calls the dismiss room API to end the meeting, avoiding lingering rooms.
|
|
42
|
+
2. If manual dismissal is forgotten, the backend automatically reclaims the room after 6 hours (when member count is 0).
|
|
43
|
+
3. When evaluating room count occupation, note that undismissed and unreclaimed room objects still consume quota.
|
|
44
|
+
|
|
45
|
+
## 5. Expected Results
|
|
46
|
+
|
|
47
|
+
- After proactive dismissal, the room ends immediately.
|
|
48
|
+
- Without proactive dismissal, the backend reclaims the room 6 hours after meeting end when member count is 0.
|
|
49
|
+
- After all members leave and there is no media usage, audio/video duration charges stop.
|
|
50
|
+
- Undismissed and unreclaimed room objects still occupy room count quota.
|
|
51
|
+
|
|
52
|
+
## 6. Common Pitfalls
|
|
53
|
+
|
|
54
|
+
- Pitfall 1: Assuming rooms are automatically destroyed after all members leave (requires proactive dismissal or waiting 6 hours for backend reclaim).
|
|
55
|
+
- Pitfall 2: Assuming undismissed rooms incur no cost (room objects still occupy room count quota, potentially affecting concurrent capacity).
|
|
56
|
+
- Pitfall 3: Neglecting proactive dismissal by the business side (recommended to call the dismiss API rather than relying on backend reclaim).
|
|
57
|
+
|
|
58
|
+
## 7. Problem Definition (retrieval hint)
|
|
59
|
+
|
|
60
|
+
Whether a TUIRoomKit room still exists after all members leave, whether billing continues, and how to proactively dismiss a room.
|
|
61
|
+
|
|
62
|
+
## 8. Alternative Queries (retrieval recall)
|
|
63
|
+
|
|
64
|
+
- Does the room auto-destroy after everyone leaves?
|
|
65
|
+
- Does an empty TUIRoomKit room still incur charges?
|
|
66
|
+
- How to dismiss a room after a meeting ends?
|
|
67
|
+
- How long does room reclaim take?
|
|
68
|
+
- What happens when room member count is 0?
|
|
69
|
+
- Does the room object still occupy room count quota?
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Comparison of tuikit-atomicx-vue3/room vs roomkit-web-vue3(roomkit-web-vue3 vs tuikit-atomicx-vue3/room 的区别)"
|
|
3
|
+
product: room
|
|
4
|
+
frameworks: [vue, web]
|
|
5
|
+
scope: platform_specific
|
|
6
|
+
tags: [TUIRoomKit, Atomicx, UIKit, tuikit-atomicx-vue3, roomkit-web-vue3, useRoomState, conference, layer comparison, no-UI, pre-built UI, custom integration, dependency, vue3]
|
|
7
|
+
version_range: ">=2.0.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Comparison of tuikit-atomicx-vue3/room vs roomkit-web-vue3
|
|
11
|
+
|
|
12
|
+
## 1. Key Takeaways
|
|
13
|
+
|
|
14
|
+
- `tuikit-atomicx-vue3/room` (Atomicx) is the **atomic capability layer**: the primary path for no-UI / highly customized integration, decomposing room, device, and member states into reactive State Hooks.
|
|
15
|
+
- `@tencentcloud/roomkit-web-vue3` (RoomKit / UIKit) is the **pre-built UI low-code layer**: an out-of-the-box meeting suite with page-level components.
|
|
16
|
+
- Dependency: **RoomKit (pre-built UI) is a productized wrapper built on top of Atomicx/Room capabilities**. From a business perspective, RoomKit reuses/interfaces with Atomicx capabilities rather than being two independent room protocols.
|
|
17
|
+
- API entry points: Atomicx uses `useRoomState()`, UIKit uses `conference`.
|
|
18
|
+
|
|
19
|
+
## 2. Field / API Reference
|
|
20
|
+
|
|
21
|
+
| Field / Capability | Purpose | Notes |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `useRoomState` | Atomicx room state entry | `createAndJoinRoom` / `joinRoom` / `leaveRoom` / `endRoom` / `currentRoom` |
|
|
24
|
+
| `useDeviceState` | Atomicx device state | Device toggles, screen sharing, etc. |
|
|
25
|
+
| `useRoomParticipantState` | Atomicx participant state | Member management, event subscriptions |
|
|
26
|
+
| `useLoginState` | Atomicx login state | Login capability, reusable within UIKit sessions |
|
|
27
|
+
| `conference` | UIKit meeting facade API | Recommended: `createAndJoinRoom` / `joinRoom` / `leaveRoom` / `endRoom` |
|
|
28
|
+
| `ConferenceMainView` | UIKit pre-built view | Complete meeting UI: login, join room, meeting controls, layout, seat management |
|
|
29
|
+
|
|
30
|
+
## 3. Mechanism & Sequence
|
|
31
|
+
|
|
32
|
+
### Layer Comparison
|
|
33
|
+
|
|
34
|
+
| Comparison | `tuikit-atomicx-vue3/room` (Atomicx) | `@tencentcloud/roomkit-web-vue3` (RoomKit / UIKit) |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| **Layer** | Atomicx (atomic capability layer): State Hooks + optional atomic UI components | UIKit / pre-built UI low-code layer: out-of-the-box meeting suite with page-level components |
|
|
37
|
+
| **Package positioning** | No-UI / highly customized integration path; decomposes room, device, and member into reactive State | Pre-built UI rapid integration path; provides complete meeting UI and `conference` facade API |
|
|
38
|
+
| **Core capabilities** | `useRoomState` / `useDeviceState` / `useRoomParticipantState` / `useLoginState`: create room, join meeting, device control, screen sharing, member management, event subscription; compose your own UI | `conference` + pre-built views (e.g. `ConferenceMainView`): login, join room, meeting controls, layout, seat management; supports selective component visibility / custom Widgets |
|
|
39
|
+
| **Use cases** | Embedding audio/video into your own business UI (telemedicine, OA, education dashboards, etc.) with 100% control over interaction and branding | Fastest path to launch a standard meeting/webinar with minimal UI coding, accepting the official meeting interaction |
|
|
40
|
+
| **Dependency** | Built on RoomEngine / TRTC / IM; an atomic integration approach | Pre-built UI reuses/interfaces with Atomicx capabilities (e.g. login uses `useLoginState`, in-meeting logic uses Room capabilities); RoomKit (pre-built UI) is a productized wrapper on top of Atomicx/Room |
|
|
41
|
+
| **API entry** | `useRoomState()`: `createAndJoinRoom` / `joinRoom` / `leaveRoom` / `endRoom`, `currentRoom`, event subscriptions, etc. | `conference`: recommended `createAndJoinRoom` / `joinRoom` / `leaveRoom` / `endRoom` |
|
|
42
|
+
| **UI form** | Optional pre-built atomic components + primarily self-composed custom modules | Primarily pre-built complete meeting UI, with limited customization via Widget / visibility configuration |
|
|
43
|
+
|
|
44
|
+
## 4. Standard Usage
|
|
45
|
+
|
|
46
|
+
### Atomicx Approach (no-UI, custom integration)
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
import { useRoomState } from 'tuikit-atomicx-vue3/room';
|
|
50
|
+
|
|
51
|
+
const { createAndJoinRoom } = useRoomState();
|
|
52
|
+
|
|
53
|
+
createAndJoinRoom({
|
|
54
|
+
roomId: 'YOUR_ROOM_ID', // 必填:建议由业务后台生成的唯一标识
|
|
55
|
+
options: {
|
|
56
|
+
roomName: '项目进度周会',
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
// 通过 useDeviceState / useRoomParticipantState 等获取响应式状态自拼 UI
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### UIKit Approach (pre-built UI, rapid integration)
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
import { conference, ConferenceMainView, ConferenceMainViewH5, RoomEvent, genTestUserSig } from '@tencentcloud/roomkit-web-vue3';
|
|
66
|
+
const SDKAppID = 0; // 替换为您在开通服务阶段获取的 SDKAppID
|
|
67
|
+
const SDKSecretKey = ''; // 替换为您在开通服务阶段获取的 SDKSecretKey
|
|
68
|
+
const handleEnterRoom = async () => {
|
|
69
|
+
if (!SDKAppID || !SDKSecretKey) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const { userSig } = genTestUserSig({ userId: 'test01', sdkAppId: SDKAppID, secretKey: SDKSecretKey });
|
|
74
|
+
await conference.login({ sdkAppId: SDKAppID, userId: 'test01', userSig });
|
|
75
|
+
await conference.setSelfInfo({ userName: 'test', avatarUrl: '' });
|
|
76
|
+
await conference.createAndJoinRoom({ roomId: '123456', options: { roomName: `test01 的会议` } });
|
|
77
|
+
inRoom.value = true;
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.error('进入会议失败:', error);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
// 使用预制 ConferenceMainView 渲染完整会议 UI
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## 5. Expected Results
|
|
86
|
+
|
|
87
|
+
- No-UI / highly customized needs: choose Atomicx, use `useRoomState()` + State Hooks to compose your own UI.
|
|
88
|
+
- Fastest path to a standard meeting: choose UIKit, use `conference` + `ConferenceMainView`.
|
|
89
|
+
- Dependency: UIKit reuses Atomicx capabilities; they are not two independent protocols.
|
|
90
|
+
- API entry: Atomicx uses `useRoomState()`, UIKit uses `conference`.
|
|
91
|
+
|
|
92
|
+
## 6. Common Pitfalls
|
|
93
|
+
|
|
94
|
+
- Pitfall 1: Assuming Atomicx and UIKit are two independent room protocols (UIKit is built on top of Atomicx/Room capabilities).
|
|
95
|
+
- Pitfall 2: Assuming Atomicx includes a complete meeting UI (Atomicx provides State Hooks + optional atomic components; UI must be self-composed).
|
|
96
|
+
- Pitfall 3: Assuming UIKit cannot be customized (it supports selective component visibility / custom Widgets).
|
|
97
|
+
- Pitfall 4: Confusing the API entry points of the two approaches (Atomicx uses `useRoomState()`, UIKit uses `conference`).
|
|
98
|
+
|
|
99
|
+
## 7. Problem Definition (retrieval hint)
|
|
100
|
+
|
|
101
|
+
Comparing the positioning differences between two TUIRoomKit Vue3 integration approaches: `tuikit-atomicx-vue3/room` (Atomicx Core SDK, no-UI, State Hooks self-composed) vs `@tencentcloud/roomkit-web-vue3` (RoomKit UIKit, pre-built UI, conference low-code) in terms of layer, capabilities, use cases, dependency, and API entry (useRoomState vs conference).
|
|
102
|
+
|
|
103
|
+
## 8. Alternative Queries (retrieval recall)
|
|
104
|
+
|
|
105
|
+
- What is the difference between Atomicx and RoomKit?
|
|
106
|
+
- How to choose between `tuikit-atomicx-vue3/room` and `roomkit-web-vue3`?
|
|
107
|
+
- How to choose between TUIRoomKit no-UI and pre-built UI approaches?
|
|
108
|
+
- What is the difference between `useRoomState` and `conference`?
|
|
109
|
+
- Is RoomKit based on Atomicx?
|
|
110
|
+
- Which package for custom meeting room UI?
|
|
111
|
+
- Use Atomicx or UIKit for rapid meeting integration?
|
|
@@ -235,7 +235,3 @@ fun rejectCall(roomID: String, reason: CallRejectionReason = CallRejectionReason
|
|
|
235
235
|
|Store/Component|Description|API Documentation|
|
|
236
236
|
|---------|---------|---------|
|
|
237
237
|
|**RoomStore**|Manages the full room lifecycle: create and join, join, leave, end room, update/retrieve room information, schedule rooms, invite external members, listen for passive room events (such as room dissolution, room info updates, etc).|[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.room/-room-store/index.html)|
|
|
238
|
-
|
|
239
|
-
## Contact Us
|
|
240
|
-
|
|
241
|
-
If you have any questions or suggestions during integration or usage, contact info_rtc@tencent.com.
|
|
@@ -582,7 +582,3 @@ private fun subscribeParticipantState() {
|
|
|
582
582
|
|Store/Component|Description|API Documentation|
|
|
583
583
|
|---------|---------|---------|
|
|
584
584
|
|**RoomParticipantStore**|Manages room participants: assign admin, transfer ownership, retrieve participant list, remove participant, control participant devices (close, invite to enable camera/microphone, etc.), request device enablement.|[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.room/-room-participant-store/index.html)|
|
|
585
|
-
|
|
586
|
-
## Contact Us
|
|
587
|
-
|
|
588
|
-
If you have any questions or suggestions during integration or use, please contact info_rtc@tencent.com.
|
|
@@ -358,7 +358,3 @@ private fun subscribeCurrentRoomState() {
|
|
|
358
358
|
**What does this mean for developers?**
|
|
359
359
|
|
|
360
360
|
`participantCount` is a highly accurate, near real-time estimate. In rare cases with extremely high concurrency, brief delays or data loss may occur. We recommend using it for UI display only—not for billing, statistics, or scenarios requiring absolute precision.
|
|
361
|
-
|
|
362
|
-
## Contact Us
|
|
363
|
-
|
|
364
|
-
If you have questions or feedback during integration or usage, please email info_rtc@tencent.com.
|
|
@@ -94,7 +94,7 @@ Follow the Integration Overview to integrate the AtomicXCore SDK. Make sure you
|
|
|
94
94
|
| <code>scheduleStartTime</code> | <code>Long</code> | Yes | - Scheduled start time (Unix timestamp in seconds).<br>- Must be greater than the current time.<br>- We recommend aligning to a future minute. Example: 1736164800 (2025-01-06 20:00:00). |
|
|
95
95
|
| <code>scheduleEndTime</code> | <code>Long</code> | Yes | Scheduled end time (Unix timestamp in seconds).<br>- Must be greater than <code>scheduleStartTime</code>.<br>- Set based on expected duration, e.g., <code>scheduleStartTime</code> + 3600 for one hour. |
|
|
96
96
|
| <code>reminderSecondsBeforeStart</code> | <code>Int</code> | No | - Reminder time before the scheduled start (seconds). Used for system-triggered notifications.<br>- Recommended: 300 (5 min) or 900 (15 min) for local app notifications. |
|
|
97
|
-
| <code>scheduleAttendees</code> | <code>List</code> | No | - List of participant user IDs. The system will send invitations to these users.<br>-
|
|
97
|
+
| <code>scheduleAttendees</code> | <code>List</code> | No | - List of participant user IDs. The system will send invitations to these users.<br>- . |
|
|
98
98
|
| <code>isAllMicrophoneDisabled</code> | <code>Boolean</code> | No | Whether to mute all participants by default.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
99
99
|
| <code>isAllCameraDisabled</code> | <code>Boolean</code> | No | Whether to disable all participant cameras by default.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
100
100
|
| <code>isAllScreenShareDisabled</code> | <code>Boolean</code> | No | Whether to disable screen sharing for all participants.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
@@ -334,7 +334,3 @@ If you are not receiving the upcoming event notification after scheduling a room
|
|
|
334
334
|
- **Edge Case:** If the room is scheduled to start very soon (e.g., in 5 minutes) but the reminder is set for 10 minutes before start, the system cannot send the notification, and the event will be missed.
|
|
335
335
|
|
|
336
336
|
- **Solution:** Ensure the scheduled start time is sufficiently further in the future than the reminder interval you've set.
|
|
337
|
-
|
|
338
|
-
## Contact Us
|
|
339
|
-
|
|
340
|
-
For questions or feedback during integration or usage, contact info_rtc@tencent.com.
|
|
@@ -227,7 +227,3 @@ func rejectCall(roomID: String, reason: CallRejectionReason = .rejected) {
|
|
|
227
227
|
|**Store/Component**|**Description**|**API Documentation**|
|
|
228
228
|
|---------|---------|---------|
|
|
229
229
|
|**RoomStore**|Room lifecycle management: create and join, join, leave, end room, update and retrieve room info, reserve room, call users outside the room, listen to passive room events (such as room dissolution, updates, etc.).|[API Documentation](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstore)|
|
|
230
|
-
|
|
231
|
-
## Contact Us
|
|
232
|
-
|
|
233
|
-
If you have any questions or suggestions during integration or usage, contact info_rtc@tencent.com.
|
|
@@ -563,7 +563,3 @@ private func subscribeParticipantState() {
|
|
|
563
563
|
|**Store/Component**|**Description**|**API Documentation**|
|
|
564
564
|
|---------|---------|---------|
|
|
565
565
|
|**RoomParticipantStore**|Manage participants in the room: assign admin roles, transfer ownership, retrieve participant list, remove participants, control participant devices (e.g., close, invite to enable camera/microphone), request device enable (e.g., request to enable camera/microphone).|[API Documentation](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomparticipantstore)|
|
|
566
|
-
|
|
567
|
-
## Contact Us
|
|
568
|
-
|
|
569
|
-
If you have any questions or suggestions during integration or use, please contact info_rtc@tencent.com.
|
|
@@ -319,7 +319,3 @@ private func subscribeRoomState() {
|
|
|
319
319
|
**What does this mean for developers?**
|
|
320
320
|
|
|
321
321
|
`participantCount` provides a highly accurate, near real-time estimate. However, during periods of extremely high concurrency, updates may be briefly delayed or lost. We recommend using it for **UI display** purposes only, not for billing, analytics, or other scenarios requiring absolute precision.
|
|
322
|
-
|
|
323
|
-
## Contact Us
|
|
324
|
-
|
|
325
|
-
If you have questions or feedback during integration or usage, please email info_rtc@tencent.com.
|
|
@@ -89,7 +89,7 @@ func scheduleRoom() {
|
|
|
89
89
|
| <code>scheduleStartTime</code> | <code>Int</code> | Yes | - Scheduled start time (Unix timestamp in seconds).<br>- Must be greater than the current time.<br>- We recommend aligning to a future minute. Example: 1736164800 (2025-01-06 20:00:00). |
|
|
90
90
|
| <code>scheduleEndTime</code> | <code>Int</code> | Yes | - Scheduled end time (Unix timestamp in seconds).<br>- Must be greater than <code>scheduleStartTime</code>.<br>- Set based on expected duration, e.g., <code>scheduleStartTime</code> + 3600 for one hour. |
|
|
91
91
|
| <code>reminderSecondsBeforeStart</code> | <code>Int</code> | No | - Reminder time before the scheduled start (seconds). Used for system-triggered notifications.<br>- Recommended: 300 (5 min) or 900 (15 min) for local app notifications. |
|
|
92
|
-
| <code>scheduleAttendees</code> | <code>[String]</code> | No | - List of participant user IDs. The system will send invitations to these users.<br>-
|
|
92
|
+
| <code>scheduleAttendees</code> | <code>[String]</code> | No | - List of participant user IDs. The system will send invitations to these users.<br>- . |
|
|
93
93
|
| <code>isAllMicrophoneDisabled</code> | <code>Bool</code> | No | Whether to mute all participants by default.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
94
94
|
| <code>isAllCameraDisabled</code> | <code>Bool</code> | No | Whether to disable all participant cameras by default.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
95
95
|
| <code>isAllScreenShareDisabled</code> | <code>Bool</code> | No | Whether to disable screen sharing for all participants.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
@@ -316,7 +316,3 @@ If you are not receiving a "room starting soon" notification after scheduling, c
|
|
|
316
316
|
- If the room's start time is too close (e.g., 5 minutes away) and the reminder is set too far in advance (e.g., 10 minutes before), the event will not trigger.
|
|
317
317
|
|
|
318
318
|
- Make sure the scheduled start time is at least as far in the future as the reminder value you set.
|
|
319
|
-
|
|
320
|
-
## Contact Us
|
|
321
|
-
|
|
322
|
-
For questions or feedback during integration or usage, contact info_rtc@tencent.com.
|
|
@@ -138,7 +138,7 @@ onUnmounted(() => {
|
|
|
138
138
|
|
|
139
139
|
## Practical Tutorial: Improving the Call Answer Rate
|
|
140
140
|
|
|
141
|
-
To achieve a higher call answer rate in your business, beyond implementing the basic functionality, it is recommended to
|
|
141
|
+
To achieve a higher call answer rate in your business, beyond implementing the basic functionality, it is recommended to
|
|
142
142
|
|
|
143
143
|
### 1. Enhance Call Awareness (Avoid Users Missing Calls)
|
|
144
144
|
|
|
@@ -74,9 +74,6 @@ watch(currentCamera, (camera) => {
|
|
|
74
74
|
});
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
> **Note:**
|
|
78
|
-
>
|
|
79
|
-
|
|
80
77
|
> When you call [setCurrentCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentCamera) to switch the device, if the camera is already on, Atomicx will automatically stop capturing from the current device and restart capturing with the new device, so the video stream switches seamlessly. If switching fails, the original device will continue to be used.
|
|
81
78
|
>
|
|
82
79
|
|
|
@@ -331,9 +328,6 @@ watch(outputVolume, (volume) => {
|
|
|
331
328
|
|
|
332
329
|
Using the [networkInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#networkInfo) data from [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState), you can monitor the local user's network quality in real time.
|
|
333
330
|
|
|
334
|
-
> **Note:**
|
|
335
|
-
>
|
|
336
|
-
|
|
337
331
|
> Valid data can only be obtained from [networkInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#networkInfo) when the local user has joined a room via [joinRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#joinRoom) and turned on the microphone or camera.
|
|
338
332
|
>
|
|
339
333
|
|
|
@@ -37,9 +37,6 @@ It is generally recommended to place `FreeBeautyPanel` inside a Dialog or Modal,
|
|
|
37
37
|
|
|
38
38
|
**The following example shows how to implement a complete interaction where clicking a button opens the beauty settings:**
|
|
39
39
|
|
|
40
|
-
> **Note:**
|
|
41
|
-
>
|
|
42
|
-
|
|
43
40
|
> All TUIKit components must be wrapped inside UIKitProvider; otherwise, they will not be able to obtain their context dependencies, resulting in abnormal styling.
|
|
44
41
|
>
|
|
45
42
|
|
|
@@ -117,9 +114,6 @@ This section mainly describes how to implement basic beauty via the atomicx-core
|
|
|
117
114
|
|
|
118
115
|
When the user adjusts the beauty parameters (for example, by dragging a slider), use [setFreeBeauty](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setFreeBeauty) for real-time preview. At this point, the effect is only visible locally and will not be transmitted to remote users.
|
|
119
116
|
|
|
120
|
-
> **Note:**
|
|
121
|
-
>
|
|
122
|
-
|
|
123
117
|
> The value range of the parameters is 0-100.
|
|
124
118
|
>
|
|
125
119
|
|
|
@@ -143,9 +137,6 @@ const updatePreview = async (beauty: number, white: number, ruddy: number) => {
|
|
|
143
137
|
|
|
144
138
|
After the user confirms that they are satisfied with the preview, call [saveBeautySetting](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#saveBeautySetting) to apply the current configuration to the video stream. At this point, remote users can see the beauty effect.
|
|
145
139
|
|
|
146
|
-
> **Note:**
|
|
147
|
-
>
|
|
148
|
-
|
|
149
140
|
> The beauty feature depends on a camera device. You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to check the device status.
|
|
150
141
|
>
|
|
151
142
|
> - [cameraList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraList): The list of currently available camera devices. If the list is empty, it means no camera was detected or camera permission is denied.
|
|
@@ -35,7 +35,6 @@ This feature offers two integration approaches, and you can choose the one that
|
|
|
35
35
|
After the user successfully joins the room, you need to call the [setActiveConversation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setActiveConversation) API to initialize the chat data. We recommend listening for changes to [currentRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#currentRoom) to handle this automatically.
|
|
36
36
|
|
|
37
37
|
> **Note:**
|
|
38
|
-
>
|
|
39
38
|
> - `GROUP` is a fixed prefix. The `setActiveConversation` argument must be ``GROUP${roomId}``; otherwise, messages cannot be sent or received properly.
|
|
40
39
|
> - `GROUP` is the fixed prefix for IM SDK group conversations (see [IM conversation types](https://web.sdk.qcloud.com/im/doc/zh-cn/Conversation.html)). Room chat is built on IM groups, so the conversation ID must be in the ``GROUP${roomId}`` format.
|
|
41
40
|
|
|
@@ -60,9 +59,6 @@ watch(() => currentRoom.value?.roomId, (roomId) => {
|
|
|
60
59
|
|
|
61
60
|
In your page, you can directly combine these two components. At the same time, use [useRoomParticipantState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-RoomParticipantState) to obtain the current user's mute status and control the availability of the input box.
|
|
62
61
|
|
|
63
|
-
> **Caution:**
|
|
64
|
-
>
|
|
65
|
-
|
|
66
62
|
> All TUIKit components must be wrapped inside UIKitProvider; otherwise, they cannot obtain their context dependencies, resulting in abnormal styles.
|
|
67
63
|
>
|
|
68
64
|
|
|
@@ -144,9 +140,6 @@ const openChatWindow = () => {
|
|
|
144
140
|
|
|
145
141
|
This section mainly explains how to implement a custom chat interface using the atomicx-core SDK APIs [useMessageListState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-MessageListState) and [useMessageInputState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-MessageInputState).
|
|
146
142
|
|
|
147
|
-
> **Caution:**
|
|
148
|
-
>
|
|
149
|
-
|
|
150
143
|
> `MessageInputState` supports integration with the `@tiptap/vue-3` editor by default. If you only need a simple text input (such as `<input>` or `<textarea>`), please **ignore** the editor-instance-bound APIs such as `setEditorInstance` and `setContent`, and simply use `updateRawValue` and `sendMessage`.
|
|
151
144
|
>
|
|
152
145
|
|
|
@@ -155,7 +148,6 @@ This section mainly explains how to implement a custom chat interface using the
|
|
|
155
148
|
After the user successfully joins the room, you need to call the [setActiveConversation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setActiveConversation) API to initialize the chat data. We recommend listening for changes to [currentRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#currentRoom) to handle this automatically.
|
|
156
149
|
|
|
157
150
|
> **Note:**
|
|
158
|
-
>
|
|
159
151
|
> - `GROUP` is a fixed prefix. The `setActiveConversation` argument must be ``GROUP${roomId}``; otherwise, messages cannot be sent or received properly.
|
|
160
152
|
> - When switching rooms or leaving a room, we recommend resetting or clearing the active conversation to avoid sending messages to the wrong conversation.
|
|
161
153
|
|
|
@@ -241,9 +233,6 @@ const handleSend = async () => {
|
|
|
241
233
|
|
|
242
234
|
Use the [loadMoreOlderMessage](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-MessageListState) method to fetch historical messages page by page. This is usually triggered when scrolling to the top of the list.
|
|
243
235
|
|
|
244
|
-
> **Caution:**
|
|
245
|
-
>
|
|
246
|
-
|
|
247
236
|
> After loading historical messages, you usually need to manually adjust the scrollbar position to keep the current viewport from jumping.
|
|
248
237
|
>
|
|
249
238
|
|
|
@@ -81,7 +81,6 @@ const { participantList } = useRoomParticipantState();
|
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
> **Note:**
|
|
84
|
-
>
|
|
85
84
|
> - `RoomParticipantList` automatically fills the height and width of its parent container, so make sure its parent container has explicit dimensions.
|
|
86
85
|
> - When using the `RoomParticipantList` component, make sure to configure the global `UIKitProvider` in `App.vue`. For details, refer to [Configuring App.vue](https://cloud.tencent.com/document/product/647/81962#ce98ee15-b0cb-43af-81da-70f51231430e).
|
|
87
86
|
|
|
@@ -111,9 +110,6 @@ const handleLoadMore = async () => {
|
|
|
111
110
|
};
|
|
112
111
|
```
|
|
113
112
|
|
|
114
|
-
> **Note:**
|
|
115
|
-
>
|
|
116
|
-
|
|
117
113
|
> The data successfully fetched by the `getParticipantList` interface is automatically maintained in `participantList`. The UI only needs to render the data in `participantList`.
|
|
118
114
|
>
|
|
119
115
|
|
|
@@ -355,7 +351,7 @@ await kickParticipant({ userId });
|
|
|
355
351
|
|
|
356
352
|
### Step 9: Invite others to join the room
|
|
357
353
|
|
|
358
|
-
In actual business scenarios, you may need to send a call invitation to users who have not yet entered the room. Atomicx provides full support for a calling system.
|
|
354
|
+
In actual business scenarios, you may need to send a call invitation to users who have not yet entered the room. Atomicx provides full support for a calling system. .
|
|
359
355
|
|
|
360
356
|
## API Documentation
|
|
361
357
|
|
|
@@ -32,9 +32,6 @@ const {
|
|
|
32
32
|
|
|
33
33
|
Create a room (room owner): Use [createAndJoinRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#createAndJoinRoom). After a successful call, the user automatically gains room owner permissions.
|
|
34
34
|
|
|
35
|
-
> **Note:**
|
|
36
|
-
>
|
|
37
|
-
|
|
38
35
|
> It is recommended that the roomId specified when creating a room be generated and delivered by the business backend, to ensure the uniqueness and stability of the room ID across the entire application globally.
|
|
39
36
|
>
|
|
40
37
|
|
|
@@ -148,9 +145,6 @@ await updateRoomInfo({
|
|
|
148
145
|
})
|
|
149
146
|
```
|
|
150
147
|
|
|
151
|
-
> **Note:**
|
|
152
|
-
>
|
|
153
|
-
|
|
154
148
|
> The room owner must be inside the room to call [updateRoomInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#updateRoomInfo). If the room owner has already left the room, they need to rejoin before they can update the room information.
|
|
155
149
|
>
|
|
156
150
|
|
|
@@ -175,7 +169,6 @@ await endRoom();
|
|
|
175
169
|
```
|
|
176
170
|
|
|
177
171
|
> **Note:**
|
|
178
|
-
>
|
|
179
172
|
> - If the room owner leaves the room but does not call [endRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#endRoom), the room will continue to exist until the automatic reclamation condition is met (no users for 6 consecutive hours).
|
|
180
173
|
> - The room owner can transfer the room owner identity to another user via the [transferOwner](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#transferOwner) interface.
|
|
181
174
|
|
|
@@ -261,7 +254,7 @@ Atomicx provides complete scheduled room capabilities, including:
|
|
|
261
254
|
|
|
262
255
|
- **Join reminders:** Support automatic reminder logic before the start.
|
|
263
256
|
|
|
264
|
-
|
|
257
|
+
If you need to implement the more complex business logic for managing multi-person audio/video rooms described above, please .
|
|
265
258
|
|
|
266
259
|
## FAQ
|
|
267
260
|
|
|
@@ -60,9 +60,6 @@ const handleStartScreenShareWithAudio = async () => {
|
|
|
60
60
|
|Firefox|Not supported|System audio sharing is not yet supported|
|
|
61
61
|
|Safari|Not supported|System audio sharing is not yet supported|
|
|
62
62
|
|
|
63
|
-
> **Note:**
|
|
64
|
-
>
|
|
65
|
-
|
|
66
63
|
> System audio sharing requires browser support, and the user must check the **Share audio** option in the screen picker. If the browser does not support system audio sharing, the `screenAudio` parameter is ignored, but the screen sharing feature is not affected and works normally.
|
|
67
64
|
>
|
|
68
65
|
|
|
@@ -50,7 +50,6 @@ It is generally recommended to place the [VirtualBackgroundPanel](https://github
|
|
|
50
50
|
**The following example shows how to implement a complete interaction where clicking a button opens the virtual background settings:**
|
|
51
51
|
|
|
52
52
|
> **Note:**
|
|
53
|
-
>
|
|
54
53
|
> - Publish the `node_modules/trtc-sdk-v5/assets` directory to a CDN or static resource server. For details, see the [SDK documentation](https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/tutorial-36-advanced-virtual-background.html).
|
|
55
54
|
> - When using the [VirtualBackgroundPanel](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/VirtualBackgroundPanel) component, pass the `assetsPath` static resource address via props.
|
|
56
55
|
> - All TUIKit components must be wrapped inside UIKitProvider; otherwise, they will not be able to obtain their context dependencies, resulting in abnormal styling.
|
|
@@ -122,7 +121,6 @@ This section mainly describes how to implement the virtual background via the at
|
|
|
122
121
|
Before invoking the virtual background feature, you must first check whether the browser supports it and initialize the resource path.
|
|
123
122
|
|
|
124
123
|
> **Note:**
|
|
125
|
-
>
|
|
126
124
|
> - Publish the node_modules/trtc-sdk-v5/assets directory to a CDN or static resource server. For details, see the [SDK documentation](https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/tutorial-36-advanced-virtual-background.html).
|
|
127
125
|
> - When using the [initVirtualBackground](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#initVirtualBackground) interface, pass the assetsPath static resource address.
|
|
128
126
|
> - The virtual background feature depends on a camera device. You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to check the device status.
|
|
@@ -155,9 +153,6 @@ onMounted(async () => {
|
|
|
155
153
|
|
|
156
154
|
Before the user confirms applying the background, you usually need to preview the effect first. Use the [setVirtualBackground](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setVirtualBackground) method to set the preview effect. At this point, it is not applied to the video stream visible to remote users.
|
|
157
155
|
|
|
158
|
-
> **Note:**
|
|
159
|
-
>
|
|
160
|
-
|
|
161
156
|
> Calling `setVirtualBackground` only takes effect in the local preview. Remote users will not see the virtual background effect; it is synchronized to the remote video stream only after `saveVirtualBackground` is called.
|
|
162
157
|
>
|
|
163
158
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
TUIRoomKit is a comprehensive multi-party audio and video conferencing solution built on TRTC. It provides a complete set of UI components along with all the core functionality you need to get up and running quickly.
|
|
2
2
|
|
|
3
3
|
This documentation walks you through integrating TUIRoomKit into your project to enable reliable multi-party audio/video conferencing. You'll also find step-by-step guides for customizing image assets, localizing UI text, and configuring other options—everything you need to build audio/video experiences that align with your brand.
|
|
4
|
-
| Room Preparation Page | Room Main Page | Member Management |
|
|
5
|
-
| --- | --- | --- |
|
|
6
|
-
| | | |
|
|
7
4
|
|
|
8
5
|
## Prerequisites
|
|
9
6
|
|
|
@@ -95,7 +92,6 @@ After completing the above steps, Android Studio will usually prompt you to **Sy
|
|
|
95
92
|
After integrating the code, complete the login process. This step is **required to use TUIRoomKit features**—you must log in successfully before accessing any functionality. Verify that all parameters are set correctly:
|
|
96
93
|
|
|
97
94
|
> **Note:**
|
|
98
|
-
>
|
|
99
95
|
> The sample code calls the login API directly. In production scenarios, always call AtomicXCore's login service **after** completing your own user authentication and login workflow. This ensures correct business logic flow, prevents data inconsistencies, and integrates seamlessly with your user management and permission systems.
|
|
100
96
|
>
|
|
101
97
|
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
TUIRoomKit is a comprehensive multi-party audio and video conferencing solution powered by TRTC. It provides a full suite of UI components and essential features out of the box. This guide walks developers through integrating TUIRoomKit into their projects to enable robust multi-party audio and video conferencing. It also covers how to quickly customize image assets, localize UI text, and configure other settings, empowering you to build branded audio and video applications.
|
|
2
|
-
| Room Preparation Page | Standard Room Home | Large Webinar Room Home | Member Management |
|
|
3
|
-
| --- | --- | --- | --- |
|
|
4
|
-
| | | | |
|
|
5
2
|
|
|
6
3
|
## Prerequisites
|
|
7
4
|
|
|
@@ -111,7 +108,6 @@ To enable proper page navigation and multilingual UI, update your Flutter app as
|
|
|
111
108
|
After integration, complete the login process—a **critical step for using TUIRoomKit**. You must log in successfully before accessing TUIRoomKit features. Ensure all parameters are configured correctly:
|
|
112
109
|
|
|
113
110
|
> **Note:**
|
|
114
|
-
>
|
|
115
111
|
> The sample code calls the login interface directly. In production, always call TUIRoomKit's login service **after your own user authentication and login logic**. This prevents business logic confusion and data inconsistencies, and ensures seamless integration with your user management and permission system.
|
|
116
112
|
>
|
|
117
113
|
|
|
@@ -233,7 +229,7 @@ class YourMainPage extends StatelessWidget {
|
|
|
233
229
|
| Parameter | Type | Description |
|
|
234
230
|
| --- | --- | --- |
|
|
235
231
|
| <code>roomID</code> | <code>String</code> | - Unique Room Identifier.<br>- Length: 0-48 bytes.<br>- Use only numbers, English letters (case-sensitive), underscores (_), and hyphens (-). Avoid spaces and Chinese characters. |
|
|
236
|
-
| <code>behavior</code> | <code>RoomBehavior</code> | - Main Room Page initialization source.<br>- Parameter options:<br>- create: Host creates the room (requires Room Creation Options). For detailed usage of CreateRoomOptions, please
|
|
232
|
+
| <code>behavior</code> | <code>RoomBehavior</code> | - Main Room Page initialization source.<br>- Parameter options:<br>- create: Host creates the room (requires Room Creation Options). For detailed usage of CreateRoomOptions, please .<br>- enter: Participant joins the room. |
|
|
237
233
|
| <code>config</code> | <code>ConnectConfig</code> | Controls audio/video device behavior after entering the room. |
|
|
238
234
|
|
|
239
235
|
**ConnectConfig Parameter Descriptions:**
|
|
@@ -313,21 +309,16 @@ class YourMainPage extends StatelessWidget {
|
|
|
313
309
|
**For detailed parameter descriptions, see:** RoomMainWidget Constructor Parameter Descriptions and ConnectConfig Parameter Descriptions.
|
|
314
310
|
|
|
315
311
|
> **Note:**
|
|
316
|
-
>
|
|
317
312
|
> When joining a large webinar room using TUIRoomKit, ensure the room ID created on the web starts with `webinar_`.
|
|
318
313
|
>
|
|
319
314
|
|
|
320
315
|
## Core Features
|
|
321
316
|
|
|
322
317
|
Once `RoomMainWidget` is integrated, you get a full-featured multi-party audio and video conferencing interface, including member management, device control, room information display, and more. This is the core of the TUIRoomKit component.
|
|
323
|
-
| Standard Room | Large Webinar Room |
|
|
324
|
-
| --- | --- |
|
|
325
|
-
| | |
|
|
326
318
|
|
|
327
319
|
## UI Customization
|
|
328
320
|
|
|
329
321
|
> **Note:**
|
|
330
|
-
>
|
|
331
322
|
> UI customization, icon customization, and text customization require modifying TUIRoomKit source code. When integrated via the pub Dependency Manager, TUIRoomKit is treated as an immutable dependency. Each time you run flutter pub get, Flutter:
|
|
332
323
|
>
|
|
333
324
|
> 1. Checks the version in pubspec.lock.
|
|
@@ -349,9 +340,6 @@ Once `RoomMainWidget` is integrated, you get a full-featured multi-party audio a
|
|
|
349
340
|
> ` path: room`
|
|
350
341
|
|
|
351
342
|
The `RoomMainWidget` main room page is highly customizable and feature-rich. Developers can adapt the UI to fit their business requirements. Below are the main view components in `RoomMainWidget` for quick modification.
|
|
352
|
-
| Standard Room | Large Webinar Room |
|
|
353
|
-
| --- | --- |
|
|
354
|
-
| | |
|
|
355
343
|
|
|
356
344
|
**RoomMainWidget Component Details**
|
|
357
345
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
TUIRoomKit is a comprehensive multi-party audio and video conferencing solution built on TRTC. It provides a complete set of UI components along with all the core functionality you need to get up and running quickly.
|
|
2
2
|
|
|
3
3
|
This documentation walks you through integrating TUIRoomKit into your project to enable reliable multi-party audio/video conferencing. You'll also find step-by-step guides for customizing image assets, localizing UI text, and configuring other options—everything you need to build audio/video experiences that align with your brand.
|
|
4
|
-
| Room Preparation Page | Room Main Page | Member Management |
|
|
5
|
-
| --- | --- | --- |
|
|
6
|
-
| | | |
|
|
7
4
|
|
|
8
5
|
## Prerequisites
|
|
9
6
|
|
|
@@ -88,7 +85,6 @@ To enable audio/video features, your app must request microphone and camera perm
|
|
|
88
85
|
After integrating the code, complete the login process. **This step is required to use TUIRoomKit.** You must log in successfully before accessing any features. Verify that all parameters are correctly configured:
|
|
89
86
|
|
|
90
87
|
> **Note:**
|
|
91
|
-
>
|
|
92
88
|
> In the sample code, login is handled in the `didFinishLaunchingWithOptions` method. In real-world projects, **call the AtomicXCore login service only after your own user authentication and login procedures have completed**. This prevents business logic conflicts and ensures seamless integration with your user management and permission systems.
|
|
93
89
|
>
|
|
94
90
|
|
|
@@ -279,7 +275,6 @@ Once you've integrated `RoomMainView`, your application will offer a full-featur
|
|
|
279
275
|
## Customize UI
|
|
280
276
|
|
|
281
277
|
> **Note:**
|
|
282
|
-
>
|
|
283
278
|
> Customizing UI elements, icons, or text requires modifying the TUIRoomKit source code. When you integrate TUIRoomKit via CocoaPods, it acts as an immutable dependency. Each time you run `pod install`, CocoaPods will:
|
|
284
279
|
>
|
|
285
280
|
> - Check the version listed in Podfile.lock.
|
|
@@ -329,7 +324,6 @@ TUIRoomKit manages UI image resources in `TUIRoomKit.xcassets`. Use Xcode's grap
|
|
|
329
324
|
TUIRoomKit uses the [Apple Strings Catalog](https://developer.apple.com/documentation/xcode/localizing-and-varying-text-with-a-string-catalog) tool to manage UI text. You can easily adjust text using Xcode's visual tools.
|
|
330
325
|
|
|
331
326
|
> **Note:**
|
|
332
|
-
>
|
|
333
327
|
> The Apple Strings Catalog (.xcstrings) format, introduced in Xcode 15, streamlines localization management. It supports structured formats for plurals, device-specific variants, and more, and is now the recommended localization approach for iOS and macOS apps.
|
|
334
328
|
>
|
|
335
329
|
|