ADict (Core)
Główny punkt wejścia do biblioteki
📖 Przegląd
ADict to główny obiekt singleton biblioteki, zapewniający dostęp do wszystkich
modułów oraz funkcję inicjalizacji. Wystarczy wywołać ADict.init() w klasie
Application, a wszystkie moduły zostaną automatycznie zainicjalizowane.
Struktura obiektu ADict
object ADict {
// Moduły Core
val ADS: ADS // Moduł reklam
val Config: Config // Remote Config
val GDPR: GDPR // Zgody użytkownika
val InApp: InApp // In-App Billing
val ReviewTrap // Prośba o ocenę
// Moduły zaangażowania
val Features // Feature flags
val SmartTiming // Inteligentne momenty na reklamy
val Segments // Segmentacja użytkowników
val RatingManager // Zarządzanie ocenami
val Onboarding // System onboardingu
val Triggers // Wyzwalacze zaangażowania
// Moduły pomocnicze
val Analytics // Agregator analityki
val EventBus // System eventów
val DeepLinks // Deep linking
val Paywall // Kreator paywall'i
val Notifications // Powiadomienia lokalne
val Network // Monitor sieci
val Achievements // System osiągnięć
val SecureStorage // Szyfrowane przechowywanie
val Performance // Monitor wydajności
val Feedback // Zbieranie opinii
// Stan
val initPhase: StateFlow<InitPhase> // Stan inicjalizacji
val RC: RemoteConfigRepo? // Skrót do Remote Config
fun init(...) // Główna inicjalizacja
}
🚀 Inicjalizacja
init(context, debuggable, initProviders, providerMediators, initModules, initTimeoutMs, scope)
Główna funkcja inicjalizująca bibliotekę i wszystkie moduły.
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
context | Context | - | Kontekst aplikacji |
debuggable | Boolean | - | Tryb debug (logi, testowe reklamy) |
initProviders | List<String> | [ADMOB] | Providery reklam do init |
providerMediators | Map | {} | Mediatorzy per provider |
initModules | Map<String, Boolean> | ALL_ENABLED | Które moduły włączyć |
initTimeoutMs | Long | 12000 | Timeout inicjalizacji |
scope | CoroutineScope | Main | Scope dla coroutines |
Podstawowa inicjalizacja
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
ADict.init(
context = this,
debuggable = BuildConfig.DEBUG
)
}
}
Zaawansowana inicjalizacja
ADict.init(
context = this,
debuggable = BuildConfig.DEBUG,
initProviders = listOf(Providers.ADMOB, Providers.HOMEADS),
providerMediators = mapOf(
Providers.ADMOB to listOf("facebook", "unity")
),
initModules = mapOf(
ADict.Modules.ADS to true,
ADict.Modules.SMART_TIMING to true,
ADict.Modules.SEGMENTS to true,
ADict.Modules.ANALYTICS to true,
ADict.Modules.IN_APP to true,
ADict.Modules.NOTIFICATIONS to false, // wyłączony
ADict.Modules.PERFORMANCE to false // wyłączony
),
initTimeoutMs = 15_000L
)
📦 Stałe modułów
Obiekt ADict.Modules zawiera stałe nazw modułów:
| Stała | Wartość | Opis |
|---|---|---|
ADS | "ads" | Moduł reklam |
SMART_TIMING | "smart_timing" | Inteligentne momenty |
SEGMENTS | "segments" | Segmentacja |
RATING_MANAGER | "rating_manager" | Zarządzanie ocenami |
ONBOARDING | "onboarding" | Onboarding |
TRIGGERS | "triggers" | Wyzwalacze |
ANALYTICS | "analytics" | Analityka |
IN_APP | "in_app" | Billing |
EVENT_BUS | "event_bus" | EventBus |
NOTIFICATIONS | "notifications" | Powiadomienia |
NETWORK | "network" | Monitor sieci |
ACHIEVEMENTS | "achievements" | Osiągnięcia |
SECURE_STORAGE | "secure_storage" | Szyfrowane dane |
PERFORMANCE | "performance" | Wydajność |
FEEDBACK | "feedback" | Feedback |
Presety
ADict.Modules.ALL_ENABLED- Wszystkie moduły włączone (domyślnie)ADict.Modules.ALL_DISABLED- Wszystkie moduły wyłączone
📡 Obserwacja inicjalizacji
Nasłuchiwanie na stan inicjalizacji
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
ADict.initPhase.collect { phase ->
when (phase) {
is InitPhase.NotStarted -> {
// Jeszcze nie rozpoczęto
}
is InitPhase.InProgress -> {
// Trwa inicjalizacja
showLoadingIndicator()
}
is InitPhase.Done -> {
// Gotowe!
hideLoadingIndicator()
phase.results.forEach { (provider, result) ->
Log.d("ADict", "$provider: success=${result.success}, took=${result.tookMs}ms")
}
}
}
}
}
}