📖 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

TriggerOpis
APP_BACKGROUNDEDAplikacja przeszła do tła
APP_FOREGROUNDEDAplikacja wróciła na pierwszy plan
INACTIVE_FORNieaktywność przez określony czas
MILESTONE_REACHEDOsiągnięto milestone
SESSION_STARTEDSesja rozpoczęta
NTH_SESSIONN-ta sesja
FIRST_TIME_TODAYPierwszy raz w dniu
DAYS_SINCE_INSTALLPo X dniach od instalacji
CUSTOMCustom 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.