@tencent-rtc/mcp 1.6.3 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +0 -4
- package/knowledge/chunker.js +83 -54
- package/knowledge/path-meta.js +179 -26
- package/knowledge/search/exact-lookup.js +153 -0
- package/knowledge/search/filter-pool.js +73 -19
- package/knowledge/search/product-scope-intent.js +2 -2
- package/knowledge/search/requires-framework.js +2 -2
- package/knowledge/search/search-knowledge.js +235 -58
- package/package.json +1 -1
- package/resource/index/manifest.json +1 -1
- package/resource/integration/callkit/preset/android/integration.md +2 -4
- package/resource/integration/callkit/preset/flutter/integration.md +4 -5
- package/resource/integration/callkit/preset/ios/integration.md +1 -4
- package/resource/integration/callkit/preset/react/integration.md +13 -20
- package/resource/integration/callkit/preset/vue/integration.md +14 -21
- package/resource/integration/chat/preset/android/integration.md +6 -9
- package/resource/integration/chat/preset/flutter/integration.md +9 -12
- package/resource/integration/chat/preset/ios/integration.md +2 -4
- package/resource/integration/chat/preset/react/integration.md +0 -10
- package/resource/integration/livekit/preset/live/android/live-audience-integration.md +129 -0
- package/resource/integration/livekit/preset/live/android/live-host-integration.md +219 -0
- package/resource/integration/livekit/preset/live/android/live-list-integration.md +261 -0
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +254 -0
- package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +202 -0
- package/resource/integration/livekit/preset/live/ios/live-host-integration.md +369 -0
- package/resource/integration/livekit/preset/live/ios/live-list-integration.md +229 -0
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +204 -0
- package/resource/integration/livekit/preset/live/vue/live-list-integration.md +0 -3
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -5
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -6
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +5 -10
- package/resource/integration/roomkit/preset/vue/integration.md +0 -4
- package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +80 -0
- package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +24 -0
- package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +116 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +7 -8
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +5 -7
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +3 -5
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +2 -6
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +2 -6
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +4 -9
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1 -4
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +8 -11
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +17 -23
- package/resource/knowledge/callkit/core-sdk/web/call-engine.md +33 -0
- package/resource/knowledge/callkit/core-sdk/web/call-event.md +327 -0
- package/resource/knowledge/callkit/core-sdk/web/callengine-api-overview.md +33 -0
- package/resource/knowledge/callkit/faq/android.md +0 -2
- package/resource/knowledge/callkit/faq/error-code.md +0 -2
- package/resource/knowledge/callkit/faq/flutter.md +2 -2
- package/resource/knowledge/callkit/faq/ios.md +3 -5
- package/resource/knowledge/callkit/faq/web.md +2 -3
- package/resource/knowledge/callkit/preset/android/api.md +2 -5
- package/resource/knowledge/callkit/preset/ios/api.md +0 -2
- package/resource/knowledge/callkit/preset/react/api.md +445 -0
- package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +445 -0
- package/resource/knowledge/callkit/preset/vue/api.md +465 -0
- package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +465 -0
- package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +16 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +1 -1
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +1 -1
- package/resource/knowledge/chat/preset/android/features/language.md +0 -1
- package/resource/knowledge/chat/preset/android/features/message-input.md +1 -1
- package/resource/knowledge/chat/preset/android/features/message-list.md +2 -3
- package/resource/knowledge/chat/preset/android/features/search.md +0 -1
- package/resource/knowledge/chat/preset/android/features/theme.md +1 -1
- package/resource/knowledge/chat/preset/android-view/integration.md +3 -11
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -1
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +1 -2
- package/resource/knowledge/chat/preset/flutter/features/search.md +5 -6
- package/resource/knowledge/chat/preset/flutter/features/theme.md +2 -2
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +1 -1
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +1 -2
- package/resource/knowledge/chat/preset/ios/features/message-list.md +1 -2
- package/resource/knowledge/chat/preset/ios/features/search.md +0 -1
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +13 -15
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +5 -5
- package/resource/knowledge/chat/preset/react/features/message-input.md +2 -3
- package/resource/knowledge/chat/preset/react/features/search.md +0 -1
- package/resource/knowledge/chat/preset/react/features/theme.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +7 -14
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +5 -8
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +15 -18
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +1 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +15 -20
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +10 -13
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +4 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +1 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +8 -10
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +5 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +7 -14
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +6 -9
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +1 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +15 -18
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +15 -20
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +10 -13
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +4 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +1 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +8 -10
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +3 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +7 -14
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +5 -8
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +1 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +6 -9
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +5 -10
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +3 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +4 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +2 -4
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +1 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +4 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +3 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/{web → vue}/index.md +24 -24
- package/resource/knowledge/livekit/core-sdk/{voice/android/voice-audio-effect.md → features/android/audio-effect.md} +1 -2
- package/resource/knowledge/livekit/core-sdk/{live/android/live-gift.md → features/android/gift.md} +2 -3
- package/resource/knowledge/livekit/core-sdk/{voice/android/voice-room-list.md → features/android/live-list.md} +2 -4
- package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audio-effect.md → features/flutter/audio-effect.md} +0 -2
- package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-barrage.md → features/flutter/barrage.md} +2 -2
- package/resource/knowledge/livekit/core-sdk/{live/flutter/live-gift.md → features/flutter/gift.md} +2 -3
- package/resource/knowledge/livekit/core-sdk/{voice/flutter/voice-room-list.md → features/flutter/live-list.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audience-list.md → features/ios/audience-list.md} +1 -2
- package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-audio-effect.md → features/ios/audio-effect.md} +1 -3
- package/resource/knowledge/livekit/core-sdk/{live/ios/live-base-beauty.md → features/ios/base-beauty.md} +2 -2
- package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-gift.md → features/ios/gift.md} +2 -3
- package/resource/knowledge/livekit/core-sdk/{voice/ios/voice-room-list.md → features/ios/live-list.md} +2 -4
- package/resource/knowledge/livekit/core-sdk/live/android/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -1
- package/resource/knowledge/livekit/core-sdk/live/android/{live-host-interaction.md → host-interaction.md} +5 -7
- package/resource/knowledge/livekit/core-sdk/live/android/{live-integration.md → integration.md} +3 -6
- package/resource/knowledge/livekit/core-sdk/live/flutter/{live-co-guest-interaction.md → co-guest-interaction.md} +1 -1
- package/resource/knowledge/livekit/core-sdk/live/flutter/{live-host-interaction.md → host-interaction.md} +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/{live-integration.md → integration.md} +1 -4
- package/resource/knowledge/livekit/core-sdk/live/ios/{live-co-guest-interaction.md → co-guest-interaction.md} +0 -1
- package/resource/knowledge/livekit/core-sdk/live/ios/{live-host-interaction.md → host-interaction.md} +2 -4
- package/resource/knowledge/livekit/core-sdk/live/ios/{live-integration.md → integration.md} +2 -5
- package/resource/knowledge/livekit/core-sdk/voice/android/{voice-host-interaction.md → host-interaction.md} +3 -5
- package/resource/knowledge/livekit/core-sdk/voice/android/{voice-integration.md → integration.md} +3 -6
- package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-co-guest-interaction.md → co-guest-interaction.md} +1 -2
- package/resource/knowledge/livekit/core-sdk/voice/flutter/{voice-integration.md → integration.md} +6 -9
- package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-co-guest-interaction.md → co-guest-interaction.md} +2 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-host-interaction.md → host-interaction.md} +4 -6
- package/resource/knowledge/livekit/core-sdk/voice/ios/{voice-integration.md → integration.md} +1 -4
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +0 -2
- package/resource/knowledge/push/api-reference/android.md +123 -0
- package/resource/knowledge/push/api-reference/flutter.md +176 -0
- package/resource/knowledge/push/api-reference/harmonyos.md +138 -0
- package/resource/knowledge/push/api-reference/ios.md +176 -0
- package/resource/knowledge/push/api-reference/react-native.md +147 -0
- package/resource/knowledge/push/api-reference/uni-app.md +147 -0
- package/resource/knowledge/push/api-reference/unity.md +119 -0
- package/resource/knowledge/push/api-reference/unreal-engine.md +123 -0
- package/resource/knowledge/push/config/android.md +4 -7
- package/resource/knowledge/push/config/harmonyos.md +0 -3
- package/resource/knowledge/push/config/ios.md +12 -20
- package/resource/knowledge/push/config/react-native.md +18 -26
- package/resource/knowledge/push/config/unity.md +20 -28
- package/resource/knowledge/push/config/unreal-engine.md +21 -29
- package/resource/knowledge/push/integration/android.md +6 -8
- package/resource/knowledge/push/integration/flutter.md +6 -9
- package/resource/knowledge/push/integration/harmonyos.md +1 -0
- package/resource/knowledge/push/integration/ios.md +7 -9
- package/resource/knowledge/push/integration/react-native.md +9 -13
- package/resource/knowledge/push/integration/uni-app.md +7 -7
- package/resource/knowledge/push/integration/unity.md +10 -13
- package/resource/knowledge/push/integration/unreal-engine.md +6 -9
- package/resource/knowledge/push/overview/prepare.md +2 -2
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +3 -3
- package/resource/knowledge/roomkit/core-sdk/android/capability-matrix.md +46 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +2 -2
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +6 -6
- package/resource/knowledge/roomkit/core-sdk/android/unsupported-features.md +79 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/capability-matrix.md +46 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/flutter/unsupported-features.md +79 -0
- package/resource/knowledge/roomkit/core-sdk/ios/capability-matrix.md +46 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/ios/unsupported-features.md +79 -0
- package/resource/knowledge/roomkit/preset/android/integration.md +5 -7
- package/resource/knowledge/roomkit/preset/flutter/integration.md +2 -7
- package/resource/knowledge/roomkit/preset/ios/integration.md +3 -9
- package/resource/knowledge/roomkit/preset/react/integration.md +12 -16
- package/resource/knowledge/trtc/android/TRTCCloud.md +154 -238
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +133 -134
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +86 -120
- package/resource/knowledge/trtc/android/TRTCStatistics.md +10 -10
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +10 -30
- package/resource/knowledge/trtc/android/TXBeautyManager.md +25 -25
- package/resource/knowledge/trtc/android/TXDeviceManager.md +2 -2
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +12 -12
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +166 -261
- package/resource/knowledge/trtc/c++/ITRTCStatistics.md +12 -12
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +10 -30
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +9 -11
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +96 -130
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +122 -123
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +12 -12
- package/resource/knowledge/trtc/ios/TRTCCloud.md +168 -255
- package/resource/knowledge/trtc/ios/TRTCCloudDef.md +124 -125
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +89 -124
- package/resource/knowledge/trtc/ios/TRTCStatistics.md +10 -10
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +9 -28
- package/resource/knowledge/trtc/ios/TXBeautyManager.md +25 -25
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +9 -11
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +12 -12
- package/server-config.js +7 -4
- package/server.js +21 -21
- package/tools/common/finalize_answer.js +1 -1
- package/tools/common/present_framework_choice.js +2 -2
- package/tools/common/search_trtc_knowledge.js +3 -3
- package/tools/common/submit_feedback.js +1 -1
- package/tools/definitions/get_native_live_uikit_integration_def.js +61 -0
- package/tools/definitions/get_native_livekit_core_integration_def.js +3 -3
- package/tools/definitions/present_framework_choice_def.js +2 -2
- package/tools/definitions/search_trtc_knowledge_def.js +5 -5
- package/tools/index.js +2 -0
- package/tools/live/get_native_live_uikit_integration.js +69 -0
- package/tools/live/get_native_livekit_core_integration.js +6 -6
- package/utils/is-valid-sdkappid.js +4 -0
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/knowledge/callkit/preset/web/api.md +0 -83
- package/resource/knowledge/livekit/core-sdk/live/android/live-audio-effect.md +0 -226
- package/resource/knowledge/livekit/core-sdk/live/android/live-live-list.md +0 -438
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-barrage.md +0 -490
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-live-list.md +0 -726
- package/resource/knowledge/livekit/core-sdk/live/ios/live-audience-list.md +0 -264
- package/resource/knowledge/livekit/core-sdk/live/ios/live-audio-effect.md +0 -216
- package/resource/knowledge/livekit/core-sdk/live/ios/live-gift.md +0 -407
- package/resource/knowledge/livekit/core-sdk/live/ios/live-live-list.md +0 -349
- package/resource/knowledge/livekit/core-sdk/voice/android/voice-audience-list.md +0 -269
- package/resource/knowledge/livekit/core-sdk/voice/android/voice-barrage.md +0 -456
- package/resource/knowledge/livekit/core-sdk/voice/android/voice-gift.md +0 -455
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +0 -260
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +0 -598
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +0 -424
- package/resource/knowledge/livekit/core-sdk/voice/ios/voice-barrage.md +0 -408
- /package/resource/knowledge/livekit/core-sdk/{live/android/live-audience-list.md → features/android/audience-list.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/android/live-barrage.md → features/android/barrage.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/android/live-base-beauty.md → features/android/base-beauty.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-audience-list.md → features/flutter/audience-list.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/flutter/live-base-beauty.md → features/flutter/base-beauty.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/{live/ios/live-barrage.md → features/ios/barrage.md} +0 -0
- /package/resource/knowledge/livekit/core-sdk/voice/android/{voice-co-guest-interaction.md → co-guest-interaction.md} +0 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
## Feature Overview
|
|
2
|
+
|
|
3
|
+
**TUILiveKit** is a comprehensive live-streaming component. Once integrated, it allows you to quickly implement the following key functional modules for your Android application:
|
|
4
|
+
|
|
5
|
+
|**Host Prepare Page**|**Host Streaming Page**|**Live Stream List**|**Audience Viewing Page**|
|
|
6
|
+
|---------|---------|---------|---------|
|
|
7
|
+
|||||
|
|
8
|
+
|
|
9
|
+
## **Preparations**
|
|
10
|
+
|
|
11
|
+
### Activate Service
|
|
12
|
+
|
|
13
|
+
Before using **TUILiveKit**, please refer to Activate Service to get the TUILiveKit trial version or activate the paid version.
|
|
14
|
+
|
|
15
|
+
### Environment Requirements
|
|
16
|
+
- **Android** **Studio Arctic Fox (2020.3.1)** or a later version.
|
|
17
|
+
|
|
18
|
+
- **Gradle 7.0** or a later version.
|
|
19
|
+
|
|
20
|
+
- **Android** **5.0** or a later version.
|
|
21
|
+
|
|
22
|
+
## Code Integration
|
|
23
|
+
|
|
24
|
+
### **Step 1.** Download the TUILiveKit Component
|
|
25
|
+
|
|
26
|
+
Clone or download the code from [GitHub](https://github.com/Tencent-RTC/TUIKit_Android). Then, copy the `live` and `atomic_x` directory into the same directory as your current Android project's `app` folder.
|
|
27
|
+
|
|
28
|
+
### Step 2. Project Configuration
|
|
29
|
+
|
|
30
|
+
#### 1. Configure the JitPack Repository
|
|
31
|
+
|
|
32
|
+
In your project's **root directory,** open the `settings.gradle.kts` or `settings.gradle` file and add the JitPack repository address. The third-party library for playing gift SVG animations is hosted on JitPack, so you must include this repository to resolve dependencies.
|
|
33
|
+
|
|
34
|
+
【settings.gradle.kts】
|
|
35
|
+
``` java
|
|
36
|
+
dependencyResolutionManagement {
|
|
37
|
+
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
|
38
|
+
repositories {
|
|
39
|
+
google()
|
|
40
|
+
mavenCentral()
|
|
41
|
+
|
|
42
|
+
// Add JitPack repository url
|
|
43
|
+
maven { url = uri("https://jitpack.io") }
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
【settings.gradle】
|
|
49
|
+
``` java
|
|
50
|
+
dependencyResolutionManagement {
|
|
51
|
+
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
|
52
|
+
repositories {
|
|
53
|
+
google()
|
|
54
|
+
mavenCentral()
|
|
55
|
+
|
|
56
|
+
// Add JitPack repository url
|
|
57
|
+
maven { url 'https://jitpack.io' }
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### 2. Import the TUILiveKit Component
|
|
63
|
+
|
|
64
|
+
In your project's root directory, add the following line to the `settings.gradle.kts` or `settings.gradle` file to import the **TUILiveKit** component (as a module).
|
|
65
|
+
|
|
66
|
+
【settings.gradle.kts】
|
|
67
|
+
``` java
|
|
68
|
+
include ':tuilivekit'
|
|
69
|
+
project(':tuilivekit').projectDir = new File(settingsDir, "live/tuilivekit")
|
|
70
|
+
|
|
71
|
+
include(":atomic_x")
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
【settings.gradle】
|
|
75
|
+
``` java
|
|
76
|
+
include ':tuilivekit'
|
|
77
|
+
project(':tuilivekit').projectDir = new File(settingsDir, "live/tuilivekit")
|
|
78
|
+
|
|
79
|
+
include(":atomic_x")
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### 3. Adding Component Dependency
|
|
83
|
+
|
|
84
|
+
Navigate to the app directory and find the `build.gradle.kts` or `build.gradle` file. Add the following dependency to declare that your app module relies on the newly added `TUILiveKit` component module.
|
|
85
|
+
|
|
86
|
+
【build.gradle.kts】
|
|
87
|
+
``` java
|
|
88
|
+
dependencies {
|
|
89
|
+
// Add tuilivekit dependency
|
|
90
|
+
api(project(":tuilivekit"))
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
【build.gradle】
|
|
95
|
+
``` java
|
|
96
|
+
dependencies {
|
|
97
|
+
// Add tuilivekit dependency
|
|
98
|
+
api project(':tuilivekit')
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
> **Note:**
|
|
103
|
+
>
|
|
104
|
+
> TUILiveKit has default dependencies on public libraries like the TRTC SDK and IM SDK, so you **do not** need to configure them separately.
|
|
105
|
+
>
|
|
106
|
+
|
|
107
|
+
#### 4. Configure Proguard Rules
|
|
108
|
+
|
|
109
|
+
Since the SDK uses Java reflection internally, you must add the following rules to the **proguard-rules.pro** file. This prevents the relevant classes from being obfuscated, ensuring proper function.
|
|
110
|
+
``` java
|
|
111
|
+
-keep class com.tencent.** { *; }
|
|
112
|
+
-keep class com.tencent.beacon.** { *; }
|
|
113
|
+
-keep class com.tencent.cloud.iai.lib.** { *; }
|
|
114
|
+
-keep class com.tencent.qimei.** { *; }
|
|
115
|
+
-keep class com.tencent.xmagic.** { *; }
|
|
116
|
+
-keep class com.trtc.uikit.livekit.component.gift.store.model.** { *; }
|
|
117
|
+
-keep class com.trtc.uikit.livekit.livestreamcore.** { *; }
|
|
118
|
+
-keep class com.tcmediax.** { *; }
|
|
119
|
+
|
|
120
|
+
# Obfuscation rules for Google's serialization/deserialization framework Gson library
|
|
121
|
+
-keep class com.google.gson.** { *; }
|
|
122
|
+
|
|
123
|
+
# Obfuscation rules for beauty effect
|
|
124
|
+
-keep class androidx.exifinterface.** { *; }
|
|
125
|
+
-keep class com.gyailib.** { *; }
|
|
126
|
+
-keep class org.extra.** { *; }
|
|
127
|
+
-keep class org.libpag.** { *; }
|
|
128
|
+
-keep class org.light.** { *; }
|
|
129
|
+
|
|
130
|
+
# Obfuscation rules for playing gifts SVG animation
|
|
131
|
+
-keep class com.opensource.svgaplayer.proto.** { *; }
|
|
132
|
+
-keep class com.squareup.wire.** { *; }
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### 5. Modify AndroidManifest.xml
|
|
136
|
+
|
|
137
|
+
To prevent conflicts during the **AndroidManifest** merge process, you must add `tools:replace="android:allowBackup"` and `android:allowBackup="false"` to the **<application>** node in your `app/src/main/AndroidManifest.xml` file. This overrides the settings within the component and disables the backup feature.
|
|
138
|
+
``` xml
|
|
139
|
+
<application
|
|
140
|
+
...
|
|
141
|
+
|
|
142
|
+
// Add the following configuration to override the settings in the dependent SDK
|
|
143
|
+
android:allowBackup="false"
|
|
144
|
+
tools:replace="android:allowBackup">
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### 6. Complete Project Sync
|
|
148
|
+
|
|
149
|
+
After completing the steps above, Android Studio will typically prompt you with a **Sync Now** button. Click this button to complete the project synchronization. If the IDE doesn't prompt you automatically, manually click the sync button in the toolbar. Once synchronized, the IDE will finish project configuration and indexing, allowing you to use the **TUILiveKit** component in your project.
|
|
150
|
+
|
|
151
|
+
## Complete Login
|
|
152
|
+
|
|
153
|
+
After code integration, the next step is to complete the login. All **TUILiveKit** features require a successful login to function properly, so ensure your parameters are configured correctly.
|
|
154
|
+
|
|
155
|
+
> **Note:**
|
|
156
|
+
>
|
|
157
|
+
> In the example code, the login API is called directly. However, in a real-world application, it is highly recommended that you call the **TUILiveKit** login service only after your own user authentication and other internal login processes are complete. This prevents potential business logic confusion or data inconsistency caused by calling the login service too early, and it better aligns with your existing user management system.
|
|
158
|
+
>
|
|
159
|
+
|
|
160
|
+
【Kotlin】
|
|
161
|
+
``` java
|
|
162
|
+
// 1.Import dependency
|
|
163
|
+
import io.trtc.tuikit.atomicxcore.api.CompletionHandler
|
|
164
|
+
import io.trtc.tuikit.atomicxcore.api.login.LoginStore
|
|
165
|
+
|
|
166
|
+
private const val TAG = "LoginStore"
|
|
167
|
+
|
|
168
|
+
// 2.Call the login API. It is recommended to call TUILogin after your own login business is completed.
|
|
169
|
+
LoginStore.shared.login(applicationContext,
|
|
170
|
+
1400000001, // Please replace with the SDKAppID from the service activation console
|
|
171
|
+
"denny", // Please replace with your UserID
|
|
172
|
+
"xxxxxxxxxxx", // You can generate a UserSig in the console and fill it in here
|
|
173
|
+
object : CompletionHandler {
|
|
174
|
+
override fun onSuccess() {
|
|
175
|
+
Log.i(TAG, "LoginStore login success")
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
override fun onFailure(code: Int, desc: String) {
|
|
179
|
+
Log.e(TAG, "LoginStore login failed, $code errorMessage:$desc")
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Login API Parameter Description**
|
|
186
|
+
| Parameter | Type | Description |
|
|
187
|
+
| --- | --- | --- |
|
|
188
|
+
| SDKAppID | Int | Get this from <a href="https://console.trtc.io/app">TRTC console > Application management</a>. |
|
|
189
|
+
| UserID | String | The unique ID for the current user. Must contain only English letters, numbers, hyphens, and underscores. |
|
|
190
|
+
| userSig | String | A ticket for Tencent Cloud authentication. Please note:<br>- <strong>Development Environment</strong>: You can use the local <code>GenerateTestUserSig.genTestSig</code> function to generate a UserSig or generate a temporary UserSig via the <a href="https://console.trtc.io/usersig">UserSig Generation Tool</a>.<br>- <strong>Production Environment</strong>: To prevent key leakage, you must use a server-side method to generate UserSig. For details, see Generating UserSig on the Server.<br>For more information, see <a href="https://www.tencentcloud.com/document/product/647/35166">How to Calculate and Use UserSig</a>. |
|
|
191
|
+
|
|
192
|
+
### Handling Login Exception Status [Optional]
|
|
193
|
+
|
|
194
|
+
**TUILogin** provides a login status callback mechanism to help you handle possible login exceptions, mainly including "**kicked offline**" and "**signature expired**" callbacks:
|
|
195
|
+
- **Kicked Offline:** If a user is kicked offline while online, the **SDK** will notify you via the `onKickedOffline` callback. At this point, you can display a UI prompt to the user and call `TUILogin.login` to login again.
|
|
196
|
+
|
|
197
|
+
- **Signature Expired:** If a user receives the `onUserSigExpired` callback while online, it means the **userSig** previously issued for that user has expired. If the user's login session on your backend is still valid, you can have your app request a new **userSig** from your backend and call `TUILogin.login` to renew the login session.
|
|
198
|
+
|
|
199
|
+
【kotlin】
|
|
200
|
+
``` java
|
|
201
|
+
import io.trtc.tuikit.atomicxcore.api.login.LoginListener
|
|
202
|
+
import io.trtc.tuikit.atomicxcore.api.login.LoginStore
|
|
203
|
+
|
|
204
|
+
class YourLoginService {
|
|
205
|
+
|
|
206
|
+
// Instantiate listener
|
|
207
|
+
private val loginListener = object : LoginListener() {
|
|
208
|
+
// Callback for user being kicked offline
|
|
209
|
+
override fun onKickedOffline() {
|
|
210
|
+
// Handle: Prompt user in UI, then re-login
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Callback for user signature expired
|
|
214
|
+
override fun onLoginExpired() {
|
|
215
|
+
// Handle: If the user's backend session is valid, request a new userSig and call LoginStore.shared.login to renew the session
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Subscribe to login state callbacks
|
|
220
|
+
fun subscribeLoginStatus() {
|
|
221
|
+
LoginStore.shared.addLoginListener(loginListener)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Unsubscribe from login state callbacks
|
|
225
|
+
fun unsubscribeLoginStatus() {
|
|
226
|
+
LoginStore.shared.removeLoginListener(loginListener)
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Next Steps
|
|
232
|
+
|
|
233
|
+
Congratulations! You have successfully integrated the **TUILiveKit** component and completed the login. You can now implement features such as host streaming, viewer watching, and the live stream list. Please refer to the table below for integration guides:
|
|
234
|
+
| <strong>Feature</strong> | <strong>Description</strong> | <strong>Integration Guide</strong> |
|
|
235
|
+
| --- | --- | --- |
|
|
236
|
+
| <strong>Video Live Streaming</strong> | Includes a full suite of features such as host broadcasting, audience viewing, interactive co-hosting, beauty filters, gifts, and bullet chat. | - Host Broadcasting<br>- Audience Viewing |
|
|
237
|
+
| <strong>Voice Chat Room</strong> | Includes complete business logic such as mic seat management, background music (BGM), gift interactivity, and voice room control. | - Host Broadcasting<br>- Audience Viewing |
|
|
238
|
+
| <strong>Live Stream List</strong> | Display the live stream list interface and features, including the live stream list and room information display. | - Live Stream List |
|
|
239
|
+
|
|
240
|
+
## FAQs
|
|
241
|
+
|
|
242
|
+
### Do I need to call the login API every time I enter a room?
|
|
243
|
+
|
|
244
|
+
No. You typically only need to call `TUILogin.login` once. We recommend associating `TUILogin.login` and `TUILogin.logout` with your app's own user login and logout business logic.
|
|
245
|
+
|
|
246
|
+
### How do I handle the `allowBackup` compilation error shown in the figure below after code integration?
|
|
247
|
+
|
|
248
|
+
- **Reason**: The `allowBackup` attribute is configured in the `AndroidManifest.xml` of multiple modules, which causes a conflict during the manifest merge process.
|
|
249
|
+
|
|
250
|
+
- **Solution**: In your project's `AndroidManifest.xml` file, you can either delete the `allowBackup` attribute or change it to false to disable backup and restore functionality. Crucially, add `tools:replace="android:allowBackup"` to the **<application>** node to override the settings of other modules with your own configuration. See the example fix:
|
|
251
|
+
|
|
252
|
+
### After code integration, do I still need to explicitly declare camera and microphone permissions?
|
|
253
|
+
|
|
254
|
+
No, **TUILiveKit** already has built-in declarations for permissions like the camera and microphone in its manifest file. You do not need to worry about declaring these permissions separately during the integration process.
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
**TUILiveKit**'s audience viewing page provides users with various and convenient live streaming and interaction features, enabling quick integration into your application to meet diverse audience needs.
|
|
2
|
+
|
|
3
|
+
## Feature Overview
|
|
4
|
+
- **Live streaming:** Clear and smooth viewing of the host's real-time live stream.
|
|
5
|
+
|
|
6
|
+
- **Interactive co-guest:** Apply for mic connection to interact with the host via audio and video.
|
|
7
|
+
|
|
8
|
+
- **Live information:** View the live streaming room title, description, and audience list, etc.
|
|
9
|
+
|
|
10
|
+
- **Live interactive:** Send a gift (with animation effects and host notification), like (with animation and real-time statistics), and interact via bullet screen.
|
|
11
|
+
|
|
12
|
+
| <strong>Live Streaming</strong> | <strong>Interactive co-guest</strong> | <strong>Live Information</strong> | <strong>Live Interactive</strong> |
|
|
13
|
+
| --- | --- | --- | --- |
|
|
14
|
+
| | ### | | |
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
### Step 1. Activate the Service
|
|
19
|
+
|
|
20
|
+
Refer to the Activate Service document to get the `TUILiveKit` trial version or activate the paid version.
|
|
21
|
+
|
|
22
|
+
### Step 2. Code Integration
|
|
23
|
+
|
|
24
|
+
Refer to Preparations guide to integrate the TUILiveKit SDK.
|
|
25
|
+
|
|
26
|
+
### Step 3. Add an Audience Viewing view
|
|
27
|
+
|
|
28
|
+
In your audience view controller `YourAudienceViewController`, initialize and add `AudienceView` for audience streaming:
|
|
29
|
+
|
|
30
|
+
【Swift】
|
|
31
|
+
``` swift
|
|
32
|
+
import UIKit
|
|
33
|
+
import SnapKit
|
|
34
|
+
import TUILiveKit
|
|
35
|
+
|
|
36
|
+
// YourAudienceViewController represents the audience viewing page controller
|
|
37
|
+
class YourAudienceViewController: UIViewController {
|
|
38
|
+
|
|
39
|
+
// 1. Declare audienceView as a member variable
|
|
40
|
+
private let audienceView: AudienceView
|
|
41
|
+
|
|
42
|
+
// 2. Add a convenience initializer:
|
|
43
|
+
// - roomId: Live room ID
|
|
44
|
+
public init(roomId: String) {
|
|
45
|
+
// 3. Initialize the AudienceView component
|
|
46
|
+
self.audienceView = AudienceView(roomId: roomId)
|
|
47
|
+
super.init(nibName: nil, bundle: nil)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@available(*, unavailable)
|
|
51
|
+
required init?(coder: NSCoder) {
|
|
52
|
+
fatalError("init(coder:) has not been implemented")
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public override func viewDidLoad() {
|
|
56
|
+
super.viewDidLoad()
|
|
57
|
+
// 4. Add audienceView to the view hierarchy
|
|
58
|
+
view.addSubview(audienceView)
|
|
59
|
+
audienceView.snp.makeConstraints { make in
|
|
60
|
+
make.edges.equalToSuperview()
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Step 4. Event Callbacks and Data Source Customization
|
|
67
|
+
|
|
68
|
+
Beyond UI style customization, AudienceView offers three optional extension points for integrating a custom live stream list data source, handling audience page lifecycle events, and managing screen orientation changes:
|
|
69
|
+
|
|
70
|
+
|Extension Point|Type|Description|
|
|
71
|
+
|---------|---------|---------|
|
|
72
|
+
|delegate|AudienceViewDelegate|Listen for audience page events, such as live view creation/display/hide, floating window actions, live end, and more.|
|
|
73
|
+
|dataSource|AudienceViewDataSource|Customize live stream list retrieval logic. By default, AudienceView uses TUILiveKit’s built-in list; set this to use your own APIs.|
|
|
74
|
+
|rotateScreenDelegate|RotateScreenDelegate|Monitor audience page orientation changes to synchronize your UI layout with device rotation.|
|
|
75
|
+
|
|
76
|
+
``` swift
|
|
77
|
+
|
|
78
|
+
import UIKit
|
|
79
|
+
import SnapKit
|
|
80
|
+
import TUILiveKit
|
|
81
|
+
import AtomicXCore
|
|
82
|
+
|
|
83
|
+
class YourAudienceViewController: UIViewController {
|
|
84
|
+
|
|
85
|
+
private let audienceView: AudienceView
|
|
86
|
+
|
|
87
|
+
public init(roomId: String) {
|
|
88
|
+
self.audienceView = AudienceView(roomId: roomId)
|
|
89
|
+
super.init(nibName: nil, bundle: nil)
|
|
90
|
+
// Set callbacks and data source
|
|
91
|
+
audienceView.delegate = self
|
|
92
|
+
audienceView.dataSource = self
|
|
93
|
+
audienceView.rotateScreenDelegate = self
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@available(*, unavailable)
|
|
97
|
+
required init?(coder: NSCoder) {
|
|
98
|
+
fatalError("init(coder:) has not been implemented")
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public override func viewDidLoad() {
|
|
102
|
+
super.viewDidLoad()
|
|
103
|
+
view.addSubview(audienceView)
|
|
104
|
+
audienceView.snp.makeConstraints { make in
|
|
105
|
+
make.edges.equalToSuperview()
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// MARK: - AudienceViewDelegate
|
|
111
|
+
extension YourAudienceViewController: AudienceViewDelegate {
|
|
112
|
+
// Called when the live room playback view is created; overlay custom UI here if needed
|
|
113
|
+
func audienceView(_ audienceView: AudienceView, onCreateLiveView liveView: AudienceLiveView, for liveInfo: LiveInfo) {
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Called when the audience swipes to a live room and its playback view appears on screen
|
|
117
|
+
func audienceView(_ audienceView: AudienceView, liveViewDidAppear liveView: AudienceLiveView, for liveInfo: LiveInfo) {
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Called when the audience leaves a live room and its playback view is removed from the screen
|
|
121
|
+
func audienceView(_ audienceView: AudienceView, liveViewDidDisappear liveView: AudienceLiveView, for liveInfo: LiveInfo) {
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Called when the user clicks the floating window
|
|
125
|
+
func onClickFloatWindow() {
|
|
126
|
+
FloatWindow.shared.showFloatWindow(controller: self, provider: audienceView)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Called when the live stream ends (host stops streaming, room is closed, etc.)
|
|
130
|
+
func onLiveEnded(roomId: String, ownerName: String, ownerAvatarUrl: String) {
|
|
131
|
+
// Display the live end summary page (includes host avatar/nickname, "Live Ended" prompt, etc.)
|
|
132
|
+
let endView = AudienceEndStatisticsView(roomId: roomId, avatarUrl: ownerAvatarUrl, userName: ownerName)
|
|
133
|
+
endView.delegate = self
|
|
134
|
+
view.addSubview(endView)
|
|
135
|
+
endView.snp.makeConstraints { make in
|
|
136
|
+
make.edges.equalToSuperview()
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// MARK: - RotateScreenDelegate
|
|
142
|
+
extension YourAudienceViewController: RotateScreenDelegate {
|
|
143
|
+
// isPortrait: true if portrait mode, false if landscape mode
|
|
144
|
+
func rotateScreen(isPortrait: Bool) {
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Step 5. Navigate to the **Audience Viewing** view
|
|
150
|
+
|
|
151
|
+
Usually in the live stream list, use the following code example when you need to jump to the viewer watching page:
|
|
152
|
+
|
|
153
|
+
【Swift】
|
|
154
|
+
``` swift
|
|
155
|
+
// 1. Instantiate your audience viewing view controller
|
|
156
|
+
let audienceVC = YourAudienceViewController(roomId: "Your live streaming room id")
|
|
157
|
+
audienceVC.modalPresentationStyle = .fullScreen
|
|
158
|
+
// 2. Navigate to your audience viewing view controller
|
|
159
|
+
present(audienceVC, animated: false)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### step 6. Customize Your UI Layout
|
|
163
|
+
|
|
164
|
+
### Customize the `AudienceView` Feature Area
|
|
165
|
+
- Customize the audience interface by referring to the Core Audience Page modify the UI styles and add your business components in AudienceView.
|
|
166
|
+
|
|
167
|
+
- Customize video-slot widgets by referring to Adjust Live Streaming Widgets. Modify the UI of nameplates, avatar decorations, and other elements on the video slot in AudienceView.
|
|
168
|
+
|
|
169
|
+
### Text Customization (Localization)
|
|
170
|
+
|
|
171
|
+
TUILiveKit uses the [Apple Strings Catalog](https://developer.apple.com/documentation/xcode/localizing-and-varying-text-with-a-string-catalog)(`.xcstrings`) format, introduced in **Xcode 15**, to manage the text displayed in the UI. You can modify the string resources using Xcode's graphical interface:
|
|
172
|
+
|
|
173
|
+
> **Note:**
|
|
174
|
+
>
|
|
175
|
+
> [Apple Strings Catalog](https://developer.apple.com/documentation/xcode/localizing-and-varying-text-with-a-string-catalog) (.xcstrings) is a localization format introduced in Xcode 15. It enhances how developers manage localized strings, supporting a structured format to handle plurals, device-specific variants, etc. This format is becoming the recommended way to manage localization for iOS and macOS applications.
|
|
176
|
+
>
|
|
177
|
+
|
|
178
|
+
### Icon Customization (Image Assets)
|
|
179
|
+
|
|
180
|
+
TUILiveKit uses `TUILiveKit.xcassets` to manage the image resources for the UI. You can quickly modify the custom icons using Xcode's graphical tools.
|
|
181
|
+
|
|
182
|
+
## Next Steps
|
|
183
|
+
|
|
184
|
+
Congratulations! You have successfully integrated **Audience Viewing**. Next, you can implement features such as **host streaming**, **live stream list** and **gift system**. Please refer to the table below:
|
|
185
|
+
| <strong>Feature</strong> | <strong>Description</strong> | <strong>Integration Guide</strong> |
|
|
186
|
+
| --- | --- | --- |
|
|
187
|
+
| <strong>Host Streaming</strong> | The complete workflow for a host to start a stream, including pre-stream setup and various in-stream interactions. | Host Streaming |
|
|
188
|
+
| <strong>Live Stream List</strong> | Display the live stream list interface and features, including the live stream list and room information display. | Live Stream List |
|
|
189
|
+
| <strong>Gift System</strong> | Support custom gift asset configuration, billing system integration, and gift-sending in PK scenarios. | Gift System |
|
|
190
|
+
|
|
191
|
+
## FAQs
|
|
192
|
+
|
|
193
|
+
### Why is the video screen black when a viewer selects video co-hosting?
|
|
194
|
+
|
|
195
|
+
Please go to **Phone Settings** > **App >** **Camera**, check whether camera permission is enabled, refer to the image below:
|
|
196
|
+
|
|
197
|
+
### Why can't other viewers in the live room see the barrage content sent by a viewer?
|
|
198
|
+
- **Reason 1**: First check the network connection to ensure the viewer's device network is normal.
|
|
199
|
+
|
|
200
|
+
- **Reason 2**: The viewer has been **muted (banned)** by the host and cannot send barrage.
|
|
201
|
+
|
|
202
|
+
- **Reason 3**: The viewer's barrage content involves **keyword blocking**. Please confirm whether the content sent by the viewer complies with the live room rules.
|