Skip to main content
UIKit Component: Livestream components are built on top of the social.plus SDK, providing ready-to-use live video broadcasting and viewing UI with full data management handled automatically.
Livestream(4)

Feature Overview

The Livestream feature in social.plus UIKit v4 empowers users to broadcast and engage with live video content seamlessly. It provides a suite of components designed to facilitate the creation, viewing, and management of live streams within your application, offering comprehensive tools for both content creators and viewers.

Key Features

Stream Creation

Live stream setup and broadcasting
  • Target audience selection (community or timeline)
  • Stream title, description, and thumbnail setup
  • Real-time broadcasting controls
  • Camera switching and stream management
  • Start from a Bluetooth remote or hardware volume key (iOS & Android)

Co-Streaming

Multi-broadcaster collaboration
(community only)
  • Invite co-hosts to join your stream
  • Co-host management and controls
  • Real-time multi-broadcaster stage
  • Audio/video controls for each broadcaster
  • AI-powered content moderation

Stream Viewing

Live and recorded stream playback
  • Real-time live stream viewing
  • Recorded stream playback for ended streams
  • Automatic thumbnail display from backend
  • Interactive viewer interface
  • Stream status and engagement features
  • Live Chat (community only)
  • Picture-in-Picture on leaving the player (iOS & Android)

Stream Management

Broadcast control and administration
  • Stream termination handling
  • Moderation and safety controls
  • Stream status management
  • Co-host permission management

Audience Targeting

Flexible content distribution
  • Community-specific broadcasting
  • Personal timeline streaming
  • Audience selection workflows

Co-hosting

Multi-host broadcasting
  • Invite co-hosts to join the stream
  • Real-time co-host participant streaming
  • Co-host permission controls
  • Collaborative stream management

Viewer Insights

Real-time audience visibility
  • Real-time viewer count display
  • Who’s watching list to see active viewers
  • Live audience engagement tracking
  • Viewer presence monitoring

Built-in Analytics

Automatic watch time tracking
  • Watch minutes collection for viewers
  • Pause/resume aware tracking
  • No additional implementation required

Playback Controls

Tap-to-reveal player controls
  • Tap-to-reveal controls overlay on mobile
  • Pause a live stream and resume at the live edge
  • Chat keeps updating while video is paused
  • 10-second skip on video posts and recorded livestreams

Livestream Analytics

Zero Implementation Required: Livestream analytics is automatically built into UIKit’s livestream viewing components. When users watch live or recorded streams through the Room Player Page, watch minutes are automatically tracked and synced to the backend—no additional code needed.
UIKit automatically handles all analytics tracking including:
  • Watch Session Creation: Sessions are created when viewers enter the room player page
  • Accurate Duration Tracking: Only counts actual watching time (paused/buffering time is excluded)
  • Role Transition Handling: Automatically stops tracking when a viewer becomes a co-host
  • Network Resilient Sync: Data is stored locally and synced with retry logic
For developers who want to understand the underlying analytics capabilities or implement custom tracking in non-UIKit applications, see the SDK Livestream Analytics documentation.

Platform Support

Livestream creation and co-host streaming on web is supported only on desktop view. On mobile web, only viewing livestreams is supported.

Implementation Guide

Live stream creation and broadcasting setupStream Creation components enable users to set up and broadcast live video content with comprehensive controls for targeting, customization, and real-time management.

Livestream Target Selection Page

The target selection page allows users to choose where their live stream will be broadcasted - either to a specific community or their personal timeline.

Features

Required Properties

Customization Options

Code Examples

Livestream Creation Page

The creation page enables users to set up their live stream by adding title, description, and thumbnail before starting the broadcast. Supports both solo broadcasting and co-streaming with invited co-hosts.
Optional Thumbnail Upload: Adding a thumbnail during stream creation is optional. The backend automatically generates a live thumbnail once the stream starts (liveThumbnailUrl), and a recorded thumbnail after the stream ends. If the creator does upload a cover image, it will take priority over the auto-generated thumbnails.

Features

Required Properties

Customization Options

Code Examples

Viewer Count Visibility

Enterprise customers can control whether the viewer count is shown to viewers on livestreams — a low count can read as an empty room, and a high count reads as social proof. Network admins pick a mode in the Console at the network level; the UIKit LiveViewerCountElement in the Livestream Player Page top bar applies the rule automatically.
The rule applies to viewers only. Hosts and co-hosts always see the actual count regardless of mode.

Modes

Propagation

UIKit reads the config once when the viewer joins the stream. Config changes made by an admin while a stream is live do not push to already-connected viewers — the new rule takes effect the next time each viewer opens the player page. A viewer who leaves and rejoins picks up the latest saved config. Two things do update in-place within a single mount:
  • Count ticks. Under Show above minimum, the pill appears or disappears as the count naturally crosses the threshold.
  • Role changes. A viewer promoted to co-host mid-stream immediately sees the actual count — no rejoin needed.

Fail-Open

If the SDK cannot read the config (network error, malformed payload, threshold out of range), the element treats the effective config as Always show — today’s behavior is never silently regressed to hiding the count.

Platform Support

Building a custom viewer surface instead of using UIKit? Read the config yourself via client.getLiveViewerCountConfig() — see the Live Viewer Count Config SDK guide.

Product Tagging

Product tagging in livestreams allows hosts and authorized co-hosts to showcase products to viewers during live broadcasts. Viewers can browse tagged products and open product links without leaving the stream.
Livestream with a pinned product overlay and tagged product count badge
Product tagging requires the Product Catalog to be configured and enabled for your network in the console. Available on iOS, Android, and Web only.

Tagging Phases

Product tagging is available across all livestream phases, with different access levels at each stage: Viewers can browse and open tagged products during all phases, including replay.

Product Pinning

A host or authorized co-host can pin one product at a time to display it as a prominent overlay card for all viewers.
  • Only one product can be pinned at a time — pinning a new product automatically replaces the previous pin
  • The pinned product always appears at the top of the product list
  • If the pinned product is removed from the tag list, it is automatically unpinned
  • When the livestream ends, the pin overlay is removed; the product list remains accessible to replay viewers

Co-host Product Permissions

The host controls whether a co-host can manage products. This permission can be toggled from the backstage after the co-host accepts an invite, or from the co-host name menu during the stream.
  • Enabled: Co-host can tag, remove, pin, and unpin products
  • Disabled: Co-host cannot see or interact with any product management controls
  • Permission changes apply immediately in real-time

Viewer Experience

  • The tag icon is only visible when at least one product is tagged
  • A count badge on the tag icon updates in real-time as products are added or removed
  • Tapping the tag icon opens a scrollable product list overlay
  • Tapping a product opens its link in an in-app browser — the livestream continues playing behind the browser

Customize the Product Tap

To route that tap somewhere else, override onLivestreamProductTagClick on AmityGlobalBehavior. The handler receives the tapped product on context.product.
Returning false on Android is not the same as doing nothing. It gives you UIKit’s built-in product web view, which leaves the stream playing in a floating window over it. iOS and Web return no value, so an override always replaces the default. On iOS, call super.onLivestreamProductTagClick(context:) where you still want the in-app browser.

Limits & Constraints

Components Used in Livestreams

Product tagging in livestreams uses two shared UIKit components. See Product Tagging Components for full parameter reference and code examples. The ProductTagSelectionComponent in livestream mode has a higher product limit (up to 20 total) and a different header label (“Add products”) compared to post mode. The ManageProductTagListComponent in playback render mode disables pin controls for the post-live replay experience.

Playback Controls

Playback Controls standardize the tap and pause behavior of the video player across the UIKit — for both video posts and livestreams. On mobile, tapping the player reveals a controls overlay (instead of toggling playback), pausing a live stream is a real state with a visible pause indicator, and recorded content offers ±10s skip.
Playback Controls apply to the livestream viewer and the shared video player used by video posts, media gallery, community video feeds, and recorded livestream playback. Live streams do not show skip controls.

Tap-to-Reveal Controls (Mobile)

On mobile clients, tapping the player surface reveals a controls overlay — it no longer toggles pause/play directly. Only the central pause/play button changes playback state.
Desktop web player: One-step click-to-toggle is retained. Clicking the video pauses or resumes it directly; the central play icon persists while paused, the central pause icon appears briefly when resuming. Hover-to-reveal, mute, and fullscreen behavior are unchanged.

Pause a Live Stream

Viewers can pause a live stream locally. The broadcast continues on the sender’s side; only the viewer’s playback is frozen. On mobile, pause/resume goes through the central button in the tap-to-reveal overlay. On desktop, a single click on the video surface toggles play/pause directly.
Live edge resolution: On resume, the player seeks to the HLS live-sync position when available, or to the end of the seekable range otherwise. No paused offset is tracked or restored.

10-Second Skip (Video Posts & Recorded Livestreams)

Viewers can jump backward or forward 10 seconds while watching a video post or a recorded livestream. On mobile, skip buttons appear in the controls overlay next to the central pause/play button. On desktop, they sit in the existing web-player control bar.

Flow — Pause and Resume to Live (Mobile)

Platform Support

Legend: ✅ Supported | 🚧 Planned | — Not applicable
On desktop web, playback controls are a UI refresh only — icons are updated and the skip amount changes from 15s to 10s. Click-to-toggle, hover-to-reveal, mute, and fullscreen behavior are unchanged.

Picture-in-Picture

Picture-in-Picture (PiP) keeps a livestream playing in a small floating window when the viewer leaves the player — by backgrounding the app or navigating to another page, such as opening a tagged product. Both live streams and recorded livestreams can float, and playback continues uninterrupted as the viewer moves away and back.
PiP uses each platform’s native system Picture-in-Picture window, so its size, position, styling, and gestures come from the operating system. iOS and Android only — no configuration is required to turn it on. Broadcasters (host, co-host, and backstage) are excluded so they stay in the app to keep streaming.

Window controls

Controls inside the floating window are drawn by the operating system. Android and iOS behave slightly differently: On a live stream there is nothing to seek or hold past the live edge, so the skip and pause controls have no effect there. Mute is not available in the window on either platform — the device volume controls serve that purpose.

Returning to the full player

  • Expanding the window returns to the full player with playback continuing — the stream is not restarted, and a recording keeps its position.
  • Live streams resume at the live edge rather than replaying the buffered part.
  • Chat reloads at the latest messages on return.
  • If the stream ends or is removed while floating, playback stops in the window and the reason (ended, terminated, or restricted) is shown when the viewer expands it.
  • Closing the window stops playback.

Setup

Minimum OS: Android 12 (API 31) or iOS 14.2 for full support. Below that, playback stops when the viewer leaves the player, as it did before PiP.
Viewers can turn Picture-in-Picture off in their device settings. When it is off, leaving the player simply stops playback with no error. The two platforms differ: the Android setting blocks every trigger including in-app navigation, while the iOS setting only blocks automatic entry on backgrounding. Neither platform exposes this setting to the app, so it cannot be detected in advance.

Platform Support

Legend: ✅ Supported | 🚧 Planned | — Not applicable
The floating window cannot be branded or restyled — it is rendered by the operating system, so its colors, placement, and gestures are outside UIKit’s control.

Posts & Media

Post Components Post creation and media management for livestream posts

Social Feeds

Feed Components Livestream post display and interaction in social feeds

Communities

Community Features Community-based livestream broadcasting and management

Users & Profiles

User Management User profile integration with livestream content

Comments & Reactions

Interaction Components Real-time engagement during live streams

Content Moderation

Moderation Tools Livestream content moderation and safety controls

Product Tagging Components

Commerce Integration Shared UIKit components for product tagging and management