@tencent-rtc/mcp 1.4.7 → 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 -11
- 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 -47
- 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,569 @@
|
|
|
1
|
+
`RoomParticipantStore` is a specialized module within `AtomicXCore` designed for managing participants in a conference room. It provides essential functionality for multi-party conference scenarios, enabling you to build a robust participant management system.
|
|
2
|
+
|
|
3
|
+
## Core Features
|
|
4
|
+
- **Get the participant list**: Retrieve details for everyone currently in the room.
|
|
5
|
+
|
|
6
|
+
- **Transfer room ownership**: The current owner can transfer ownership to another participant.
|
|
7
|
+
|
|
8
|
+
- **Grant/revoke admin role**: The owner can promote participants to admins and revoke admin privileges.
|
|
9
|
+
|
|
10
|
+
- **Remove a participant**: The owner or an admin can remove a participant from the room.
|
|
11
|
+
|
|
12
|
+
- **Update participant profile**: Participants can update their own in-room profile information.
|
|
13
|
+
|
|
14
|
+
- **Manage audio/video devices**: Invite participants to enable camera/mic, remotely turn off another participant’s camera/mic, and (for owners/admins) mute all or disable all video.
|
|
15
|
+
|
|
16
|
+
## Core Concepts
|
|
17
|
+
|
|
18
|
+
The core concepts of `RoomParticipantStore` is summarized as follows:
|
|
19
|
+
| Core Concept | Type | Core Responsibilities & Description |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomparticipant">RoomParticipant</a> | <code>struct</code> | Represents the participant data model, encapsulating participant information and state management.<br>Main functions include managing participant basic information (user ID, user name, user avatar, in-room role) and managing device status (microphone, camera, screen sharing, message status). |
|
|
22
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomparticipantstate">RoomParticipantState</a> | <code>struct</code> | Represents the participant state management structure, responsible for maintaining participant-related state information in the room. Main properties:<br>- <code>participantList</code>collection of all participant information in the current room.<br>- <code>participantListCursor</code>snapshot for paginated participant list.<br>- <code>localParticipant</code>current user's participant information in the room. |
|
|
23
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomparticipantevent">RoomParticipantEvent</a> | <code>enum</code> | Represents real-time participant events in the room. Main categories: participant join/leave, role changes, device control events. |
|
|
24
|
+
| <a href="https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/roomparticipantstore">RoomParticipantStore</a> | <code>class</code> | Core class for participant control. Features: manage participant audio/video status, perform participant operations, receive real-time events via <code>participantEventPublisher</code>. |
|
|
25
|
+
|
|
26
|
+
## Implementation Steps
|
|
27
|
+
|
|
28
|
+
### Step 1: Add the SDK
|
|
29
|
+
|
|
30
|
+
Follow the Integration Overview to integrate the **AtomicXCore SDK**. Make sure you have completed the Login Logic Implementation.
|
|
31
|
+
|
|
32
|
+
### Step 2: Retrieve the Participant List
|
|
33
|
+
|
|
34
|
+
After joining a room, use the `getParticipantList` method in `RoomParticipantStore` to fetch the participant list.
|
|
35
|
+
``` swift
|
|
36
|
+
import Foundation
|
|
37
|
+
import AtomicXCore
|
|
38
|
+
|
|
39
|
+
func getParticipantList() {
|
|
40
|
+
// Prerequisite: You must have joined the room and initialized RoomParticipantStore with roomID
|
|
41
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
42
|
+
|
|
43
|
+
// Retrieve participant list starting from the first page
|
|
44
|
+
let initialCursor: String? = nil // nil means fetch from the first page
|
|
45
|
+
|
|
46
|
+
participantStore.getParticipantList(cursor: initialCursor) { result in
|
|
47
|
+
switch result {
|
|
48
|
+
case .success(let participantInfo):
|
|
49
|
+
print("Participant list retrieved, count: \(participantInfo.0.count)")
|
|
50
|
+
case .failure(let error):
|
|
51
|
+
print("Failed to get participant list [Error code: \(error.code)]: \(error.message)")
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Step 3: Search Room Members
|
|
58
|
+
|
|
59
|
+
Once you've joined the room, use `searchUsers` to search for members by keyword.
|
|
60
|
+
``` swift
|
|
61
|
+
import Foundation
|
|
62
|
+
import AtomicXCore
|
|
63
|
+
|
|
64
|
+
func searchUsers() {
|
|
65
|
+
// Prerequisite: You must have joined the room.
|
|
66
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
67
|
+
|
|
68
|
+
// Search by user name keyword
|
|
69
|
+
let keyword = "userName"
|
|
70
|
+
|
|
71
|
+
participantStore.searchUsers(keyword: keyword) { result in
|
|
72
|
+
switch result {
|
|
73
|
+
case .success(let usersInfo):
|
|
74
|
+
print("Room members found, count: \(usersInfo.0.count)")
|
|
75
|
+
case .failure(let error):
|
|
76
|
+
print("Failed to search room members [Error code: \(error.code)]: \(error.message)")
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 4: Transfer the Room Ownership
|
|
83
|
+
|
|
84
|
+
If you are the owner, use `transferOwner` to transfer ownership to any participant. The original owner becomes a regular participant; each room can have only one owner.
|
|
85
|
+
``` swift
|
|
86
|
+
import Foundation
|
|
87
|
+
import AtomicXCore
|
|
88
|
+
|
|
89
|
+
func transferOwner(to userID: String) {
|
|
90
|
+
// Prerequisite: You must have joined the room and initialized RoomParticipantStore with roomID
|
|
91
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
92
|
+
|
|
93
|
+
// Only the current owner can transfer ownership
|
|
94
|
+
participantStore.transferOwner(userID: userID) { result in
|
|
95
|
+
switch result {
|
|
96
|
+
case .success():
|
|
97
|
+
print("Ownership transferred. New owner: \(userID)")
|
|
98
|
+
case .failure(let error):
|
|
99
|
+
print("Ownership transfer failed [Error code: \(error.code)]: \(error.message)")
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Participants can subscribe to the `onOwnerChanged` event via `participantEventPublisher` to receive ownership change notifications.
|
|
106
|
+
``` swift
|
|
107
|
+
import Foundation
|
|
108
|
+
import AtomicXCore
|
|
109
|
+
import Combine
|
|
110
|
+
|
|
111
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
112
|
+
|
|
113
|
+
private func subscribeParticipantEvent() {
|
|
114
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
115
|
+
|
|
116
|
+
participantStore.participantEventPublisher
|
|
117
|
+
.receive(on: DispatchQueue.main)
|
|
118
|
+
.sink { event in
|
|
119
|
+
switch event {
|
|
120
|
+
case .onOwnerChanged(let newOwner, let oldOwner):
|
|
121
|
+
print("Ownership changed: newOwner: \(newOwner), oldOwner: \(oldOwner)")
|
|
122
|
+
default: break
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
.store(in: &cancellableSet)
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Step 5: Grant or Revoke the Admin Privileges
|
|
130
|
+
|
|
131
|
+
As the owner, use `setAdmin` to assign admin privileges or `revokeAdmin` to remove them.
|
|
132
|
+
``` swift
|
|
133
|
+
import Foundation
|
|
134
|
+
import AtomicXCore
|
|
135
|
+
|
|
136
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
137
|
+
|
|
138
|
+
func setUserAsAdmin(userID: String) {
|
|
139
|
+
participantStore.setAdmin(userID: userID) { result in
|
|
140
|
+
switch result {
|
|
141
|
+
case .success:
|
|
142
|
+
print("User \(userID) set as admin")
|
|
143
|
+
case .failure(let error):
|
|
144
|
+
print("Failed to set admin [Error code: \(error.code)]: \(error.message)")
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
func revokeUserAdmin(userID: String) {
|
|
150
|
+
participantStore.revokeAdmin(userID: userID) { result in
|
|
151
|
+
switch result {
|
|
152
|
+
case .success:
|
|
153
|
+
print("Admin privileges revoked for user \(userID)")
|
|
154
|
+
case .failure(let error):
|
|
155
|
+
print("Failed to revoke admin [Error code: \(error.code)]: \(error.message)")
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Participants can subscribe to `onAdminSet` and `onAdminRevoked` events to be notified of changes.
|
|
162
|
+
``` swift
|
|
163
|
+
import Foundation
|
|
164
|
+
import AtomicXCore
|
|
165
|
+
|
|
166
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
167
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
168
|
+
|
|
169
|
+
private func subscribeParticipantEvents() {
|
|
170
|
+
participantStore.participantEventPublisher
|
|
171
|
+
.receive(on: DispatchQueue.main)
|
|
172
|
+
.sink { event in
|
|
173
|
+
switch event {
|
|
174
|
+
case .onAdminSet(let userInfo):
|
|
175
|
+
print("Admin assigned: \(userInfo)")
|
|
176
|
+
case .onAdminRevoked(let userInfo):
|
|
177
|
+
print("Admin revoked: \(userInfo)")
|
|
178
|
+
default: break
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
.store(in: &cancellableSet)
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Step 6: Remove Participants
|
|
186
|
+
|
|
187
|
+
Owners and admins can use `kickUser` to remove participants from the room.
|
|
188
|
+
``` swift
|
|
189
|
+
import Foundation
|
|
190
|
+
import AtomicXCore
|
|
191
|
+
|
|
192
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
193
|
+
|
|
194
|
+
func kickUser(userID: String) {
|
|
195
|
+
// Only owners and admins have permission
|
|
196
|
+
participantStore.kickUser(userID: userID) { result in
|
|
197
|
+
switch result {
|
|
198
|
+
case .success():
|
|
199
|
+
print("User \(userID) removed from room")
|
|
200
|
+
case .failure(let error):
|
|
201
|
+
print("Failed to remove user [Error code: \(error.code)]: \(error.message)")
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Participants can listen for the `onKickedFromRoom` event to receive removal notifications.
|
|
208
|
+
``` swift
|
|
209
|
+
import Foundation
|
|
210
|
+
import AtomicXCore
|
|
211
|
+
import Combine
|
|
212
|
+
|
|
213
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
214
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
215
|
+
|
|
216
|
+
private func subscribeParticipantEvent() {
|
|
217
|
+
participantStore.participantEventPublisher
|
|
218
|
+
.receive(on: DispatchQueue.main)
|
|
219
|
+
.sink { event in
|
|
220
|
+
switch event {
|
|
221
|
+
case .onKickedFromRoom(let reason, let message):
|
|
222
|
+
print("Removed from room: reason: \(reason), info: \(message)")
|
|
223
|
+
default:
|
|
224
|
+
break
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
.store(in: &cancellableSet)
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Step 7: Update the Participant Information
|
|
232
|
+
|
|
233
|
+
After joining, call `updateParticipantNameCard` and `updateParticipantMetaData` to update your information, including display name and custom metadata.
|
|
234
|
+
``` swift
|
|
235
|
+
import Foundation
|
|
236
|
+
import AtomicXCore
|
|
237
|
+
|
|
238
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
239
|
+
|
|
240
|
+
func updateParticipantNameCard(userID: String, nameCard: String) {
|
|
241
|
+
// Display name or custom identifier
|
|
242
|
+
// Usually only admins or the participant themselves can modify
|
|
243
|
+
participantStore.updateParticipantNameCard(userID: userID, nameCard: nameCard) { result in
|
|
244
|
+
switch result {
|
|
245
|
+
case .success():
|
|
246
|
+
print("Name card updated: user \(userID), new value: \(nameCard)")
|
|
247
|
+
case .failure(let error):
|
|
248
|
+
print("Failed to update name card [Error code: \(error.code)]: \(error.message)")
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
func updateParticipantMetaData(userID: String, metaData: [String: String]) {
|
|
254
|
+
// Custom business data such as tags or extended attributes
|
|
255
|
+
// Key length ≤ 50 bytes, value length ≤ 200 bytes
|
|
256
|
+
participantStore.updateParticipantMetaData(userID: userID, metaData: metaData) { result in
|
|
257
|
+
switch result {
|
|
258
|
+
case .success():
|
|
259
|
+
print("Custom metadata updated: user \(userID), keys: \(metaData.count)")
|
|
260
|
+
case .failure(let error):
|
|
261
|
+
print("Failed to update metadata [Error code: \(error.code)]: \(error.message)")
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Step 8: Invite Participants to Enable Devices
|
|
268
|
+
|
|
269
|
+
Owners and admins can use `inviteToOpenDevice` to prompt participants to turn on their camera or microphone.
|
|
270
|
+
``` swift
|
|
271
|
+
import Foundation
|
|
272
|
+
import AtomicXCore
|
|
273
|
+
|
|
274
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
275
|
+
|
|
276
|
+
func inviteUserToOpenDevice(userID: String, device: DeviceType, timeout: Int = 30) {
|
|
277
|
+
// Invite participant to enable device (microphone, camera, screen sharing)
|
|
278
|
+
// Participants receive a notification and can accept or decline
|
|
279
|
+
participantStore.inviteToOpenDevice(userID: userID, device: device, timeout: timeout) { result in
|
|
280
|
+
switch result {
|
|
281
|
+
case .success():
|
|
282
|
+
print("Device invitation sent: user \(userID), device: \(device)")
|
|
283
|
+
case .failure(let error):
|
|
284
|
+
print("Failed to send invitation [Error code: \(error.code)]: \(error.message)")
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Participants:
|
|
291
|
+
- Subscribe to `onDeviceInvitationReceived` for device invitation notifications.
|
|
292
|
+
|
|
293
|
+
- Call `acceptOpenDeviceInvitation` or `declineOpenDeviceInvitation` to accept or decline.
|
|
294
|
+
|
|
295
|
+
``` swift
|
|
296
|
+
import Foundation
|
|
297
|
+
import AtomicXCore
|
|
298
|
+
import Combine
|
|
299
|
+
|
|
300
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
301
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
302
|
+
|
|
303
|
+
private func subscribeDeviceInvitationEvent() {
|
|
304
|
+
participantStore.participantEventPublisher
|
|
305
|
+
.receive(on: DispatchQueue.main)
|
|
306
|
+
.sink { event in
|
|
307
|
+
switch event {
|
|
308
|
+
case .onDeviceInvitationReceived(let invitation):
|
|
309
|
+
print("Device invitation received: device: \(invitation.device), sender: \(invitation.senderUserName)")
|
|
310
|
+
// Handle accept/decline
|
|
311
|
+
default: break
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
.store(in: &cancellableSet)
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
func acceptOpenDeviceInvitation(userID: String, device: DeviceType) {
|
|
318
|
+
participantStore.acceptOpenDeviceInvitation(userID: userID, device: device) { result in
|
|
319
|
+
switch result {
|
|
320
|
+
case .success():
|
|
321
|
+
print("Device invitation accepted: \(device)")
|
|
322
|
+
case .failure(let error):
|
|
323
|
+
print("Failed to accept invitation [Error code: \(error.code)]: \(error.message)")
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
func declineOpenDeviceInvitation(userID: String, device: DeviceType) {
|
|
329
|
+
participantStore.declineOpenDeviceInvitation(userID: userID, device: device) { result in
|
|
330
|
+
switch result {
|
|
331
|
+
case .success():
|
|
332
|
+
print("Device invitation declined: \(device)")
|
|
333
|
+
case .failure(let error):
|
|
334
|
+
print("Failed to decline invitation [Error code: \(error.code)]: \(error.message)")
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Step 9: Close Remote Devices
|
|
341
|
+
|
|
342
|
+
Owners and admins can use `closeParticipantDevice` to remotely disable a participant's camera or microphone.
|
|
343
|
+
``` swift
|
|
344
|
+
import Foundation
|
|
345
|
+
import AtomicXCore
|
|
346
|
+
|
|
347
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
348
|
+
|
|
349
|
+
func closeParticipantDevice(userID: String, device: DeviceType) {
|
|
350
|
+
// Remotely disable specified participant’s device
|
|
351
|
+
participantStore.closeParticipantDevice(userID: userID, device: device) { result in
|
|
352
|
+
switch result {
|
|
353
|
+
case .success():
|
|
354
|
+
print("Closed device: user \(userID), device: \(device)")
|
|
355
|
+
case .failure(let error):
|
|
356
|
+
print("Failed to close device [Error code: \(error.code)]: \(error.message)")
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
Participants can listen for the `onParticipantDeviceClosed` event to receive device closure notifications.
|
|
363
|
+
``` swift
|
|
364
|
+
import Foundation
|
|
365
|
+
import AtomicXCore
|
|
366
|
+
import Combine
|
|
367
|
+
|
|
368
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
369
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
370
|
+
|
|
371
|
+
private func subscribeDeviceClosedEvent() {
|
|
372
|
+
participantStore.participantEventPublisher
|
|
373
|
+
.receive(on: DispatchQueue.main)
|
|
374
|
+
.sink { event in
|
|
375
|
+
switch event {
|
|
376
|
+
case .onParticipantDeviceClosed(let device, let operatorUser):
|
|
377
|
+
print("Device closed: \(device), operator: \(operatorUser.userName)")
|
|
378
|
+
default:
|
|
379
|
+
break
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
.store(in: &cancellableSet)
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Step 10: Request Permission to Turn On Devices
|
|
387
|
+
|
|
388
|
+
Participants can use `requestToOpenDevice` to ask the owner or admins for permission to enable their camera or microphone when restricted.
|
|
389
|
+
``` swift
|
|
390
|
+
import Foundation
|
|
391
|
+
import AtomicXCore
|
|
392
|
+
|
|
393
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
394
|
+
|
|
395
|
+
func requestToOpenDevice(device: DeviceType, timeout: Int = 30) {
|
|
396
|
+
// Request to enable device
|
|
397
|
+
participantStore.requestToOpenDevice(device: device, timeout: timeout) { result in
|
|
398
|
+
switch result {
|
|
399
|
+
case .success():
|
|
400
|
+
print("Enable device request sent: \(device)")
|
|
401
|
+
case .failure(let error):
|
|
402
|
+
print("Failed to send request [Error code: \(error.code)]: \(error.message)")
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
Owners and admins:
|
|
409
|
+
- Subscribe to `onDeviceRequestReceived` for device enable requests.
|
|
410
|
+
|
|
411
|
+
- Call `approveOpenDeviceRequest` or `rejectOpenDeviceRequest` to approve or deny.
|
|
412
|
+
|
|
413
|
+
``` swift
|
|
414
|
+
import Foundation
|
|
415
|
+
import AtomicXCore
|
|
416
|
+
import Combine
|
|
417
|
+
|
|
418
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
419
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
420
|
+
|
|
421
|
+
private func subscribeDeviceRequestEvent() {
|
|
422
|
+
participantStore.participantEventPublisher
|
|
423
|
+
.receive(on: DispatchQueue.main)
|
|
424
|
+
.sink { event in
|
|
425
|
+
switch event {
|
|
426
|
+
case .onDeviceRequestReceived(let request):
|
|
427
|
+
print("Device request received: user \(request.senderUserName), device: \(request.device)")
|
|
428
|
+
// Approve or reject request
|
|
429
|
+
default:
|
|
430
|
+
break
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
.store(in: &cancellableSet)
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
func approveOpenDeviceRequest(device: DeviceType, userID: String) {
|
|
437
|
+
participantStore.approveOpenDeviceRequest(device: device, userID: userID) { result in
|
|
438
|
+
switch result {
|
|
439
|
+
case .success():
|
|
440
|
+
print("Device request approved: user \(userID), device: \(device)")
|
|
441
|
+
case .failure(let error):
|
|
442
|
+
print("Failed to approve request: \(error.message)")
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
func rejectOpenDeviceRequest(device: DeviceType, userID: String) {
|
|
448
|
+
participantStore.rejectOpenDeviceRequest(device: device, userID: userID) { result in
|
|
449
|
+
switch result {
|
|
450
|
+
case .success():
|
|
451
|
+
print("Device request rejected: user \(userID), device: \(device)")
|
|
452
|
+
case .failure(let error):
|
|
453
|
+
print("Failed to reject request [Error code: \(error.code)]: \(error.message)")
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Step 11: Mute All Microphones or Disable All Cameras
|
|
460
|
+
|
|
461
|
+
Owners and admins can use `disableAllDevices` to mute all microphones or disable all cameras in the room. Participants will not be able to enable these devices unless approved.
|
|
462
|
+
``` swift
|
|
463
|
+
import Foundation
|
|
464
|
+
import AtomicXCore
|
|
465
|
+
|
|
466
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
467
|
+
|
|
468
|
+
func disableAllDevices(device: DeviceType, disable: Bool) {
|
|
469
|
+
// Mute/unmute all microphones or disable/enable all cameras
|
|
470
|
+
participantStore.disableAllDevices(device: device, disable: disable) { result in
|
|
471
|
+
switch result {
|
|
472
|
+
case .success():
|
|
473
|
+
let action = disable ? "Disabled" : "Enabled"
|
|
474
|
+
print("\(action) all \(device) successfully")
|
|
475
|
+
case .failure(let error):
|
|
476
|
+
let action = disable ? "Disabled" : "Enabled"
|
|
477
|
+
print("\(action) all \(device) failed [Error code: \(error.code)]: \(error.message)")
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
Participants can subscribe to `onAllDevicesDisabled` to stay updated on mute-all or disable-all camera actions and synchronize their UI. When restricted, participants must request permission to enable their devices.
|
|
484
|
+
``` swift
|
|
485
|
+
import Foundation
|
|
486
|
+
import AtomicXCore
|
|
487
|
+
import Combine
|
|
488
|
+
|
|
489
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
490
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
491
|
+
|
|
492
|
+
private func subscribeAllDevicesDisabledEvent() {
|
|
493
|
+
participantStore.participantEventPublisher
|
|
494
|
+
.receive(on: DispatchQueue.main)
|
|
495
|
+
.sink { event in
|
|
496
|
+
switch event {
|
|
497
|
+
case .onAllDevicesDisabled(let device, let disable, let operatorUser):
|
|
498
|
+
let action = disable ? "Disabled" : "Enabled"
|
|
499
|
+
print("All \(device) have been \(action) by \(operatorUser.userName)")
|
|
500
|
+
default:
|
|
501
|
+
break
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
.store(in: &cancellableSet)
|
|
505
|
+
}
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Step 12: Listen for Participant Events
|
|
509
|
+
|
|
510
|
+
Subscribe to `RoomParticipantEvent` for participant join/leave notifications.
|
|
511
|
+
``` swift
|
|
512
|
+
import Foundation
|
|
513
|
+
import AtomicXCore
|
|
514
|
+
import Combine
|
|
515
|
+
|
|
516
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
517
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
518
|
+
|
|
519
|
+
private func subscribeParticipantEvent() {
|
|
520
|
+
participantStore.participantEventPublisher
|
|
521
|
+
.receive(on: DispatchQueue.main)
|
|
522
|
+
.sink { event in
|
|
523
|
+
switch event {
|
|
524
|
+
case .onParticipantJoined(let participant):
|
|
525
|
+
print("Participant joined: \(participant.userName), ID: \(participant.userID)")
|
|
526
|
+
case .onParticipantLeft(let participant):
|
|
527
|
+
print("Participant left: \(participant.userName), ID: \(participant.userID)")
|
|
528
|
+
default:
|
|
529
|
+
break
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
.store(in: &cancellableSet)
|
|
533
|
+
}
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
Subscribe to changes in `RoomParticipantState` properties, such as tracking users who are currently speaking.
|
|
537
|
+
``` swift
|
|
538
|
+
import Foundation
|
|
539
|
+
import AtomicXCore
|
|
540
|
+
import Combine
|
|
541
|
+
|
|
542
|
+
let participantStore = RoomParticipantStore.create(roomID: "your_room_id")
|
|
543
|
+
private var cancellableSet = Set<AnyCancellable>()
|
|
544
|
+
|
|
545
|
+
private func subscribeParticipantState() {
|
|
546
|
+
participantStore.state
|
|
547
|
+
.subscribe(StatePublisherSelector(keyPath: \.speakingUsers))
|
|
548
|
+
.map { $0 }
|
|
549
|
+
.removeDuplicates { oldValue, newValue in
|
|
550
|
+
// Prevent redundant processing
|
|
551
|
+
return oldValue == newValue
|
|
552
|
+
}
|
|
553
|
+
.receive(on: DispatchQueue.main)
|
|
554
|
+
.sink { speakingUsers in
|
|
555
|
+
print("Speaking users updated: count = \(speakingUsers.count)")
|
|
556
|
+
}
|
|
557
|
+
.store(in: &cancellableSet)
|
|
558
|
+
}
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
## API Documentation
|
|
562
|
+
|
|
563
|
+
|**Store/Component**|**Description**|**API Documentation**|
|
|
564
|
+
|---------|---------|---------|
|
|
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.
|