📖 PrzeglądOverview

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.Just call ADict.init() in your Application class and all modules will be automatically initialized.ADict is the main singleton object of the library, providing access to all modules and the initialization function. Just call ADict.init() in your Application class and all modules will be automatically initialized.

Struktura obiektu ADictADict Object Structure
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łyMain function initializing the library and all modules.

ParametrParameterTypTypeDomyślnieDefaultOpisDescription
contextContext-Kontekst aplikacjiApplication context
debuggableBoolean-Tryb debug (logi, testowe reklamy)Debug mode (logs, test ads)
initProvidersList<String>[ADMOB]Providery reklam do initAd providers to init
providerMediatorsMap{}Mediatorzy per providerMediators per provider
initModulesMap<String, Boolean>ALL_ENABLEDKtóre moduły włączyćWhich modules to enable
initTimeoutMsLong12000Timeout inicjalizacjiInitialization timeout
scopeCoroutineScopeMainScope dla coroutinesScope for coroutines
Podstawowa inicjalizacjaBasic Initialization
class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()

        ADict.init(
            context = this,
            debuggable = BuildConfig.DEBUG
        )
    }
}
Zaawansowana inicjalizacjaAdvanced Initialization
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łówModule Constants

Obiekt ADict.Modules zawiera stałe nazw modułówcontains module name constants:

StałaConstantWartośćValueOpisDescription
ADS"ads"Moduł reklamAds module
SMART_TIMING"smart_timing"Inteligentne momentySmart timing
SEGMENTS"segments"SegmentacjaSegmentation
RATING_MANAGER"rating_manager"Zarządzanie ocenamiRating management
ONBOARDING"onboarding"Onboarding
TRIGGERS"triggers"WyzwalaczeTriggers
ANALYTICS"analytics"AnalitykaAnalytics
IN_APP"in_app"BillingBilling
EVENT_BUS"event_bus"EventBus
NOTIFICATIONS"notifications"PowiadomieniaNotifications
NETWORK"network"Monitor sieciNetwork monitor
ACHIEVEMENTS"achievements"OsiągnięciaAchievements
SECURE_STORAGE"secure_storage"Szyfrowane daneEncrypted data
PERFORMANCE"performance"WydajnośćPerformance
FEEDBACK"feedback"Feedback

PresetyPresets

📡 Obserwacja inicjalizacjiObserving Initialization

Nasłuchiwanie na stan inicjalizacjiListening for initialization state
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")
                    }
                }
            }
        }
    }
}