Triggers
System wyzwalaczy zaangażowania
📖 Przegląd
Moduł Triggers reaguje na zdarzenia i milestony użytkownika,
umożliwiając automatyczne wykonanie akcji w odpowiednich momentach.
Szybki przykład
// Reakcja na przejście do tła
ADict.Triggers.on(Trigger.APP_BACKGROUNDED, delayMs = 5000L) {
showLocalNotification("Wróć do nas!")
}
// Milestone - 10 sesji
ADict.Triggers.onMilestone("10_sessions", 10) {
showCongratulations()
}
// Ręczne odpalenie
ADict.Triggers.fire(Trigger.CUSTOM, "purchase_completed")
📦 Predefiniowane triggery
| Trigger | Opis |
|---|---|
APP_BACKGROUNDED | Aplikacja przeszła do tła |
APP_FOREGROUNDED | Aplikacja wróciła na pierwszy plan |
INACTIVE_FOR | Nieaktywność przez określony czas |
MILESTONE_REACHED | Osiągnięto milestone |
SESSION_STARTED | Sesja rozpoczęta |
NTH_SESSION | N-ta sesja |
FIRST_TIME_TODAY | Pierwszy raz w dniu |
DAYS_SINCE_INSTALL | Po X dniach od instalacji |
CUSTOM | Custom event |
📝 Rejestracja triggerów
on(type, param?, delayMs?, once?, callback): String
Zarejestruj callback dla triggera. Zwraca ID do usunięcia.
onMilestone(name, count, callback): String
Zarejestruj milestone (odpali się raz po osiągnięciu count).
remove(key: String)
Usuń trigger.
removeAll(type: String)
Usuń wszystkie triggery danego typu.
clear()
Wyczyść wszystkie triggery.
Różne typy rejestracji
// Prosty trigger
ADict.Triggers.on(Trigger.APP_FOREGROUNDED) {
refreshData()
}
// Z opóźnieniem
ADict.Triggers.on(Trigger.APP_BACKGROUNDED, delayMs = 10_000L) {
showPushNotification("Nie zapomnij o nas!")
}
// Jednorazowy
ADict.Triggers.on(Trigger.SESSION_STARTED, once = true) {
showWelcomeBack()
}
// N-ta sesja
ADict.Triggers.on(Trigger.NTH_SESSION, param = "5") {
showRatingPrompt()
}
// Dni od instalacji
ADict.Triggers.on(Trigger.DAYS_SINCE_INSTALL, param = "7") {
showWeeklyOffer()
}
// Milestone
ADict.Triggers.onMilestone("purchases", 10) {
showLoyaltyReward()
}
🔥 Odpalanie triggerów
fire(type: String, param?: String)
Ręcznie odpal trigger.
incrementMilestone(name: String, by: Int = 1)
Inkrementuj milestone.
Odpalanie
// Custom event
ADict.Triggers.fire(Trigger.CUSTOM, "level_completed")
ADict.Triggers.fire(Trigger.CUSTOM, "purchase_made")
// Inkrementacja milestone
fun onPurchase() {
ADict.Triggers.incrementMilestone("purchases")
}
fun onArticleRead() {
ADict.Triggers.incrementMilestone("articles_read")
}
📡 Flow eventów
Obserwacja eventów
lifecycleScope.launch {
ADict.Triggers.events.collect { event ->
Log.d("Triggers", "Event: ${event.type}, param: ${event.param}")
// Centralna obsługa
when (event.type) {
Trigger.APP_FOREGROUNDED -> refreshUI()
Trigger.MILESTONE_REACHED -> when (event.param) {
"10_sessions" -> showBadge()
"first_purchase" -> sendAnalytics()
}
}
}
}
🔄 Auto-tracking lifecycle
install(application: Application)
Zainstaluj automatyczne śledzenie lifecycle (background/foreground, sesje).
💡 Auto-tracking: Po wywołaniu
install() automatycznie
śledzone są: APP_BACKGROUNDED, APP_FOREGROUNDED, SESSION_STARTED, NTH_SESSION,
FIRST_TIME_TODAY, DAYS_SINCE_INSTALL.