Skip to main content
Module: LCKStreaming | Version: 1.0 | Platforms: Win64, Android (Quest)

Overview

LCKStreaming uses a device pairing flow for authentication. The user is shown a short code in-game which they enter on a web dashboard from any device (phone, PC, tablet). The SDK polls the backend until the code is confirmed, then fetches the user profile and streaming configuration. This approach avoids keyboard input in VR — the user pairs on a companion device.

Device Pairing Flow

Starting Login

Call StartLogin() to begin the pairing process. The SDK creates a device login attempt and broadcasts the pairing code.

Displaying the Pairing Code

When OnPairingCodeReceived fires, display the code prominently in your UI alongside the URL dashboard.liv.tv/pair.
You can also retrieve the current code at any time:
Design the pairing screen for VR readability — use large, high-contrast text. The user may need to read the code through a headset and type it on a phone.

Polling Mechanism

After the pairing code is issued, the SDK automatically polls the LIV backend every 2.5 seconds to check whether the user has entered the code. No manual polling is required. On success, the SDK:
  1. Stores the auth token internally
  2. Calls GetUserProfile() to fetch streaming configuration
  3. Broadcasts OnAuthenticated
  4. Broadcasts OnStreamingConfigReceived with the target type and subscription info
The pairing code has an expiration time. If the code expires before the user enters it, call StartLogin() again to generate a new code.

Canceling Login

If the user wants to cancel the pairing process:
This stops the polling timer and clears the current login attempt.

Profile and Subscription Info

After authentication, the OnStreamingConfigReceived delegate provides the user’s streaming target and subscription status.

Types

Querying State After Login

Refreshing Configuration

If the user changes their streaming target on the dashboard, refresh the config:

Logout

Call Logout() to clear the stored auth token and reset the subsystem state.
Logout() stops any active stream before clearing credentials. Ensure your UI handles the OnStreamStopped delegate if a stream is active at logout time.

LIV Hub Companion App (Android)

On Android/Quest, users can authenticate and manage streaming settings through the LIV Hub companion app instead of a web browser.
LaunchHub() and IsHubInstalled() are only functional on Android. On other platforms, IsHubInstalled() returns true (no separate hub dependency) and LaunchHub() is a no-op.

Error Handling

Authentication errors surface through the OnStreamError delegate and in LogLCKStreaming output. Common error scenarios:

Complete Authentication Example

Troubleshooting

  1. Verify bEnableStreaming is enabled in project settings
  2. Check network connectivity to dashboard.liv.tv
  3. Ensure the Tracking ID is configured and valid
  4. Check LogLCKStreaming for API error responses
  1. The user has not configured a streaming target at dashboard.liv.tv
  2. Call RefreshStreamingConfig(false) to re-fetch
  3. Verify HasStreamingTarget() and HasActiveSubscription() return values
  1. Check GetLastLogoutReason() for details
  2. The token may have been revoked server-side (e.g., 401/403 on config refresh)
  3. Network interruptions can cause auth state to reset
  1. Verify LIV Hub is installed with IsHubInstalled()
  2. The app package is tv.liv.controlcenter
  3. Fall back to standard pairing if Hub is unavailable

See Also

Streaming Overview

Architecture and prerequisites

Quick Start

Get streaming in 5 minutes