Pierwsze kroki z ADict Library
ADict.init() w klasie Application, a wszystkie moduły
zostaną automatycznie zainicjalizowane. Nie musisz wywoływać osobno init()
dla każdego modułu!
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
// Podstawowa inicjalizacja (wszystkie moduły włączone)
ADict.init(
context = this,
debuggable = BuildConfig.DEBUG
)
// Opcjonalnie: Debug overlay
ADict.ADS.DebugOverlay.install(
this,
DebugOverlay.Config(
startVisible = false,
startCollapsed = true,
showInRelease = false
)
)
// Opcjonalnie: HomeAds jako fallback
ADict.ADS.HomeAds.register(
zone = "default",
cfg = HomeAds.ZoneConfig(
banner = mapOf("default" to listOf(
HomeAds.Source.Layout(R.layout.homeads_banner)
))
),
strategy = HomeAds.Strategy.RANDOM
)
}
}
ADict.init(
context = this,
debuggable = BuildConfig.DEBUG,
initProviders = listOf(Providers.ADMOB, Providers.HOMEADS),
providerMediators = mapOf(
Providers.ADMOB to listOf("facebook", "unity")
),
// Kontrola które moduły zainicjalizować
initModules = mapOf(
ADict.Modules.ADS to true, // reklamy
ADict.Modules.SMART_TIMING to true,
ADict.Modules.SEGMENTS to true,
ADict.Modules.RATING_MANAGER to true,
ADict.Modules.ONBOARDING to true,
ADict.Modules.TRIGGERS to true,
ADict.Modules.ANALYTICS to true,
ADict.Modules.IN_APP to true, // In-App Billing
ADict.Modules.EVENT_BUS to true,
ADict.Modules.NOTIFICATIONS to false, // wyłączony
ADict.Modules.PERFORMANCE to false // wyłączony
),
initTimeoutMs = 15_000L
)
| Stała | Opis |
|---|---|
ADict.Modules.ADS | Moduł reklam (AdMob, HomeAds, mediacje) |
ADict.Modules.SMART_TIMING | Inteligentne momenty na reklamy |
ADict.Modules.SEGMENTS | Segmentacja użytkowników |
ADict.Modules.RATING_MANAGER | Zaawansowane zarządzanie ocenami |
ADict.Modules.ONBOARDING | System onboardingu |
ADict.Modules.TRIGGERS | Wyzwalacze zaangażowania |
ADict.Modules.ANALYTICS | Agregator analityki |
ADict.Modules.IN_APP | In-App Billing |
ADict.Modules.EVENT_BUS | EventBus oparty na Flow |
ADict.Modules.NOTIFICATIONS | Manager powiadomień lokalnych |
ADict.Modules.NETWORK | Monitor stanu sieci |
ADict.Modules.ACHIEVEMENTS | System osiągnięć |
ADict.Modules.SECURE_STORAGE | Bezpieczne przechowywanie danych |
ADict.Modules.PERFORMANCE | Monitoring wydajności |
ADict.Modules.FEEDBACK | Zbieranie feedbacku |
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! Można ładować reklamy
hideLoadingIndicator()
phase.results.forEach { (provider, result) ->
Log.d("ADict", "$provider: ${result.success}, ${result.tookMs}ms")
}
}
}
}
}
}
ADict.GDPR.requestAndShowIfRequired(
activity = this,
isUnderAge = false,
debug = if (BuildConfig.DEBUG) {
GDPR.DebugConfig(forceGeographyEea = true)
} else null
) { result ->
if (result.canRequestAds) {
loadAds()
}
}
<rip.nerd.adictlibrary.ui.AdViewContainer
android:id="@+id/bannerAd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:providerName="admob"
app:zoneName="default"
app:adSizeEnum="adaptive"
app:homeAdFallback="true" />
lifecycleScope.launch {
val shown = FullscreenRotator.showInterstitial(
activity = this@MainActivity,
zone = "default"
)
if (shown) {
Log.d("Ad", "Interstitial wyświetlony")
}
}