Firework Android SDK is a library that provides a set of programming interfaces that enable developers to integrate video feeds from Firework - a shoppable video and Livestream platform - into an Android app.
Requirements
Firework Android SDK is compatible with the following:
Android min SDK 21
Kotlin/Java code base
Gradle build system
Obtain your Client ID
To integrate Firework Android SDK into your application, you have to register your application with the Firework platform and get a unique client ID. To get the client ID:
Provide your application's package name to the business team/engineering team you are coordinating with.
You will receive via email the client ID and then follow the setup steps below under Firework IDs to include both in your app.
The client ID is used to authenticate your application with the server. Authentication will fail if you use a wrong client ID.
How to integrate Firework Android SDK?
The library packages are accessible through the MavenCentral repositories. You can check for the latest stable released version using the MavenCentral tag on top of this doc.
Make sure your project is using the mavenCentral repository in your project build.gradle or build.gradle.kts repositories block:
repositories {... mavenCentral()}
repositories {...mavenCentral()}
Add these dependencies based on your requirements:
Firework SDK: The main dependency of Firework Android SDK is required for the library initialization and video and livestream features.
Single Host (high latency) Livestream: If you are planning to use a single host Livestream from an external source.
Multi-Host (low latency) Livestream: If you are planning to use Livestream with multiple hosts.
Image Loader: The SDK requires an image loader that can be one of the predefined Glide or Picasso or your custom implementation of the ImageLoader interface using your solution.
Glide Image Loader: A Glide implementation of the SDK ImageLoader interface.
Picasso Image Loader: A Picasso implementation of the SDK ImageLoader interface.
def fireworkSdkVersion ="latest_firework_sdk_version"implementation 'com.firework:sdk:$fireworkSdkVersion'// Only for single host (Optional)implementation 'com.firework.external.livestream:singleHostPlayer:$fireworkSdkVersion'// Only for multi host (Optional)implementation 'com.firework.external.livestream:multiHostPlayer:$fireworkSdkVersion'// Glide (Optional)implementation 'com.firework.external.imageloading:glide:$fireworkSdkVersion'// Picasso (Optional)implementation 'com.firework.external.imageloading:picasso:$fireworkSdkVersion'
val fireworkSdkVersion ="latest_firework_sdk_version"implementation("com.firework:sdk:$fireworkSdkVersion")// Only for single host (Optional)implementation("com.firework.external.livestream:singleHostPlayer:$fireworkSdkVersion")// Only for multi host (Optional)implementation("com.firework.external.livestream:multiHostPlayer:$fireworkSdkVersion")// Glide (optional)implementation("com.firework.external.imageloading:glide:$fireworkSdkVersion")// Picasso (optional)implementation("com.firework.external.imageloading:picasso:$fireworkSdkVersion")
SDK Initialization
Call this code in your custom application class onCreate method to initialize the Firework SDK:
import com.firework.sdk.FireworkSdkimport com.firework.sdk.FireworkSdkConfigimport com.firework.sdk.FireworkInitErrorimport com.firework.imageloading.glide.GlideImageLoaderFactoryclassMyApp : Application() {overridefunonCreate() {super.onCreate()// build Firework Android SDK configurationval config = FireworkSdkConfig.Builder(context =this) .clientId(FW_CLIENT_ID) // Client OAUTH Id .userId("My app User ID") // Optional field to set the User ID in your eco-system. .imageLoader(GlideImageLoaderFactory.createInstance(context = this)) // Glide, Picasso, or your ImageLoader implementation
.enableCache(true) // Enable or disable video players cache, enabled by default .maxCacheSizeBytes(MAX_CACHE_SIZE_BYTES) // Max cache size used by video players, 25MB by default .muteOnLaunch(true) // Mute videos on lauch .addLivestreamPlayerInitializer(SingleHostLivestreamPlayerInitializer()) // For single-host livestream use .addLivestreamPlayerInitializer(MultiHostLivestreamPlayerInitializer()) // For multi-host livestream use .build()// initialize Firework Android SDK FireworkSdk.init( fireworkSdkConfig = config, onSuccess = {// Successful initialization }, onError = { error ->when (error) {is FireworkInitError.InitializationError -> {// Handle initialization error }is FireworkInitError.AlreadyInitializedError -> {// The SDK is already initialized } } }, ) }}
Using BoM (Bill of Material)
Since the Firework company is developing multiple SDKs for different purposes and they may lead to dependency conflicts, we introduced BoM solution which can be used when your app depends on more than one Firework SDKs or like to use the Firework opensource libraries.
In this solution, your project's gradle file should only define the platform dependency with the latest BoM version:
def fireworkSdkVersion ="latest_firework_bom_version"implementation platform'com.firework:firework-bom:$fireworkBomVersion'// no version is neededimplementation `com.firework:sdk`implementation `com.firework.external.imageloading:glide`implementation `com.firework.external.livestream:singleHostPlayer`
val fireworkBomVersion ="latest_firework_bom_version"implementation(platform("com.firework:firework-bom:$fireworkBomVersion"))// no version is neededimplementation("com.firework:sdk")implementation("com.firework.external.imageloading:glide")implementation("com.firework.external.livestream:singleHostPlayer")
Setup your project
We suggest you set the android:largeHeap="true" in your application tag at the AndroidManifest.xml file.