• 製品
  • 価格
  • リソース
  • サポート
このページは現在英語版のみで提供されており、日本語版も近日中に提供される予定です。ご利用いただきありがとうございます。

Audience Watching

TUILiveKit’s audience viewing page offers a comprehensive suite of live streaming and interactive features designed for seamless integration into your application. With TUILiveKit, you can quickly deliver a rich live experience tailored to your audience’s needs.

Feature Overview

Live streaming: Clear and smooth viewing of the host's real-time live stream.
Interactive co-guest: Apply for mic connection to interact with the host via audio and video.
Live information: View the live streaming room title, description, and audience list, etc.
Live interactive: Send a gift (with animation effects and host notification), like (with animation and real-time statistics), and interact via bullet screen.
Live Streaming
Interactive co-guest
Live Information
Live Interactive















Quick Start

Step 1. Activate the Service

Refer to the Activate Service document to enable the trial version or activate the Pro Edition package.

Step 2: Install TUILiveKit

Refer to Preparations guide to integrate the TUILiveKit SDK.

Step 3: Add Audience Viewing Page

TUILiveRoomAudienceWidget provides a complete audience-side UI and business logic for live streaming scenarios. This widget does not support floating window mode. If you require floating window, see Add Floating Window (Audience Page).
To launch the audience viewing page or embed it in your widget tree, set up the entry point for calling TUILiveRoomAudienceWidget according to your business logic and use one of the following approaches:
Direct Navigation
Integrate Into Widget Tree
import 'package:tencent_live_uikit/tencent_live_uikit.dart';

// Navigate to the audience viewing page
Navigator.push(context, MaterialPageRoute(
builder: (BuildContext context) {
final roomId = "test_live_room_id";
return TUILiveRoomAudienceWidget(roomId: roomId);
}));
// --- Select one integration method based on your Widget tree structure ---

// [Option one] As the only child Widget (single subtree)
// Suitable for containers like Container, Padding that usually only contain one child Widget
Container(
child: TUILiveRoomAudienceWidget(roomId: roomId) // Integrate audience viewing here
)

// [Option two] As one of multiple child Widgets (multiple subtrees)
// Suitable for layouts like Column, Row, Stack that can contain multiple child Widgets
Stack(
children: [
YourOtherWidget(), // Your other child Widget
TUILiveRoomAudienceWidget(roomId: roomId), // Integrate audience viewing here
YourOtherWidget(), // Your other child Widget
])
After integration, After integration, calling this code will open the audience page and start playback of live stream, as shown in the figure for viewing live stream in Features Overview.

Step 4: (Optional) Add a Floating Window

TUILiveRoomAudienceOverlay enables floating window mode for the audience viewing page. During a live stream, you can switch between in-app and out-of-app (Picture-in-Picture) floating window modes. TUILiveRoomAudienceOverlay is built using Flutter’s official Overlay API and native Picture-in-Picture. To integrate:

1. Enable System Picture-in-Picture

Refer to Project Configuration to enable the system Picture-in-Picture feature.

2. Add a Secondary Navigator

Refer to Floating Live Room Configuration to add a new secondary navigator in the App. This navigator hosts the live streaming page, keeping it separate from your main navigation stack and enabling floating window effects.

3. Navigate to the Floating Window

At the entry point where your audience enters the room (based on your business logic), navigate to the viewing page as follows:
import 'package:tencent_live_uikit/tencent_live_uikit.dart';

// Navigate to the viewing page
Navigator.push(context, MaterialPageRoute(
builder: (BuildContext context) {
final roomId = "test_live_room_id";
return TUILiveRoomAudienceOverlay(roomId: roomId);
}));
Note:
1. TUILiveRoomAudienceOverlay cannot be embedded as a child widget in container widgets (such as Container, Stack, etc.); it must be navigated to as a standalone page. This is because Overlay is used internally, and LiveKit needs to control the entire Overlay page to switch floating window modes.
2. On iOS, only regular audience members can enter out-of-app floating window mode.

Floating Window Mode Effect

Click the floating window button at the top right of the page to enter floating window mode, as shown below:


Out-of-App Floating Window Effect

Tap More > PIP at the bottom of the viewing page to enable Picture-in-Picture. When your app moves to the background, it will automatically enter system Picture-in-Picture mode:


Customize UI Layout

Text Customization (ARB)

TUILiveKit uses ARB files and the Flutter standard internationalization (i18n) solution to manage the UI text display. You can directly edit the ARB files in the livekit/lib/common/language/i10n/ directory to modify the text:

livekit_en.arb: English Text.
livekit_zh.arb: Simplified Chinese Text.
livekit_zh_Hant.arb: Traditional Chinese Text.
After editing, run flutter gen-l10n in your terminal to regenerate localization code.

Icon Customization

TUILiveKit’s UI image assets are stored in the livekit/assets/images/ directory. To update icons, simply replace the PNG files in this folder.

Rebuild and run the application, and you will see the updated icon.

Next Steps

Congratulations! You have successfully integrated Audience Viewing. Next, you can implement features such as Host Streaming, and Live Stream List. Please refer to the table below:
Feature
Description
Integration Guide
Host Streaming
The complete workflow for a host to start a stream, including pre-stream setup and various in-stream interactions.
Live Stream List
Display the live stream list interface and features, including the live stream list and room information display.

FAQs

Why does the video screen go black after the audience chooses video interaction?

Go to Phone Settings > App > Camera and check whether camera permission is enabled. Refer to the image below:
iOS
Android







Why can’t other audience members see live comments sent by an audience member?

Reason 1: First check the network connection to ensure the viewer's device network is online and stable.
Reason 2: The viewer has been muted (banned) by the host and cannot send live comments.
Reason 3: The live comment may contain blocked keywords. Make sure comments comply with live room rules.

Why can’t the app enter out-of-app floating window (Picture-in-Picture) mode when in the background?

Refer to Entering Out-Of-App Floating Window. After entering the live room, enable the Picture-in-Picture switch.
On Android, after enabling Picture-in-Picture, the app will automatically check the system setting. If Picture-in-Picture is not enabled, the app will prompt you to allow this mode in system settings:


Why do pop-up windows not appear or get covered?

If you have integrated TUILiveRoomAudienceOverlay, ensure that pop-up components (such as BottomSheet, Dialog, etc.) use the rootNavigator context (recommended: Global.appContext()).
Reason: The live streaming page Overlay is rendered on the secondaryNavigator. Pop-ups using the secondaryNavigator context will be obstructed by the Overlay because, on the same Navigator, the Overlay layer is above regular pages, allowing it to float above them. Using the rootNavigator ensures pop-ups display correctly above the Overlay.