📖 PrzeglądOverview
Moduł Triggers reaguje na zdarzenia i milestony użytkownika,
umożliwiając automatyczne wykonanie akcji w odpowiednich momentach.The Triggers module reacts to user events and milestones, enabling automatic action execution at the right moments.
// 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 | OpisDescription |
|---|---|
APP_BACKGROUNDED | Aplikacja przeszła do tłaApp went to background |
APP_FOREGROUNDED | Aplikacja wróciła na pierwszy planApp returned to foreground |
INACTIVE_FOR | Nieaktywność przez określony czasInactivity for a specified time |
MILESTONE_REACHED | Osiągnięto milestoneMilestone reached |
SESSION_STARTED | Sesja rozpoczętaSession started |
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ówTrigger Registration
on(type, param?, delayMs?, once?, callback): String
Zarejestruj callback dla triggera. ZwracaReturns ID do usunięcia.
onMilestone(name, count, callback): String
Zarejestruj milestone (odpali się raz po osiągnięciu count).Register a milestone (fires once when count is reached).
remove(key: String)
Usuń trigger.Remove trigger.
removeAll(type: String)
Usuń wszystkie triggery danego typu.Remove all triggers of a given type.
clear()
Wyczyść wszystkie triggery.Clear all triggers.
// 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.Manually fire trigger.
incrementMilestone(name: String, by: Int = 1)
Inkrementuj milestone.
// 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
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).Install automatic lifecycle tracking (background/foreground, sessions).
install() automatycznie
śledzone są:After calling install(), the following are tracked automatically: APP_BACKGROUNDED, APP_FOREGROUNDED, SESSION_STARTED, NTH_SESSION,
FIRST_TIME_TODAY, DAYS_SINCE_INSTALL.