📋 Przegląd strategii

StrategiaOpisRotacja czasowa
round_robinRotacja po providerach w kolejności✅ Tak
priorityZawsze pierwszy, fallback do kolejnych❌ Nie
randomLosowy wybór przy każdym starcie❌ Nie
weightedLosowanie z wagami per format❌ Nie
auctionClient-side auction między bidderami❌ Nie

🔄 Round Robin

Rotacja po providerach z opcjonalną rotacją czasową.

Konfiguracja
{
  "zones": {
    "default": {
      "strategy": "round_robin",
      "providers": ["admob", "unity", "homeads"],
      "timeout": 20000,
      "homeAdFallback": true,
      "adunits": {
        "admob": { "banner": "ca-app-pub-xxx/111" },
        "unity": { "banner": "UNITY_BANNER" }
      }
    }
  }
}

Jak działa:

  1. Wybór startowego providera wg indeksu RR
  2. Jeśli brak fill → próba kolejnych (wrap-around)
  3. Ostatnia próba: HomeAds (jeśli homeAdFallback: true)
  4. Po sukcesie przesuwa indeks RR
  5. Po upływie timeout ms następuje zmiana providera

⬆️ Priority

Zawsze zaczyna od pierwszego providera, fallback do kolejnych.

Konfiguracja
{
  "zones": {
    "feed": {
      "strategy": "priority",
      "providers": ["admob", "unity", "homeads"],
      "homeAdFallback": true
    }
  }
}
💡 Uwaga: Brak rotacji czasowej - timeout jest ignorowany.

🎲 Random

Losowy wybór providera przy każdym starcie.

Konfiguracja
{
  "zones": {
    "promo": {
      "strategy": "random",
      "providers": ["admob", "applovin", "unity"]
    }
  }
}

⚖️ Weighted

Losowanie z wagami, osobno dla każdego formatu.

Konfiguracja
{
  "zones": {
    "storefront": {
      "strategy": "weighted",
      "providers": ["admob", "applovin", "unity"],
      "weights": {
        "banner": {
          "admob": 5,
          "applovin": 3,
          "unity": 2
        },
        "native": {
          "admob": 1,
          "applovin": 4,
          "unity": 1
        }
      }
    }
  }
}

Obliczanie prawdopodobieństwa:

P(admob) = 5 / (5+3+2) = 50%
P(applovin) = 3 / (5+3+2) = 30%
P(unity) = 2 / (5+3+2) = 20%

🏆 Auction

Client-side auction między zdefiniowanymi bidderami.

Konfiguracja
{
  "zones": {
    "premium": {
      "strategy": "auction",
      "providers": ["admob", "homeads"],
      "bidders": {
        "banner": ["criteo", "aps"],
        "interstitial": ["networkX", "criteo"],
        "rewarded": ["networkY"]
      },
      "timeout": 5000
    }
  }
}

Jak działa:

  1. Równoległe zapytania do wszystkich bidderów
  2. Zbieranie bidów w czasie timeout
  3. Wybór zwycięzcy (najwyższa stawka)
  4. Render przez zwycięski adapter
  5. Jeśli brak bidów → fallback do providers