Comment on page
Getting Started
Firework Android SDK v6 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.
Firework Android SDK v6 is compatible with the following:
- Android min SDK 21.
- Kotlin/Java code base.
- Gradle build system.
To integrate Firework Android SDK v6 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 via 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 the wrong client ID.
The library packages are accessible through MavenCentral repositories. You can check for the latest stable released version using the MavenCentral tag on top of this doc.
Add this to your
build.gradle
or build.gradle.kts
repositories:Gradle
Kotlin
repositories {
...
mavenCentral()
}
repositories {
...
mavenCentral()
}
Add these dependencies based on your requirements:
- Firework Sdk: The main dependency of Firework Android SDK v6 is required for the library initialization and video feed view features.
- Single Host Livestream: If you are planning to use a single host Livestream from an external source.
- Multi-Host 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 own solution.
Gradle
Kotlin
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")
Call this code in your custom application class
onCreate
method to initialize the Firework SDK:Kotlin
Java
import com.firework.sdk.FireworkSdk
import com.firework.sdk.FireworkSdkConfig
import com.firework.sdk.FireworkInitError
import com.firework.imageloading.glide.GlideImageLoaderFactory
class ExampleApp : Application() {
override fun onCreate() {
super.onCreate()
// build Firework Android SDK configuration
val config = FireworkSdkConfig.Builder(this)
.checksumRequired(false)
.clientId(FW_CLIENT_ID) // Client OAUTH Id
.userId("example app user ID") // User Id in your eco-system
.imageLoader(GlideImageLoaderFactory.createInstance()) // 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 v6
FireworkSdk.init(
fireworkSdkConfig = config,
onSuccess = {
// Initialization was successful
},
onError = { error ->
when (error) {
is FireworkInitError.InitializationError -> {
// Handle initialization error
}
}
},
)
}
}
If the host app sets the ImageLoader parameter in the SDK with respect to the host app's choice of Image loading solution, then it does not handle the image loading itself.
There are 3 options in this case:
- 1.FwImageLoader: The image loader library of the SDK that is built in and does not need to set anything in this case
- 2.Glide:
imageLoader(GlideImageLoaderFactory.createInstance())
- 3.Picasso:
imageLoader(PicassoImageLoaderFactory.createInstance())
import android.app.Application;
import com.firework.imageloading.glide.GlideImageLoaderFactory;
import com.firework.sdk.FireworkSdk;
import com.firework.sdk.FireworkSdkConfig;
import kotlin.Unit;
public class ExampleApp extends Application{
@Override
public void onCreate() {
super.onCreate();
// build Firework Android SDK configuration
FireworkSdkConfig config = new FireworkSdkConfig
.Builder(this)
.checksumRequired(false)
.clientId(FW_CLIENT_ID) // Client OAUTH Id
.userId("example app user ID") // User Id in your eco-system
.imageLoader(GlideImageLoaderFactory.INSTANCE.createInstance()) // 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();
FireworkSdk.init(
config,
() -> {
// Initialization was successful
return Unit.INSTANCE;
},
fireworkInitError -> {
// Handle initialization error
return Unit.INSTANCE;
}
);
}
}
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:
implementation(platform("androidx.compose:compose-bom:2023.07.04"))
and stop adding other Firework dependencies versions:
implementation("com.firework:sdk")
implementation("com.firework.external.imageloading:glide")
implementation("com.firework.external.livestream:singleHostPlayer")
Here is the complete list of dependencies defined on the latest release of BoM:
Dependency | Version |
---|---|
com.firework:sdk | 6.3.4 |
com.firework.external.imageloading:glide | 6.3.4 |
com.firework.external.imageloading:picasso | 6.3.4 |
com.firework.external.livestream:multiHostPlayer | 6.3.4 |
com.firework.external.livestream:singleHostPlayer | 6.3.4 |
com.firework.android.exoplayer:exoplayer-core | 2.16.1.6 |
com.firework.android.exoplayer:exoplayer-hls | 2.16.1.6 |
com.firework.android.exoplayer:exoplayer-ui | 2.16.1.6 |
com.firework.android.exoplayer:extension-ima | 2.16.1.6 |
com.firework.core.network:http | 7.0.0 |
com.firework.core.network:web-socket | 7.0.0 |
com.firework.core:event-bus | 7.0.0 |
com.firework.core:gql | 7.0.1 |
com.firework.core:image-loader | 7.0.0 |
com.firework.core:json | 7.0.0 |
com.firework.core:logger | 7.0.0 |
com.firework.core:motion-sensor | 7.0.0 |
com.firework.core:player | 7.0.1 |
com.firework.core:session-manager | 7.0.0 |
com.firework.core:storage | 7.0.0 |
com.firework.core:utility | 7.0.0 |
com.firework.core:vast-parser | 7.0.0 |
Last modified 4mo ago