Android SDK
Kotlin · Android 8+ · Jetpack Compose
Overview
The Avafli Engagement SDK lets you add daily-entry sweepstakes and prize experiences to your app with a single configuration call. The SDK automatically opens the experience on the first app-open of each day, captures the user, and claims their daily entries — no scheduling or session logic on your side. You customize your logo, prize image, and brand color from the Avafli dashboard; everything else is managed server-side.
Requirements
| Android | 8.0+ (API 26) |
| Kotlin | 2.1+ |
| Jetpack Compose | BOM 2024.12.01+ |
| Publisher API Key | Contact info@avafli.com |
Installation
Gradle (via JitPack)
Add JitPack to your project-level settings.gradle.kts:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}Add the dependency to your app-level build.gradle.kts:
dependencies {
implementation("com.github.AVAFLI:avafli_android_sdk:v3.1.3")
}Quick Start
The simplest integration requires just two calls:
import com.avafli.avaflisdk.Avafli
import com.avafli.avaflisdk.AvafliConfiguration
import com.avafli.avaflisdk.AvafliOptions
import com.avafli.avaflisdk.AvafliUser
val config = AvafliConfiguration(
context = applicationContext,
apiKey = "YOUR_API_KEY", // debug builds: use your avafli_test_ sandbox key
user = AvafliUser(
id = "user_123", // only id is required — pass whatever identity you have
firstName = "Jane",
lastName = "Doe",
email = "jane@example.com" // include it when you have it — pre-fills & locks the capture form
),
// Nobody signed in? use user = AvafliUser.GUEST
options = AvafliOptions(
debugLogging = false, // true while integrating
enablePushReminders = true // streak reminders via YOUR Firebase project
)
)
Avafli.configure(config)
// Done — the experience auto-opens once per day.
// Push reminders: forward your FCM token: Avafli.onNewToken(token)
The experience opens itself on the first app-open of each day — there is no manual launch API. Presentation timing, the daily cadence, and dismissal are fully managed by the SDK.
Push Notifications
Drive re-engagement with daily reminders. Forward your FCM token to the SDK:
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
super.onNewToken(token)
Avafli.onNewToken(token)
}
}Upload your FCM service account key via the Avafli Dashboard to enable push notifications.
Account deletion in your app
If your app has its own delete-account flow, call optOut() from it so the user's Avafli data is erased along with their account. Users can also delete their data themselves at any time from the Privacy Policy screen inside the experience — no integration required.
// From your delete-account flow (optOut is a suspend function)
lifecycleScope.launch { Avafli.optOut() }Testing? Your dashboard also shows a avafli_test_ sandbox key. Use it in debug builds: identical behavior against the production backend, but users and entries land in an isolated sandbox — your testers can never enter your real giveaway.
SDK Features
Full API Reference & Code Examples
View the complete documentation on GitHub including API reference, code examples, and advanced configuration.