📖 PrzeglądOverview

HomeAds to system wewnętrznych reklam używanych jako fallback gdy zewnętrzne sieci (np. AdMob) nie dostarczą reklamy. Możesz wyświetlać własne layouty, promować inne aplikacje lub pokazywać reklamy wewnętrzne.(np. AdMob) nie dostarczą reklamy. Możesz wyświetlać własne layouty, promować inne aplikacje lub pokazywać reklamy wewnętrzne.(e.g., AdMob) don't deliver an ad. You can display custom layouts, promote other apps, or show internal ads.HomeAds is an internal ad system used as fallback when external networks (e.g., AdMob) don't deliver an ad. You can display custom layouts, promote other apps, or show internal ads.

⚠️ Struktura: zone to nazwa strefy, a klucze w mapie to unit keys - biblioteka szuka najpierw konkretnego unit key, potem fallback do "default".

📝 Rejestracja

Pełna konfiguracjaFull Configuration
ADict.ADS.HomeAds.register(
    zone = "feed",                    // Nazwa STREFY
    cfg = HomeAds.ZoneConfig(
        banner = mapOf(
            "default" to listOf(      // Domyślny UNIT KEY
                HomeAds.Source.Layout(R.layout.homeads_banner_1),
                HomeAds.Source.Layout(R.layout.homeads_banner_2),
                HomeAds.Source.Factory { ctx -> MyCustomBanner(ctx) }
            ),
            "premium" to listOf(      // Inny UNIT KEY
                HomeAds.Source.Layout(R.layout.homeads_banner_premium)
            ),
            "sidebar" to listOf(
                HomeAds.Source.Layout(R.layout.homeads_banner_sidebar)
            )
        ),
        native = mapOf(
            "default" to listOf(
                HomeAds.Source.Layout(R.layout.homeads_native_card)
            )
        ),
        interstitial = mapOf(
            "default" to listOf(
                HomeAds.Source.Layout(R.layout.homeads_fullscreen)
            )
        ),
        rewarded = mapOf(
            "default" to listOf(
                HomeAds.RewardSource(
                    source = HomeAds.Source.Layout(R.layout.homeads_rewarded),
                    type = "coins",
                    amount = 10.0,
                    grantOnClose = true
                )
            )
        )
    ),
    strategy = HomeAds.Strategy.ROUND_ROBIN
)

// Wyczyszczenie konfiguracji
ADict.ADS.HomeAds.clear()

🎯 StrategieStrategies wyboru layoutu

StrategiaOpisDescription
FIRSTZawsze pierwszy layout z listy
RANDOMLosowy wybór z listyRandom selection from list
ROUND_ROBINRotacja po kolei

📐 Źródła (Source)Sources

Layout

HomeAds.Source.Layout(R.layout.my_homeads_banner)

Factory (dynamiczne)

HomeAds.Source.Factory { context ->
    MyCustomAdView(context).apply {
        setImage(R.drawable.promo)
        setClickListener { openPromo() }
    }
}

RewardSource (dla rewarded)

HomeAds.RewardSource(
    source = HomeAds.Source.Layout(R.layout.homeads_rewarded),
    type = "coins",           // typ nagrody
    amount = 10.0,            // ilość
    grantOnClose = true       // przyznaj po zamknięciu
)

🔧 Jak biblioteka wybiera layout

Wybór layoutuLayout Selection
// Użyje "default" (automatycznie)
HomeAds.pickBanner(context, zone = "feed", unitKey = "default")

// Użyje "premium"
HomeAds.pickBanner(context, zone = "feed", unitKey = "premium")

// Użyje "sidebar"
HomeAds.pickBanner(context, zone = "feed", unitKey = "sidebar")

// Jeśli unitKey nie istnieje - fallback do "default"
HomeAds.pickBanner(context, zone = "feed", unitKey = "nieistniejacy")
// → użyje "default"

📝 KonfiguracjaConfiguration JSONJSON Config (fallback)

Remote Config
{
  "zones": {
    "feed": {
      "providers": ["admob", "homeads"],
      "homeAdFallback": true
    }
  }
}

Gdy homeAdFallback: true, biblioteka automatycznie użyje HomeAdsWhen homeAdFallback: true, the library will automatically use HomeAds jako ostatniej próby gdy żaden zewnętrzny provider nie dostarczy reklamy.as a last resort when no external provider delivers an ad.