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.
.png?fit=max&auto=format&n=Whepx2DgDzjvHcd8&q=85&s=a8651e1aaa0802192f782616280d1ffc)
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)
(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
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
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
- Stream Creation
- Co-Streaming
- Stream Viewing
- Stream Management
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.Features
Required Properties
Customization Options
Code Examples
Navigation Behavior
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 UIKitLiveViewerCountElement 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
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.
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, overrideonLivestreamProductTagClick 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.
Related Components
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