@tencent-rtc/mcp 1.4.6 → 1.6.0-beta.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/cursor-setting.png +0 -0
- package/knowledge/bm25-cache.js +74 -0
- package/knowledge/bm25-cache.js.map +1 -0
- package/knowledge/bm25.js +148 -0
- package/knowledge/bm25.js.map +1 -0
- package/knowledge/build-index.js +70 -0
- package/knowledge/build-index.js.map +1 -0
- package/knowledge/chunker.js +168 -0
- package/knowledge/chunker.js.map +1 -0
- package/knowledge/content-loader.js +40 -0
- package/knowledge/content-loader.js.map +1 -0
- package/knowledge/doc-url-resolver.js +143 -0
- package/knowledge/doc-url-resolver.js.map +1 -0
- package/knowledge/extractors.js +26 -0
- package/knowledge/extractors.js.map +1 -0
- package/knowledge/path-meta.js +185 -0
- package/knowledge/path-meta.js.map +1 -0
- package/knowledge/search/exact-lookup.js +498 -0
- package/knowledge/search/exact-lookup.js.map +1 -0
- package/knowledge/search/filter-pool.js +105 -0
- package/knowledge/search/filter-pool.js.map +1 -0
- package/knowledge/search/product-scope-intent.js +41 -0
- package/knowledge/search/product-scope-intent.js.map +1 -0
- package/knowledge/search/requires-framework.js +82 -0
- package/knowledge/search/requires-framework.js.map +1 -0
- package/knowledge/search/search-knowledge.js +230 -0
- package/knowledge/search/search-knowledge.js.map +1 -0
- package/mcp-server-prompt.png +0 -0
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +10 -0
- package/resource/_schema/goal-tags.yaml +72 -0
- package/resource/_schema/products.yaml +19 -0
- package/resource/_schema/trtc-intents.yaml +27 -0
- package/resource/_schema/types.yaml +43 -0
- package/resource/index/component-slugs.json +1 -0
- package/resource/index/doc-source-urls.json +1 -0
- package/resource/index/manifest.json +1 -0
- package/resource/{doc → integration}/callkit/preset/android/integration.md +34 -28
- package/resource/integration/callkit/preset/flutter/integration.md +346 -0
- package/resource/integration/callkit/preset/ios/integration.md +408 -0
- package/resource/integration/callkit/preset/react/integration.md +362 -0
- package/resource/integration/callkit/preset/vue/integration.md +356 -0
- package/resource/integration/chat/preset/android/integration.md +500 -0
- package/resource/integration/chat/preset/flutter/integration.md +370 -0
- package/resource/integration/chat/preset/ios/integration.md +566 -0
- package/resource/integration/chat/preset/react/integration.md +490 -0
- package/resource/integration/chat/preset/vue/integration.md +504 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +26 -22
- package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +22 -18
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +309 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +47 -39
- package/resource/integration/roomkit/preset/vue/integration.md +562 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +828 -0
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +897 -0
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +363 -0
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1111 -0
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1132 -0
- package/resource/{doc → knowledge}/callkit/core-sdk/flutter/offline-push.md +174 -151
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1084 -0
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1252 -0
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +534 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +953 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1061 -0
- package/resource/knowledge/callkit/faq/android.md +92 -0
- package/resource/{doc/callkit/faq/android-faq.md → knowledge/callkit/faq/common.md} +11 -12
- package/resource/knowledge/callkit/faq/error-code.md +67 -0
- package/resource/knowledge/callkit/faq/flutter.md +52 -0
- package/resource/knowledge/callkit/faq/ios.md +104 -0
- package/resource/knowledge/callkit/faq/web.md +74 -0
- package/resource/knowledge/callkit/preset/android/api.md +412 -0
- package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
- package/resource/knowledge/callkit/preset/ios/api.md +234 -0
- package/resource/knowledge/callkit/preset/web/api.md +83 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +74 -0
- package/resource/knowledge/chat/preset/android/features/contact-list.md +43 -0
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +117 -0
- package/resource/knowledge/chat/preset/android/features/language.md +136 -0
- package/resource/knowledge/chat/preset/android/features/message-input.md +57 -0
- package/resource/knowledge/chat/preset/android/features/message-list.md +142 -0
- package/resource/knowledge/chat/preset/android/features/search.md +64 -0
- package/resource/knowledge/chat/preset/android/features/theme.md +222 -0
- package/resource/knowledge/chat/preset/android-view/integration.md +300 -0
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +64 -0
- package/resource/knowledge/chat/preset/flutter/features/contact-list.md +40 -0
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +129 -0
- package/resource/knowledge/chat/preset/flutter/features/language.md +104 -0
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +54 -0
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +158 -0
- package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
- package/resource/knowledge/chat/preset/flutter/features/theme.md +261 -0
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +94 -0
- package/resource/knowledge/chat/preset/ios/features/contact-list.md +119 -0
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +134 -0
- package/resource/knowledge/chat/preset/ios/features/language.md +125 -0
- package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
- package/resource/knowledge/chat/preset/ios/features/message-list.md +162 -0
- package/resource/knowledge/chat/preset/ios/features/search.md +93 -0
- package/resource/knowledge/chat/preset/ios/features/theme.md +270 -0
- package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +160 -158
- package/resource/knowledge/chat/preset/react/features/chat-setting.md +101 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +43 -41
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +215 -0
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +339 -0
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +101 -0
- package/resource/knowledge/chat/preset/react/features/conversation-search.md +61 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +117 -156
- package/resource/knowledge/chat/preset/react/features/message-list.md +297 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/search.md +65 -59
- package/resource/knowledge/chat/preset/react/features/theme.md +93 -0
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/chat-setting.md +79 -0
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +277 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +234 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +216 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +13 -13
- package/resource/knowledge/chat/preset/vue/features/message-input.md +551 -0
- package/resource/knowledge/chat/preset/vue/features/message-list.md +350 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +79 -73
- package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
- package/resource/knowledge/chat/urls/error-code.md +17 -0
- package/resource/knowledge/chat/urls/product.md +43 -0
- package/resource/knowledge/chat/urls/restapi.md +204 -0
- package/resource/knowledge/chat/urls/sdk/android.md +80 -0
- package/resource/knowledge/chat/urls/sdk/flutter.md +71 -0
- package/resource/knowledge/chat/urls/sdk/ios.md +80 -0
- package/resource/knowledge/chat/urls/sdk/web.md +80 -0
- package/resource/knowledge/chat/urls/webhook.md +68 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +286 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +174 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +329 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +55 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +434 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +362 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +466 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +173 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +51 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +291 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +488 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +219 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +282 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +153 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +312 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +404 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +334 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +426 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +52 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +150 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +438 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +190 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +291 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +192 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +146 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +309 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +370 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +339 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +503 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +188 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +51 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +289 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +487 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +183 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +736 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +17 -15
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +102 -89
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +45 -43
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +23 -20
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +41 -41
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +70 -69
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +68 -71
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +43 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +59 -56
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +103 -105
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-host-interaction.md +869 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +84 -87
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +43 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +15 -14
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +40 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +94 -81
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +45 -42
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-room-list.md +23 -20
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +260 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +598 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-barrage.md +490 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +65 -59
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +424 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +69 -76
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-room-list.md +726 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +49 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-room-list.md +19 -18
- package/resource/knowledge/livekit/faq/error-code.md +193 -0
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/barrage.md +56 -53
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-audience-list.md +22 -21
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-view.md +34 -32
- package/resource/knowledge/push/config/android.md +92 -0
- package/resource/knowledge/push/config/harmonyos.md +83 -0
- package/resource/knowledge/push/config/ios.md +254 -0
- package/resource/knowledge/push/config/react-native.md +254 -0
- package/resource/knowledge/push/config/unity.md +209 -0
- package/resource/knowledge/push/config/unreal-engine.md +194 -0
- package/resource/knowledge/push/integration/android.md +404 -0
- package/resource/knowledge/push/integration/flutter.md +465 -0
- package/resource/knowledge/push/integration/harmonyos.md +63 -0
- package/resource/knowledge/push/integration/ios.md +246 -0
- package/resource/knowledge/push/integration/react-native.md +366 -0
- package/resource/knowledge/push/integration/uni-app.md +208 -0
- package/resource/knowledge/push/integration/unity.md +389 -0
- package/resource/knowledge/push/integration/unreal-engine.md +390 -0
- package/resource/knowledge/push/overview/prepare.md +60 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +241 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +588 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +364 -0
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +340 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +797 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +233 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +569 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +322 -0
- package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +221 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +49 -48
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +461 -0
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +216 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +370 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-participant-state.md +61 -60
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +280 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-view.md +57 -56
- package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +319 -0
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +267 -0
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +261 -0
- package/resource/knowledge/roomkit/preset/android/integration.md +396 -0
- package/resource/knowledge/roomkit/preset/flutter/integration.md +404 -0
- package/resource/knowledge/roomkit/preset/ios/integration.md +369 -0
- package/resource/knowledge/roomkit/preset/react/integration.md +576 -0
- package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +44 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +8 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +19 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/23-advanced-support-detection.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/24-advanced-network-quality.md +8 -8
- package/resource/{doc → knowledge}/rtcengine/web/plugin/25-advanced-device-change.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +6 -6
- package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +3 -3
- package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +18 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +2 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
- package/resource/knowledge/trtc/android/TRTCCloud.md +1915 -0
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +1029 -0
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +1095 -0
- package/resource/knowledge/trtc/android/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
- package/resource/knowledge/trtc/android/TXDeviceManager.md +169 -0
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +125 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +2069 -0
- package/resource/knowledge/trtc/c++/ITRTCStatistics.md +73 -0
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +391 -0
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1191 -0
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +931 -0
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +127 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +2118 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDef.md +975 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1131 -0
- package/resource/knowledge/trtc/ios/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +423 -0
- package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +387 -0
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +127 -0
- package/server.js +35 -10
- package/server.js.map +1 -1
- package/tools/call/get_native_call_uikit_integration.js +2 -3
- package/tools/call/get_native_call_uikit_integration.js.map +1 -1
- package/tools/call/get_native_callkit_core_integration.js +2 -5
- package/tools/call/get_native_callkit_core_integration.js.map +1 -1
- package/tools/call/get_web_call_uikit_integration.js +2 -3
- package/tools/call/get_web_call_uikit_integration.js.map +1 -1
- package/tools/chat/get_native_chat_uikit_integration.js +2 -3
- package/tools/chat/get_native_chat_uikit_integration.js.map +1 -1
- package/tools/chat/get_web_chat_uikit_integration.js +2 -3
- package/tools/chat/get_web_chat_uikit_integration.js.map +1 -1
- package/tools/common/present_framework_choice.js +19 -13
- package/tools/common/present_framework_choice.js.map +1 -1
- package/tools/common/record_answer.js +19 -25
- package/tools/common/record_answer.js.map +1 -1
- package/tools/common/record_feedback.js +17 -30
- package/tools/common/record_feedback.js.map +1 -1
- package/tools/common/search_trtc_knowledge.js +45 -0
- package/tools/common/search_trtc_knowledge.js.map +1 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js +3 -1
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_callkit_core_integration_def.js +5 -3
- package/tools/definitions/get_native_callkit_core_integration_def.js.map +1 -1
- package/tools/definitions/get_native_chat_uikit_integration_def.js +5 -2
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_livekit_core_integration_def.js +6 -5
- package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js +4 -2
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -0
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +5 -5
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_room_core_integration_def.js +50 -0
- package/tools/definitions/get_web_room_core_integration_def.js.map +1 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +5 -4
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
- package/tools/definitions/integration-boundary.js +6 -0
- package/tools/definitions/integration-boundary.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +12 -10
- package/tools/definitions/present_framework_choice_def.js.map +1 -1
- package/tools/definitions/record_answer_def.js +19 -17
- package/tools/definitions/record_answer_def.js.map +1 -1
- package/tools/definitions/record_feedback_def.js +14 -13
- package/tools/definitions/record_feedback_def.js.map +1 -1
- package/tools/definitions/search_trtc_knowledge_def.js +40 -0
- package/tools/definitions/search_trtc_knowledge_def.js.map +1 -0
- package/tools/index.js +5 -36
- package/tools/index.js.map +1 -1
- package/tools/live/get_native_livekit_core_integration.js +1 -3
- package/tools/live/get_native_livekit_core_integration.js.map +1 -1
- package/tools/live/get_web_live_uikit_integration.js +2 -4
- package/tools/live/get_web_live_uikit_integration.js.map +1 -1
- package/tools/room/get_web_room_core_integration.js +48 -0
- package/tools/room/get_web_room_core_integration.js.map +1 -0
- package/tools/room/get_web_room_uikit_integration.js +2 -3
- package/tools/room/get_web_room_uikit_integration.js.map +1 -1
- package/utils/generate-structured-result.js +24 -30
- package/utils/generate-structured-result.js.map +1 -1
- package/utils/get-doc-content.js +14 -8
- package/utils/get-doc-content.js.map +1 -1
- package/utils/report-cls-client.js +18 -20
- package/utils/report-cls-client.js.map +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
- package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -852
- package/resource/doc/callkit/core-sdk/android/make-call.md +0 -954
- package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -361
- package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1160
- package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1205
- package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1090
- package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1248
- package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -485
- package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -950
- package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1052
- package/resource/doc/callkit/faq/common/error-code.md +0 -47
- package/resource/doc/callkit/faq/flutter-faq.md +0 -115
- package/resource/doc/callkit/faq/ios-faq.md +0 -115
- package/resource/doc/callkit/faq/web-faq.md +0 -36
- package/resource/doc/callkit/preset/android/api.md +0 -296
- package/resource/doc/callkit/preset/flutter/api.md +0 -410
- package/resource/doc/callkit/preset/flutter/integration.md +0 -164
- package/resource/doc/callkit/preset/ios/api.md +0 -80
- package/resource/doc/callkit/preset/ios/integration.md +0 -187
- package/resource/doc/callkit/preset/react/api.md +0 -501
- package/resource/doc/callkit/preset/react/integration.md +0 -86
- package/resource/doc/callkit/preset/vue/api.md +0 -501
- package/resource/doc/callkit/preset/vue/integration.md +0 -83
- package/resource/doc/chatkit/android/faq.md +0 -111
- package/resource/doc/chatkit/android/features/theme.md +0 -219
- package/resource/doc/chatkit/android/integration.md +0 -490
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -281
- package/resource/doc/chatkit/faq/common/product.md +0 -7
- package/resource/doc/chatkit/faq/common/server.md +0 -44
- package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -199
- package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -53
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -235
- package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
- package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -287
- package/resource/doc/chatkit/flutter/faq.md +0 -23
- package/resource/doc/chatkit/flutter/features/theme.md +0 -235
- package/resource/doc/chatkit/flutter/integration.md +0 -344
- package/resource/doc/chatkit/ios/faq.md +0 -111
- package/resource/doc/chatkit/ios/features/theme.md +0 -267
- package/resource/doc/chatkit/react/components/avatar.md +0 -104
- package/resource/doc/chatkit/react/components/chat-header.md +0 -148
- package/resource/doc/chatkit/react/components/chat-setting.md +0 -57
- package/resource/doc/chatkit/react/components/chat.md +0 -38
- package/resource/doc/chatkit/react/components/component-list.md +0 -37
- package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
- package/resource/doc/chatkit/react/components/conversation-list.md +0 -333
- package/resource/doc/chatkit/react/components/conversation-preview.md +0 -118
- package/resource/doc/chatkit/react/components/conversation-search.md +0 -60
- package/resource/doc/chatkit/react/components/message-list.md +0 -293
- package/resource/doc/chatkit/react/components/tuikit.md +0 -34
- package/resource/doc/chatkit/react/faq.md +0 -26
- package/resource/doc/chatkit/react/integration.md +0 -416
- package/resource/doc/chatkit/vue/components/avatar.md +0 -104
- package/resource/doc/chatkit/vue/components/chat-header.md +0 -148
- package/resource/doc/chatkit/vue/components/chat-setting.md +0 -62
- package/resource/doc/chatkit/vue/components/chat.md +0 -45
- package/resource/doc/chatkit/vue/components/component-list.md +0 -87
- package/resource/doc/chatkit/vue/components/contact-list.md +0 -271
- package/resource/doc/chatkit/vue/components/conversation-actions.md +0 -228
- package/resource/doc/chatkit/vue/components/conversation-list.md +0 -320
- package/resource/doc/chatkit/vue/components/conversation-preview.md +0 -213
- package/resource/doc/chatkit/vue/components/message-input.md +0 -1054
- package/resource/doc/chatkit/vue/components/message-list.md +0 -433
- package/resource/doc/chatkit/vue/components/tuikit.md +0 -31
- package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
- package/resource/doc/chatkit/vue/faq.md +0 -36
- package/resource/doc/chatkit/vue/integration.md +0 -428
- package/resource/doc/livekit/core-sdk/live/flutter/live-host-interaction.md +0 -866
- package/resource/doc/livekit/faq/common/error-code.md +0 -88
- package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
- package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -91
- package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -112
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -215
- package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +0 -300
- package/resource/doc/roomkit/faq/common/error-code.md +0 -67
- package/resource/doc/roomkit/vue/features/call-user-to-room.md +0 -220
- package/resource/doc/roomkit/vue/features/device-state.md +0 -460
- package/resource/doc/roomkit/vue/features/free-beauty-panel.md +0 -215
- package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
- package/resource/doc/roomkit/vue/features/room-state.md +0 -282
- package/resource/doc/roomkit/vue/features/schedule-room.md +0 -318
- package/resource/doc/roomkit/vue/features/screen-share.md +0 -265
- package/resource/doc/roomkit/vue/features/virtual-background.md +0 -271
- package/resource/doc/roomkit/vue/integration.md +0 -315
- package/resource/doc/rtcengine/faq/common/error_code.md +0 -1
- package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +0 -59
- package/resource/doc/trtc/C++/ITRTCCloud.md +0 -1970
- package/resource/doc/trtc/C++/ITRTCStatistics.md +0 -70
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -387
- package/resource/doc/trtc/C++/TRTCCloudCallback.md +0 -1082
- package/resource/doc/trtc/C++/TRTCTypeDef.md +0 -925
- package/resource/doc/trtc/C++/TXLiteAVCode.md +0 -129
- package/resource/doc/trtc/android/TRTCCloud.md +0 -1815
- package/resource/doc/trtc/android/TRTCCloudDef.md +0 -992
- package/resource/doc/trtc/android/TRTCCloudListener.md +0 -1004
- package/resource/doc/trtc/android/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/android/TXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/android/TXBeautyManager.md +0 -402
- package/resource/doc/trtc/android/TXDeviceManager.md +0 -173
- package/resource/doc/trtc/android/TXLiteAVCode.md +0 -127
- package/resource/doc/trtc/iOS/TRTCCloud.md +0 -2028
- package/resource/doc/trtc/iOS/TRTCCloudDef.md +0 -958
- package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +0 -1046
- package/resource/doc/trtc/iOS/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/iOS/TXAudioEffectManager.md +0 -397
- package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -403
- package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -381
- package/resource/doc/trtc/iOS/TXLiteAVCode.md +0 -130
- package/tools/call/get_callkit_api.js +0 -33
- package/tools/call/get_callkit_api.js.map +0 -1
- package/tools/chat/get_native_chat_uikit_feature_detail.js +0 -35
- package/tools/chat/get_native_chat_uikit_feature_detail.js.map +0 -1
- package/tools/chat/get_web_chat_uikit_component_detail.js +0 -35
- package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
- package/tools/common/get_faq.js +0 -266
- package/tools/common/get_faq.js.map +0 -1
- package/tools/common/record_skill_session.js +0 -69
- package/tools/common/record_skill_session.js.map +0 -1
- package/tools/definitions/get_callkit_api_def.js +0 -29
- package/tools/definitions/get_callkit_api_def.js.map +0 -1
- package/tools/definitions/get_faq_def.js +0 -49
- package/tools/definitions/get_faq_def.js.map +0 -1
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +0 -31
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_native_livekit_core_features_def.js +0 -34
- package/tools/definitions/get_native_livekit_core_features_def.js.map +0 -1
- package/tools/definitions/get_native_trtc_sdk_docs_def.js +0 -32
- package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js +0 -31
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_api_def.js +0 -30
- package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_component_detail_def.js +0 -32
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -31
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +0 -1
- package/tools/definitions/record_skill_session_def.js +0 -31
- package/tools/definitions/record_skill_session_def.js.map +0 -1
- package/tools/live/get_native_livekit_core_features.js +0 -68
- package/tools/live/get_native_livekit_core_features.js.map +0 -1
- package/tools/live/get_web_livekit_api.js +0 -33
- package/tools/live/get_web_livekit_api.js.map +0 -1
- package/tools/live/get_web_livekit_component_detail.js +0 -35
- package/tools/live/get_web_livekit_component_detail.js.map +0 -1
- package/tools/room/get_web_roomkit_feature_detail.js +0 -69
- package/tools/room/get_web_roomkit_feature_detail.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_api.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_api.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_integration.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +0 -1
- package/tools/trtc/get_native_trtc_sdk_docs.js +0 -74
- package/tools/trtc/get_native_trtc_sdk_docs.js.map +0 -1
- package/utils/build-session-directives.js +0 -120
- package/utils/build-session-directives.js.map +0 -1
- package/utils/handle-framework.js +0 -9
- package/utils/handle-framework.js.map +0 -1
- package/utils/handle-state-name.js +0 -29
- package/utils/handle-state-name.js.map +0 -1
- package/utils/report-runtime-error-cls-client.js +0 -91
- package/utils/report-runtime-error-cls-client.js.map +0 -1
- /package/resource/{doc/livekit/preset/live/vue/faq.md → knowledge/push/config/donut.md} +0 -0
- /package/resource/{doc/roomkit/vue/faq.md → knowledge/push/integration/donut.md} +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/api.md +0 -0
- /package/resource/{doc/rtcengine/faq/web/web.md → knowledge/rtcengine/web/faq.md} +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/how_to_integrated_web_sdk.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/28-advanced-beauty.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/30-advanced-cross-room-link.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/37-advanced-voice-changer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/40-advanced-video-mixer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/43-advanced-face-detection.md +0 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
`RoomStore` manages all aspects of room operations within `AtomicXCore`, providing a complete suite of APIs for room lifecycle control—from creation to dissolution. By leveraging RoomStore's interfaces (such as retrieving or updating room information), you can efficiently build robust room management features for your application.
|
|
2
|
+
|
|
3
|
+
## Core Features
|
|
4
|
+
- **Create and Join a Room**: Room owners can create and immediately join a room using this API.
|
|
5
|
+
|
|
6
|
+
- **Join a Room**: Participants can join an existing room directly.
|
|
7
|
+
|
|
8
|
+
- **Leave a Room**: Participants can exit a room they have previously joined.
|
|
9
|
+
|
|
10
|
+
- **End a Room**: Room owners can end a room. If other participants are present, they will receive the `onRoomEnded` event.
|
|
11
|
+
|
|
12
|
+
- **Update the Room Information**: Room owners or administrators can update room properties (currently supports updating room name and password).
|
|
13
|
+
|
|
14
|
+
- **Get the Room Information**: Retrieve detailed information for a specific room.
|
|
15
|
+
|
|
16
|
+
## Core Concepts
|
|
17
|
+
|
|
18
|
+
The core concepts about RoomStore is summarized as follows:
|
|
19
|
+
| Core Concept | Type | Core Responsibilities & Description |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roominfo">RoomInfo</a> | <code>struct</code> | Main data model for room details, encapsulating full room information and state.<br>Key features:<br>- Manages basic room info (Room ID, name, creator).<br>- Tracks real-time status (participant count, room status, creation time).<br>- Supports scheduling (scheduled time, participant list, reminders).<br>- Controls permissions (password protection, device management, message management). |
|
|
22
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstate">RoomState</a> | <code>struct</code> | Core state structure for user-related room information.<br>Key properties:<br>- <code>scheduledRoomList</code>: All scheduled rooms for the current account.<br>- <code>scheduledRoomListCursor</code>: Pagination snapshot for scheduled rooms.<br>- <code>currentRoom</code>: State of the room currently joined. |
|
|
23
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent">RoomEvent</a> | <code>enum</code> | Defines real-time room events. Main categories: scheduled room events, room end events, room call events. |
|
|
24
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstore">RoomStore</a> | <code>class</code> | Central class for managing room lifecycles. Capabilities include fetching scheduled room snapshots, performing room operations, and subscribing to <code>roomEventPublisher</code> for real-time events. |
|
|
25
|
+
|
|
26
|
+
## Implementation Steps
|
|
27
|
+
|
|
28
|
+
### Step 1: Integrate the SDK
|
|
29
|
+
|
|
30
|
+
Follow the Integration Overview to integrate the AtomicXCore SDK. Make sure you have completed the Login Logic Implementation before proceeding.
|
|
31
|
+
|
|
32
|
+
### Step 2: Create and Join a Room
|
|
33
|
+
|
|
34
|
+
#### Implementation
|
|
35
|
+
1. **Configure Room Initialization Parameters**: Initialize `CreateRoomOptions` with the room name and password.
|
|
36
|
+
|
|
37
|
+
2. **Preset Room Permissions**: Set permissions for all participants, such as muting, disabling cameras, etc.
|
|
38
|
+
|
|
39
|
+
3. **Create and Join Room**: Call RoomStore's `createAndJoinRoom` API to handle room creation and entry.
|
|
40
|
+
|
|
41
|
+
#### Sample Code
|
|
42
|
+
``` swift
|
|
43
|
+
import Foundation
|
|
44
|
+
import AtomicXCore
|
|
45
|
+
|
|
46
|
+
func createAndJoinRoom() {
|
|
47
|
+
// 1. Configure room creation parameters
|
|
48
|
+
// CreateRoomOptions defines basic room properties and initial permissions
|
|
49
|
+
var options = CreateRoomOptions()
|
|
50
|
+
options.roomName = "Team Meeting Room" // Room display name
|
|
51
|
+
options.password = "" // Room password (optional)
|
|
52
|
+
|
|
53
|
+
// 2. Preset room permissions
|
|
54
|
+
options.isAllCameraDisabled = false // Disable all member cameras
|
|
55
|
+
options.isAllMessageDisabled = false // Mute all members
|
|
56
|
+
options.isAllMicrophoneDisabled = false // Mute all microphones
|
|
57
|
+
options.isAllScreenShareDisabled = false // Disable screen sharing for all members
|
|
58
|
+
|
|
59
|
+
// 3. Create and join room
|
|
60
|
+
// Handles creation if room does not exist and joining logic
|
|
61
|
+
RoomStore.shared.createAndJoinRoom(roomID: "roomID", roomType: .standard, options: options) { result in
|
|
62
|
+
switch result {
|
|
63
|
+
case .success():
|
|
64
|
+
print("Room created and joined successfully")
|
|
65
|
+
case .failure(let error):
|
|
66
|
+
print("Failed to create and join room [Error Code: \(error.code)]: \(error.message)")
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
#### createAndJoinRoom Interface Parameter Details
|
|
73
|
+
| Parameter Name | Type | Required | Description |
|
|
74
|
+
| --- | --- | --- | --- |
|
|
75
|
+
| <code>roomID</code> | <code>String</code> | Yes | - Unique room identifier.<br>- Length: 0–48 bytes.<br>- Use only numbers, English letters (case-sensitive), underscores (_), and hyphens (-). Avoid spaces and Chinese characters. |
|
|
76
|
+
| <code>roomType</code> | <code>RoomType</code> | Yes | Room type.<br>- <code>standard</code>: All members can freely participate in audio/video interactive.<br>- <code>webinar</code>: Large seminar room; distinguishes guest and audience roles. Audience has no audio/video permissions by default. |
|
|
77
|
+
| <code>options</code> | <code>CreateRoomOptions</code> | Yes | - Room creation configuration object.<br>- See CreateRoomOptions struct documentation for details. |
|
|
78
|
+
| <code>completion</code> | <code>CompletionClosure</code> | No | Completion callback. Returns result of room creation/join. If failed, returns error code and message. |
|
|
79
|
+
|
|
80
|
+
#### CreateRoomOptions Struct Details
|
|
81
|
+
| Parameter Name | Type | Required | Description |
|
|
82
|
+
| --- | --- | --- | --- |
|
|
83
|
+
| <code>roomName</code> | <code>String</code> | No | - Room name (optional; defaults to empty string).<br>- Length: 0–60 bytes.<br>- Supports Chinese, English, numbers, and special characters. |
|
|
84
|
+
| <code>password</code> | <code>String</code> | No | - Room password. Empty string means no password.<br>- Length: 0–32 bytes.<br>- Recommend 4–8 digits for easy mobile input. If set, other users must enter the password to join. Avoid storing sensitive information in plain text. |
|
|
85
|
+
| <code>isAllMicrophoneDisabled</code> | <code>Bool</code> | No | Disable microphones for all members.<br>- true: Disabled.<br>- false: Not disabled (default).<br>Only owner/administrator can unmute; regular participants are muted by default. |
|
|
86
|
+
| <code>isAllCameraDisabled</code> | <code>Bool</code> | No | Disable cameras for all members.<br>- true: Disabled.<br>- false: Not disabled (default).<br>Only owner/administrator can enable cameras; regular participants are disabled by default. |
|
|
87
|
+
| <code>isAllScreenShareDisabled</code> | <code>Bool</code> | No | Disable screen sharing for all members.<br>- true: Disabled.<br>- false: Not disabled (default).<br>Only owner/administrator can share screens. |
|
|
88
|
+
| <code>isAllMessageDisabled</code> | <code>Bool</code> | No | Mute all members (disable chat messages).<br>- true: Disabled.<br>- false: Not disabled (default).<br>Regular participants cannot send text messages in the room. |
|
|
89
|
+
|
|
90
|
+
### Step 3: Join a Room
|
|
91
|
+
|
|
92
|
+
To join an existing room, call the `joinRoom` API from RoomStore. Other participants will receive a join event notification.
|
|
93
|
+
``` swift
|
|
94
|
+
import Foundation
|
|
95
|
+
import AtomicXCore
|
|
96
|
+
|
|
97
|
+
func joinRoom() {
|
|
98
|
+
// 1. Prepare join room parameters
|
|
99
|
+
// joinRoom is used to join a known, ongoing room
|
|
100
|
+
let roomPassword = "" // Room password. Pass empty string or nil if no password.
|
|
101
|
+
|
|
102
|
+
// 2. Call RoomStore join room API
|
|
103
|
+
// Verifies room existence, user access, and password correctness
|
|
104
|
+
RoomStore.shared.joinRoom(roomID: "roomID", roomType: .standard, password: roomPassword) { result in
|
|
105
|
+
switch result {
|
|
106
|
+
case .success():
|
|
107
|
+
print("Joined room successfully")
|
|
108
|
+
case .failure(let error):
|
|
109
|
+
print("Failed to join room [Error Code: \(error.code)]: \(error.message)")
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### joinRoom Interface Parameter Details
|
|
116
|
+
| Parameter Name | Type | Required | Description |
|
|
117
|
+
| --- | --- | --- | --- |
|
|
118
|
+
| <code>roomID</code> | <code>String</code> | Yes | - Unique room identifier.<br>- Length: 0–48 bytes.<br>- Use only numbers, English letters (case-sensitive), underscores (_), and hyphens (-). Avoid spaces and Chinese characters. |
|
|
119
|
+
| <code>roomType</code> | <code>RoomType</code> | Yes | Room type:<br>- standard: All members can freely participate in audio/video interactive.<br>- webinar: Large seminar room; distinguishes guest and audience roles. Audience has no audio/video permissions by default. |
|
|
120
|
+
| <code>password</code> | <code>String</code> | Yes | - Room password. Empty string means no password.<br>- Length: 0–32 bytes.<br>- Recommend 4–8 digits for easy mobile input. If set, other users must enter the password to join. Avoid storing sensitive information in plain text. |
|
|
121
|
+
| <code>completion</code> | <code>CompletionClosure</code> | No | Completion callback. Returns result of joining the room. If failed, returns error code and message. |
|
|
122
|
+
|
|
123
|
+
### Step 4: Leave a Room
|
|
124
|
+
|
|
125
|
+
To exit a room, call RoomStore's `leaveRoom` API. Other participants will receive a leave event notification.
|
|
126
|
+
``` swift
|
|
127
|
+
import Foundation
|
|
128
|
+
import AtomicXCore
|
|
129
|
+
|
|
130
|
+
func leaveRoom() {
|
|
131
|
+
// 1. Business logic
|
|
132
|
+
// leaveRoom is for regular members or owners to voluntarily exit the room.
|
|
133
|
+
// Unlike endRoom, if the owner calls leaveRoom, only they exit—the room remains active.
|
|
134
|
+
|
|
135
|
+
// 2. Call RoomStore leave room API
|
|
136
|
+
// Stops audio/video streams and notifies the server to remove the current user from the room
|
|
137
|
+
RoomStore.shared.leaveRoom { result in
|
|
138
|
+
switch result {
|
|
139
|
+
case .success():
|
|
140
|
+
print("Left room successfully")
|
|
141
|
+
case .failure(let error):
|
|
142
|
+
print("Failed to leave room [Error Code: \(error.code)]: \(error.message)")
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Step 5: End a Room
|
|
149
|
+
|
|
150
|
+
When the room owner wants to dissolve the room, call RoomStore's `endRoom` API. All participants will receive a room ended event.
|
|
151
|
+
``` swift
|
|
152
|
+
import Foundation
|
|
153
|
+
import AtomicXCore
|
|
154
|
+
|
|
155
|
+
func endRoom() {
|
|
156
|
+
// 1. Business logic
|
|
157
|
+
// endRoom permanently dissolves the current room.
|
|
158
|
+
// Note: This is usually restricted to the owner. After dissolution, all members are forcibly exited.
|
|
159
|
+
|
|
160
|
+
// 2. Call RoomStore end room API
|
|
161
|
+
// Sends a dissolution command to the server and notifies all online participants
|
|
162
|
+
RoomStore.shared.endRoom { result in
|
|
163
|
+
switch result {
|
|
164
|
+
case .success():
|
|
165
|
+
print("Room dissolved successfully")
|
|
166
|
+
case .failure(let error):
|
|
167
|
+
print("Failed to dissolve room [Error Code: \(error.code)]: \(error.message)")
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Step 6: Update the Room Information
|
|
174
|
+
|
|
175
|
+
Room owners can update the room name or change the room password using RoomStore's `updateRoomInfo` API. After the update, all participants will receive a room state change notification.
|
|
176
|
+
``` swift
|
|
177
|
+
import Foundation
|
|
178
|
+
import AtomicXCore
|
|
179
|
+
|
|
180
|
+
func updateRoomInfo() {
|
|
181
|
+
// 1. Configure room update parameters
|
|
182
|
+
// UpdateRoomOptions defines the properties to update
|
|
183
|
+
var options = UpdateRoomOptions()
|
|
184
|
+
options.roomName = "New Meeting Room Name" // Update room display name
|
|
185
|
+
|
|
186
|
+
// 2. Set modification flags
|
|
187
|
+
// ModifyFlag specifies which fields to update
|
|
188
|
+
var modifyFlag: UpdateRoomOptions.ModifyFlag = []
|
|
189
|
+
modifyFlag.insert(.roomName) // Flag to update room name
|
|
190
|
+
|
|
191
|
+
// 3. Call RoomStore update room info API
|
|
192
|
+
// Submits the update request to the server and synchronizes to all room members
|
|
193
|
+
RoomStore.shared.updateRoomInfo(roomID: "roomID", options: options, modifyFlag: modifyFlag) { result in
|
|
194
|
+
switch result {
|
|
195
|
+
case .success():
|
|
196
|
+
print("Room information updated successfully")
|
|
197
|
+
case .failure(let error):
|
|
198
|
+
print("Failed to update room information [Error Code: \(error.code)]: \(error.message)")
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### updateRoomInfo Interface Parameter Details
|
|
205
|
+
| Parameter Name | Type | Required | Description |
|
|
206
|
+
| --- | --- | --- | --- |
|
|
207
|
+
| <code>roomID</code> | <code>String</code> | Yes | - Unique room identifier.<br>- Length: 0–48 bytes.<br>- Use only numbers, English letters (case-sensitive), underscores (_), and hyphens (-). Avoid spaces and Chinese characters. |
|
|
208
|
+
| <code>options</code> | <code>UpdateRoomOptions</code> | Yes | - Room property update configuration object.<br>- See UpdateRoomOptions struct documentation for details. |
|
|
209
|
+
| <code>modifyFlag</code> | <code>UpdateRoomOptions.ModifyFlag</code> | Yes | - Room property modification flag. Currently supports updating <strong>room name</strong> and <strong>room password</strong>.<br>- See UpdateRoomOptions.ModifyFlag documentation for details. |
|
|
210
|
+
| <code>completion</code> | <code>CompletionClosure</code> | No | Completion callback. Returns result of updating room information. If failed, returns error code and message. |
|
|
211
|
+
|
|
212
|
+
**UpdateRoomOptions Struct Details**
|
|
213
|
+
| Parameter Name | Type | Required | Description |
|
|
214
|
+
| --- | --- | --- | --- |
|
|
215
|
+
| <code>roomName</code> | <code>String</code> | No | - Room name (optional; defaults to empty string).<br>- Length: 0–60 bytes.<br>- Supports Chinese, English, numbers, and special characters. |
|
|
216
|
+
| <code>password</code> | <code>String</code> | No | - Room password. Empty string means no password.<br>- Length: 0–32 bytes.<br>- Recommend 4–8 digits for easy mobile input. If set, other users must enter the password to join. Avoid storing sensitive information in plain text. |
|
|
217
|
+
|
|
218
|
+
**UpdateRoomOptions.ModifyFlag Details**
|
|
219
|
+
| Parameter Name | Type | Required | Description |
|
|
220
|
+
| --- | --- | --- | --- |
|
|
221
|
+
| <code>roomName</code> | <code>UInt</code> | No | - Flag for modifying room name.<br>- When updating <code>roomName</code> in UpdateRoomOptions, also set the <code>roomName</code> flag in ModifyFlag. |
|
|
222
|
+
| <code>password</code> | <code>UInt</code> | No | - Flag for modifying room password.<br>- When updating <code>password</code> in UpdateRoomOptions, also set the <code>password</code> flag in ModifyFlag. |
|
|
223
|
+
|
|
224
|
+
### Step 7: Get the Room Information
|
|
225
|
+
|
|
226
|
+
After joining a room, call RoomStore's `getRoomInfo` API to retrieve detailed information about the room.
|
|
227
|
+
``` swift
|
|
228
|
+
import Foundation
|
|
229
|
+
import AtomicXCore
|
|
230
|
+
|
|
231
|
+
func getRoomInfo() {
|
|
232
|
+
// 1. Business logic
|
|
233
|
+
// getRoomInfo retrieves detailed information for a specified room,
|
|
234
|
+
// including room name, creator, participant count, permission settings, and more.
|
|
235
|
+
|
|
236
|
+
// 2. Call RoomStore get room info API
|
|
237
|
+
// Fetches the latest room status and configuration from the server
|
|
238
|
+
RoomStore.shared.getRoomInfo(roomID: "roomID") { result in
|
|
239
|
+
switch result {
|
|
240
|
+
case .success(let roomInfo):
|
|
241
|
+
print("Room information retrieved successfully, roomInfo: \(roomInfo)")
|
|
242
|
+
case .failure(let error):
|
|
243
|
+
print("Failed to retrieve room information [Error Code: \(error.code)]: \(error.message)")
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Step 8: Listen to Real-Time Room Events and State Changes
|
|
250
|
+
|
|
251
|
+
Subscribe to passive room events using RoomEvent. For example, to listen for a room-ended event:
|
|
252
|
+
``` swift
|
|
253
|
+
import Foundation
|
|
254
|
+
import AtomicXCore
|
|
255
|
+
import Combine
|
|
256
|
+
|
|
257
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
258
|
+
|
|
259
|
+
// Set up room event listener
|
|
260
|
+
private func subscribeRoomEvent() {
|
|
261
|
+
RoomStore.shared.roomEventPublisher
|
|
262
|
+
.receive(on: DispatchQueue.main) // Ensure UI updates are handled on the main thread
|
|
263
|
+
.sink { event in
|
|
264
|
+
switch event {
|
|
265
|
+
case .onRoomEnded(let roomInfo):
|
|
266
|
+
print("The current room has ended")
|
|
267
|
+
default: break
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
.store(in: &cancellableSet)
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Subscribe to RoomState for changes to room properties. For example, to listen for updates to the current room information:
|
|
275
|
+
``` swift
|
|
276
|
+
import Foundation
|
|
277
|
+
import AtomicXCore
|
|
278
|
+
import Combine
|
|
279
|
+
|
|
280
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
281
|
+
|
|
282
|
+
private func subscribeRoomState() {
|
|
283
|
+
// Set up current room state listener
|
|
284
|
+
RoomStore.shared.state
|
|
285
|
+
.subscribe(StatePublisherSelector(keyPath: \.currentRoom))
|
|
286
|
+
.receive(on: DispatchQueue.main) // Ensure UI updates are handled on the main thread
|
|
287
|
+
.sink { roomInfo in
|
|
288
|
+
if let newRoomInfo = roomInfo {
|
|
289
|
+
print("Room information updated. New room info: \(newRoomInfo)")
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
.store(in: &cancellableSet)
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## API Documentation
|
|
297
|
+
|
|
298
|
+
|**Store/Component**|**Description**|**API Documentation**|
|
|
299
|
+
|---------|---------|---------|
|
|
300
|
+
|**RoomStore**|Room lifecycle management: create and join / join / leave / end room / update and retrieve room information / room scheduling / call members outside the room / listen to passive room events (such as room dissolution, room information updates, etc.).|[API Documentation](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstore)|
|
|
301
|
+
|
|
302
|
+
## FAQs
|
|
303
|
+
|
|
304
|
+
### How is the participant count (`participantCount`) in `RoomInfo` updated? What are the timing and frequency?
|
|
305
|
+
|
|
306
|
+
`participantCount` is not always updated in real time. The update process works as follows:
|
|
307
|
+
- **Active Room Entry/Exit**: When a user joins or leaves a room normally, participant count changes are notified immediately. You will see changes reflected in `currentRoom` under `RoomState` almost instantly.
|
|
308
|
+
|
|
309
|
+
- **Unexpected Disconnections**: If a user disconnects due to network issues or app crashes, the system uses a heartbeat mechanism to determine their status. Only after 90 seconds without a heartbeat will the user be considered offline and the participant count updated.
|
|
310
|
+
|
|
311
|
+
- **Update Mechanism and Frequency Control**:
|
|
312
|
+
|
|
313
|
+
- All participant count updates—whether immediate or delayed—are sent as in-room messages.
|
|
314
|
+
|
|
315
|
+
- Each room is limited to 40 messages per second.
|
|
316
|
+
|
|
317
|
+
- **Important**: In high-traffic situations (such as a "live comments storm"), if the room exceeds 40 messages per second, participant count update messages may be dropped to prioritize core messages (such as live comments).
|
|
318
|
+
|
|
319
|
+
**What does this mean for developers?**
|
|
320
|
+
|
|
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.
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
`RoomStore` serves as the core room management module within `AtomicXCore`, providing comprehensive support for scheduled rooms. This section is a step-by-step guide to help you efficiently develop and integrate scheduled room features using `RoomStore`.
|
|
2
|
+
|
|
3
|
+
## Core Features
|
|
4
|
+
- **Schedule and Cancel Room Reservations**: Any user can schedule a new room or cancel an existing scheduled room.
|
|
5
|
+
|
|
6
|
+
- **Update Scheduled Room Information**: Modify scheduled room details such as room name, start time, and end time.
|
|
7
|
+
|
|
8
|
+
- **Retrieve Scheduled Room List**: Obtain the list of all scheduled rooms associated with the current account.
|
|
9
|
+
|
|
10
|
+
- **Retrieve Scheduled Room Participant List**: Fetch the participant list for a specific scheduled room.
|
|
11
|
+
|
|
12
|
+
- **Add or Remove Scheduled Room Participants**: Add or remove users from an existing scheduled room.
|
|
13
|
+
|
|
14
|
+
## Core Concepts
|
|
15
|
+
|
|
16
|
+
Core concepts in `RoomStore` are summarized in the table below:
|
|
17
|
+
| Core Concept | Type | Core Responsibility & Description |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstatus">RoomStatus</a> | <code>enum</code> | Indicates the current status of a room:<br>- scheduled (scheduled status).<br>- running (in progress). |
|
|
20
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/scheduleroomoptions">ScheduleRoomOptions</a> | <code>struct</code> | Defines the main data structure for scheduled rooms, including start time, end time, participant list, and more. |
|
|
21
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstate">RoomState</a> | <code>struct</code> | Represents the main data structure for managing room state and tracking user-related room information.<br>Key properties:<br>- <code>scheduledRoomList</code>: Stores all scheduled rooms for the current account.<br>- <code>scheduledRoomListCursor</code>: Cursor for paginating the scheduled room list . |
|
|
22
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomevent">RoomEvent</a> | <code>enum</code> | Represents real-time events related to room activity, including those for scheduled rooms. |
|
|
23
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstore">RoomStore</a> | <code>class</code> | Central class for managing the entire room lifecycle. Use it to schedule rooms, retrieve scheduled room lists, and subscribe to real-time scheduled room events via <code>roomEventPublisher</code>. |
|
|
24
|
+
|
|
25
|
+
## Implementation Steps
|
|
26
|
+
|
|
27
|
+
### Step 1: Integrate the SDK
|
|
28
|
+
|
|
29
|
+
Follow the Integration Overview to integrate the **AtomicXCore SDK** into your project. Make sure you have also completed Login Implementation.
|
|
30
|
+
|
|
31
|
+
### Step 2: Scheduled Room Features
|
|
32
|
+
|
|
33
|
+
#### 1. Schedule a Room
|
|
34
|
+
|
|
35
|
+
##### Implementation Workflow
|
|
36
|
+
1. **Configure Scheduled Room Parameters**: Use `ScheduleRoomOptions` to set up the room name, password, start and end times, participant list, and other details.
|
|
37
|
+
|
|
38
|
+
2. **Set Room Permissions**: Configure permissions for all members, such as muting all participants or disabling video by default.
|
|
39
|
+
|
|
40
|
+
3. **Schedule the Room**: Call `RoomStore`'s `scheduleRoom` method to create the scheduled room.
|
|
41
|
+
|
|
42
|
+
##### Sample Code
|
|
43
|
+
``` swift
|
|
44
|
+
import AtomicXCore
|
|
45
|
+
import Foundation
|
|
46
|
+
|
|
47
|
+
// Schedule a room
|
|
48
|
+
func scheduleRoom() {
|
|
49
|
+
let startTime = Int(Date().timeIntervalSince1970) + 60 * 15 // Start 15 minutes from now
|
|
50
|
+
let endTime = startTime + 60 * 30 // 30-minute duration
|
|
51
|
+
let reminderSeconds = 60 * 5 // Reminder 5 minutes before start
|
|
52
|
+
|
|
53
|
+
// Create scheduled room options
|
|
54
|
+
var options = ScheduleRoomOptions()
|
|
55
|
+
options.roomName = "Room Name"
|
|
56
|
+
options.scheduleStartTime = startTime
|
|
57
|
+
options.scheduleEndTime = endTime
|
|
58
|
+
options.reminderSecondsBeforeStart = reminderSeconds
|
|
59
|
+
options.scheduleAttendees = ["user01", "user02", "user03"] // List of participant user IDs
|
|
60
|
+
options.password = "Room Password" // Optional; "" means no password
|
|
61
|
+
options.isAllMicrophoneDisabled = false // Allow microphones by default
|
|
62
|
+
options.isAllCameraDisabled = false // Allow cameras by default
|
|
63
|
+
options.isAllScreenShareDisabled = false // Allow screen sharing by default
|
|
64
|
+
options.isAllMessageDisabled = false // Allow messaging by default
|
|
65
|
+
|
|
66
|
+
RoomStore.shared.scheduleRoom(roomID: "roomID", options: options) { result in
|
|
67
|
+
switch result {
|
|
68
|
+
case .success:
|
|
69
|
+
print("Room scheduled successfully")
|
|
70
|
+
case .failure(let error):
|
|
71
|
+
print("Failed to schedule room: [Error Code: \(error.code)] \(error.message)")
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
##### `scheduleRoom` Method Parameters
|
|
78
|
+
| Parameter | Type | Required | Description |
|
|
79
|
+
| --- | --- | --- | --- |
|
|
80
|
+
| <code>roomID</code> | <code>String</code> | Yes | - Unique string identifier for the room.<br>- Length: 0–48 bytes.<br>- Use only numbers, English letters (case sensitive), underscores (_), and hyphens (-). Avoid spaces and Chinese characters. |
|
|
81
|
+
| <code>options</code> | <code>ScheduleRoomOptions</code> | Yes | Configuration object for the room.<br>See details in ScheduleRoomOptions struct. |
|
|
82
|
+
| <code>completion</code> | <code>CompletionClosure</code> | No | Callback that returns the scheduling result. Returns error code and message if scheduling fails. |
|
|
83
|
+
|
|
84
|
+
##### ScheduleRoomOptions Struct Details
|
|
85
|
+
| Parameter | Type | Required | Description |
|
|
86
|
+
| --- | --- | --- | --- |
|
|
87
|
+
| <code>roomName</code> | <code>String</code> | No | - Room name (optional, defaults to "").<br>- Length: 0–60 bytes.<br>- Supports Chinese, English, numbers, and special characters. |
|
|
88
|
+
| <code>password</code> | <code>String</code> | No | - Room password ("" means no password).<br>- Length: 0–32 bytes.<br>- Recommend 4–8 digit numbers for easier input. If set, users must enter the password to join. Do not store sensitive info in plain text. |
|
|
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
|
+
| <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
|
+
| <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>- For details, see retrieving the participant list for scheduled rooms. |
|
|
93
|
+
| <code>isAllMicrophoneDisabled</code> | <code>Bool</code> | No | Whether to mute all participants by default.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
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
|
+
| <code>isAllScreenShareDisabled</code> | <code>Bool</code> | No | Whether to disable screen sharing for all participants.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
96
|
+
| <code>isAllMessageDisabled</code> | <code>Bool</code> | No | Whether to mute chat messages for all participants.<br>- true: Disabled.<br>- false: Not disabled (default). |
|
|
97
|
+
|
|
98
|
+
#### 2. Cancel a Scheduled Room
|
|
99
|
+
|
|
100
|
+
To cancel a scheduled room, call the `cancelScheduledRoom` method on `RoomStore`:
|
|
101
|
+
``` swift
|
|
102
|
+
import AtomicXCore
|
|
103
|
+
import Foundation
|
|
104
|
+
|
|
105
|
+
// Cancel scheduled room
|
|
106
|
+
func cancelScheduledRoom(roomID: String) {
|
|
107
|
+
RoomStore.shared.cancelScheduledRoom(roomID: roomID) { result in
|
|
108
|
+
switch result {
|
|
109
|
+
case .success:
|
|
110
|
+
print("Room reservation cancelled successfully")
|
|
111
|
+
case .failure(let error):
|
|
112
|
+
print("Failed to cancel room reservation: [Error Code: \(error.code)] \(error.message)")
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
#### 3. Updating a Scheduled Room
|
|
119
|
+
|
|
120
|
+
To update a scheduled room’s name, start time, or end time, use `updateScheduledRoom` on `RoomStore`:
|
|
121
|
+
``` swift
|
|
122
|
+
import AtomicXCore
|
|
123
|
+
import Foundation
|
|
124
|
+
|
|
125
|
+
// Update scheduled room
|
|
126
|
+
func updateScheduledRoom() {
|
|
127
|
+
let newStartTime = Int(Date().timeIntervalSince1970) + 60 * 30 // New start: 30 min from now
|
|
128
|
+
let newEndTime = newStartTime + 60 * 45 // New end: 45 min after start
|
|
129
|
+
|
|
130
|
+
var options = ScheduleRoomOptions()
|
|
131
|
+
options.roomName = "Room Name"
|
|
132
|
+
options.scheduleStartTime = newStartTime
|
|
133
|
+
options.scheduleEndTime = newEndTime
|
|
134
|
+
|
|
135
|
+
var modifyFlag: ScheduleRoomOptions.ModifyFlag = []
|
|
136
|
+
modifyFlag.insert(.roomName)
|
|
137
|
+
modifyFlag.insert(.scheduleStartTime)
|
|
138
|
+
modifyFlag.insert(.scheduleEndTime)
|
|
139
|
+
|
|
140
|
+
RoomStore.shared.updateScheduledRoom(roomID: "roomID", options: options, modifyFlag: modifyFlag) { result in
|
|
141
|
+
switch result {
|
|
142
|
+
case .success:
|
|
143
|
+
print("Scheduled room updated successfully")
|
|
144
|
+
case .failure(let error):
|
|
145
|
+
print("Failed to update scheduled room: [Error Code: \(error.code)] \(error.message)")
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
##### `updateScheduledRoom` Method Parameters
|
|
152
|
+
| Parameter | Type | Required | Description |
|
|
153
|
+
| --- | --- | --- | --- |
|
|
154
|
+
| <code>roomID</code> | <code>String</code> | Yes | - Unique string identifier for the room.<br>- Length: 0–48 bytes.<br>- Use only numbers, English letters (case sensitive), underscores (_), and hyphens (-). Avoid spaces and Chinese characters. |
|
|
155
|
+
| <code>options</code> | <code>ScheduleRoomOptions</code> | Yes | - Configuration object for the scheduled room.<br>- See details in ScheduleRoomOptions struct. |
|
|
156
|
+
| <code>modifyFlag</code> | <code>ScheduleRoomOptions.ModifyFlag</code> | Yes | - Flags indicating which room properties to update. Only supports updating <strong>room name</strong>, <strong>start time</strong>, and <strong>end time</strong>.<br>- See details in ScheduleRoomOptions.ModifyFlag. |
|
|
157
|
+
| <code>completion</code> | <code>CompletionClosure</code> | No | Callback that returns the result of the update. Returns error code and message if the update fails. |
|
|
158
|
+
|
|
159
|
+
**ScheduleRoomOptions.ModifyFlag Details**
|
|
160
|
+
| Parameter | Type | Description |
|
|
161
|
+
| --- | --- | --- |
|
|
162
|
+
| <code>roomName</code> | <code>UInt</code> | - Use this flag when updating the scheduled room name.<br>- You must also set the <code>roomName</code> field in <code>ScheduleRoomOptions</code>. |
|
|
163
|
+
| <code>scheduleStartTime</code> | <code>UInt</code> | - Use this flag when updating the scheduled room start time.<br>- You must also set the <code>scheduleStartTime</code> field in <code>ScheduleRoomOptions</code>. |
|
|
164
|
+
| <code>scheduleEndTime</code> | <code>UInt</code> | - Use this flag when updating the scheduled room end time.<br>- You must also set the <code>scheduleEndTime</code> field in <code>ScheduleRoomOptions</code>. |
|
|
165
|
+
|
|
166
|
+
#### 4. Add or Remove Participants
|
|
167
|
+
|
|
168
|
+
To add or remove participants from a scheduled room, use the `addScheduledAttendees` or `removeScheduledAttendees` methods on `RoomStore`:
|
|
169
|
+
``` swift
|
|
170
|
+
import AtomicXCore
|
|
171
|
+
import Foundation
|
|
172
|
+
|
|
173
|
+
// Add participants
|
|
174
|
+
func addScheduledAttendees(roomID: String, userIDList: [String]) {
|
|
175
|
+
RoomStore.shared.addScheduledAttendees(roomID: roomID, userIDList: userIDList) { result in
|
|
176
|
+
guard let self = self else { return }
|
|
177
|
+
switch result {
|
|
178
|
+
case .success:
|
|
179
|
+
print("Scheduled participants added successfully")
|
|
180
|
+
case .failure(let error):
|
|
181
|
+
print("Failed to add scheduled participants: [Error Code: \(error.code)] \(error.message)")
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Remove participants
|
|
187
|
+
func removeScheduledAttendees(roomID: String, userIDList: [String]) {
|
|
188
|
+
RoomStore.shared.removeScheduledAttendees(roomID: roomID, userIDList: userIDList) { result in
|
|
189
|
+
switch result {
|
|
190
|
+
case .success:
|
|
191
|
+
print("Scheduled participants removed successfully")
|
|
192
|
+
case .failure(let error):
|
|
193
|
+
print("Failed to remove scheduled participants: [Error Code: \(error.code)] \(error.message)")
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Step 3: Retrieving the Scheduled Room List
|
|
200
|
+
|
|
201
|
+
To obtain all scheduled rooms for the current account, call the `getScheduledRoomList` method. Paging is supported via the `cursor` parameter.
|
|
202
|
+
``` swift
|
|
203
|
+
import AtomicXCore
|
|
204
|
+
import Foundation
|
|
205
|
+
|
|
206
|
+
// Retrieve scheduled room list
|
|
207
|
+
func getScheduledRoomList(cursor: String? = nil) {
|
|
208
|
+
// 'cursor' is a pagination cursor. Pass nil for the first call; use the previous nextCursor for subsequent pages.
|
|
209
|
+
RoomStore.shared.getScheduledRoomList(cursor: cursor) { result in
|
|
210
|
+
switch result {
|
|
211
|
+
case .success(let (roomList, nextCursor)):
|
|
212
|
+
print("Scheduled room list retrieved successfully")
|
|
213
|
+
case .failure(let error):
|
|
214
|
+
print("Failed to retrieve scheduled room list: [Error Code: \(error.code)] \(error.message)")
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Step 4: Retrieve Participants for a Scheduled Room
|
|
221
|
+
|
|
222
|
+
To retrieve the participant list for a specific scheduled room, use the `getScheduledAttendees` method. Paging is supported via the `cursor` parameter.
|
|
223
|
+
``` swift
|
|
224
|
+
import AtomicXCore
|
|
225
|
+
import Foundation
|
|
226
|
+
|
|
227
|
+
// Retrieve participant list for a scheduled room
|
|
228
|
+
func getScheduledAttendees(roomID: String, cursor: String? = nil) {
|
|
229
|
+
// 'cursor' is a pagination cursor. Pass nil for the first call; use the previous nextCursor for subsequent pages.
|
|
230
|
+
RoomStore.shared.getScheduledAttendees(roomID: roomID, cursor: cursor) { result in
|
|
231
|
+
switch result {
|
|
232
|
+
case .success(let (attendees, nextCursor)):
|
|
233
|
+
print("Scheduled room participants retrieved successfully")
|
|
234
|
+
case .failure(let error):
|
|
235
|
+
print("Failed to retrieve scheduled room participants: [Error Code: \(error.code)] \(error.message)")
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Step 5: Subscribe to Real-Time Scheduled Room Events and State Changes
|
|
242
|
+
|
|
243
|
+
Subscribe to passive events related to scheduled rooms using `RoomEvent`:
|
|
244
|
+
``` swift
|
|
245
|
+
import AtomicXCore
|
|
246
|
+
import Foundation
|
|
247
|
+
import Combine
|
|
248
|
+
|
|
249
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
250
|
+
|
|
251
|
+
/// Subscribe to scheduled room events
|
|
252
|
+
private func subscribeScheduledRoomEvents() {
|
|
253
|
+
RoomStore.shared.roomEventPublisher
|
|
254
|
+
.receive(on: DispatchQueue.main)
|
|
255
|
+
.sink { event in
|
|
256
|
+
switch event {
|
|
257
|
+
case .onAddedToScheduledRoom(let roomInfo):
|
|
258
|
+
print("Added to scheduled room. Room info: \(roomInfo)")
|
|
259
|
+
case .onRemovedFromScheduledRoom(let roomInfo, let operatorUser):
|
|
260
|
+
print("Removed from scheduled room. Room info: \(roomInfo), removed by: \(operatorUser)")
|
|
261
|
+
case .onScheduledRoomCancelled(let roomInfo, let operatorUser):
|
|
262
|
+
print("Scheduled room cancelled. Room info: \(roomInfo), cancelled by: \(operatorUser)")
|
|
263
|
+
case .onScheduledRoomStartingSoon(let roomInfo):
|
|
264
|
+
print("Scheduled room starting soon. Room info: \(roomInfo)")
|
|
265
|
+
default:
|
|
266
|
+
// Handle other non-scheduled room events
|
|
267
|
+
break
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
.store(in: &cancellableSet)
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Subscribe to changes in the scheduled room list state using `RoomState`:
|
|
275
|
+
``` swift
|
|
276
|
+
import AtomicXCore
|
|
277
|
+
import Foundation
|
|
278
|
+
import Combine
|
|
279
|
+
|
|
280
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
281
|
+
|
|
282
|
+
/// Subscribe to scheduled room list state changes
|
|
283
|
+
private func subscribeScheduledRoomListState() {
|
|
284
|
+
RoomStore.shared.state.subscribe(StatePublisherSelector(keyPath: \.scheduledRoomList))
|
|
285
|
+
.receive(on: DispatchQueue.main)
|
|
286
|
+
.sink { scheduledRoomList in
|
|
287
|
+
print("Scheduled room list changed. Room list info: \(scheduledRoomList)")
|
|
288
|
+
}
|
|
289
|
+
.store(in: &cancellableSet)
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## API Documentation
|
|
294
|
+
|
|
295
|
+
|**Store/Component**|**Feature Description**|**API Documentation**|
|
|
296
|
+
|---------|---------|---------|
|
|
297
|
+
|**RoomStore**|Complete room lifecycle management: create & join / join / leave / end room / update & retrieve room info / schedule rooms / invite users outside the room / listen for passive in-room events (such as room deletion, info updates, etc.)|[API Documentation](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomstore)|
|
|
298
|
+
|
|
299
|
+
## FAQs
|
|
300
|
+
|
|
301
|
+
### Why am I not receiving the `onScheduledRoomStartingSoon` event from `RoomEvent` after scheduling a room?
|
|
302
|
+
|
|
303
|
+
If you are not receiving a "room starting soon" notification after scheduling, check the following:
|
|
304
|
+
1. **Verify Reminder Parameter (**`reminderSecondsBeforeStart`**)**
|
|
305
|
+
|
|
306
|
+
- The `onScheduledRoomStartingSoon` event depends on the `reminderSecondsBeforeStart` property in `ScheduleRoomOptions`.
|
|
307
|
+
|
|
308
|
+
- By default, this property is 0, which disables the reminder.
|
|
309
|
+
|
|
310
|
+
- To enable reminders, set this parameter explicitly when scheduling the room. The value is in **seconds** and determines how long before the start time the event is triggered.
|
|
311
|
+
|
|
312
|
+
2. **Check the Scheduling Logic**
|
|
313
|
+
|
|
314
|
+
- The event will only be triggered if the following condition is met: scheduled start time (`scheduleStartTime`) - current time > reminder offset (`reminderSecondsBeforeStart`).
|
|
315
|
+
|
|
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
|
+
|
|
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.
|