Pierwsze kroki z ADict LibraryFirst steps with 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!Just call ADict.init() in your Application class and all modules will be automatically initialized. No need to call init() separately for each module!
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łaConstant | OpisDescription |
|---|---|
ADict.Modules.ADS | Moduł reklamAds module (AdMob, HomeAds, mediacje)Ads module (AdMob, HomeAds, mediations) |
ADict.Modules.SMART_TIMING | Inteligentne momentySmart timing na reklamySmart ad timing |
ADict.Modules.SEGMENTS | SegmentacjaSegmentation użytkownikówUser segmentation |
ADict.Modules.RATING_MANAGER | Zaawansowane zarządzanie ocenamiAdvanced rating management |
ADict.Modules.ONBOARDING | System onboardinguOnboarding system |
ADict.Modules.TRIGGERS | WyzwalaczeTriggers zaangażowaniaEngagement triggers |
ADict.Modules.ANALYTICS | Agregator analitykiAnalytics aggregator |
ADict.Modules.IN_APP | In-App BillingBilling |
ADict.Modules.EVENT_BUS | EventBus oparty na FlowFlow-based EventBus |
ADict.Modules.NOTIFICATIONS | Manager powiadomień lokalnychLocal notification manager |
ADict.Modules.NETWORK | Monitor stanu sieciNetwork status monitor |
ADict.Modules.ACHIEVEMENTS | System osiągnięćAchievements system |
ADict.Modules.SECURE_STORAGE | Bezpieczne przechowywanie danychSecure data storage |
ADict.Modules.PERFORMANCE | Monitoring wydajnościPerformance monitoring |
ADict.Modules.FEEDBACK | Zbieranie feedbackuFeedback collection |
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")
}
}
Strefy, strategie, cap/pacingZones, strategies, cap/pacing