Перейти к основному содержимому
Версия: 4.2.0

S2S биддинг

Server-to-server (S2S) биддинг позволяет серверу вашего приложения проводить аукцион с BidMachine вместо его проведения на клиенте. Клиентский SDK предоставляет bid-токен, ваш сервер использует его для запроса ставок, а выигравший bid payload передаётся обратно клиенту для загрузки рекламы.

Поток

  1. Получите bid-токен — клиентский SDK генерирует непрозрачный токен, кодирующий сигналы устройства/сессии.
  2. Проведите серверный аукцион — сервер вашего приложения отправляет токен на конечную точку аукциона BidMachine и получает payload с bid-ответом.
  3. Загрузите рекламу — клиент передаёт bid payload в load(activity, bidPayload) вместо вызова load().

Шаг 1 — Получение bid-токена

API клиентского токена в разработке

Публичный генератор bid-токенов находится в разработке и будет добавлен в одном из будущих релизов. Тем временем получайте bid-токен внешним способом (например, через вашу серверную интеграцию BidMachine) и используйте часть с load(activity, bidPayload) ниже, которая доступна уже сегодня.

Шаг 2 — Серверный аукцион

Сервер вашего приложения отправляет bid-токен на конечную точку S2S-аукциона BidMachine. Ответ содержит строку bid payload, которую вы передаёте обратно клиенту. Подробности о конечной точке см. в документации BidMachine S2S API.

Шаг 3 — Загрузка с bid payload

Передайте bid payload в load(activity, bidPayload) на любом рекламном юните. Он использует те же колбэки listener, что и обычный вызов load().

val banner = BannerAd(activity, sdk, placementId = "YOUR_PLACEMENT_ID", size = BannerAdSize.Banner)
banner.listener = object : BannerListener {
override fun onAdLoaded(adInfo: AdInfo) {
adContainer.addView(banner)
}
override fun onAdLoadFailed(adInfo: AdInfo?, error: BidMachineError) {
Log.e("BidMachine", "Banner load failed: ${error.message}")
}
override fun onAdShown(adInfo: AdInfo) {}
override fun onAdShowFailed(adInfo: AdInfo?, error: BidMachineError) {}
override fun onAdClicked(adInfo: AdInfo) {}
override fun onAdExpired(adInfo: AdInfo) {}
override fun onAdRevenuePaid(adInfo: AdInfo) {}
}

banner.load(activity, bidPayload)

Interstitial

val ad = InterstitialAd(sdk, placementId = "YOUR_PLACEMENT_ID")
ad.listener = object : InterstitialListener {
override fun onAdLoaded(adInfo: AdInfo) {
ad.show(activity)
}
override fun onAdLoadFailed(adInfo: AdInfo?, error: BidMachineError) {
Log.e("BidMachine", "Interstitial load failed: ${error.message}")
}
override fun onAdShowFailed(adInfo: AdInfo?, error: BidMachineError) {}
override fun onAdShown(adInfo: AdInfo) {}
override fun onAdClicked(adInfo: AdInfo) {}
override fun onAdClosed(adInfo: AdInfo) {}
override fun onAdExpired(adInfo: AdInfo) {}
override fun onAdRevenuePaid(adInfo: AdInfo) {}
}

ad.load(activity, bidPayload)

Rewarded

val ad = RewardedAd(sdk, placementId = "YOUR_PLACEMENT_ID")
ad.listener = object : RewardedListener {
override fun onAdLoaded(adInfo: AdInfo) {
ad.show(activity)
}
override fun onAdLoadFailed(adInfo: AdInfo?, error: BidMachineError) {
Log.e("BidMachine", "Rewarded load failed: ${error.message}")
}
override fun onAdShowFailed(adInfo: AdInfo?, error: BidMachineError) {}
override fun onAdShown(adInfo: AdInfo) {}
override fun onAdClicked(adInfo: AdInfo) {}
override fun onAdClosed(adInfo: AdInfo) {}
override fun onAdRewarded(adInfo: AdInfo, reward: Reward?) {}
override fun onAdExpired(adInfo: AdInfo) {}
override fun onAdRevenuePaid(adInfo: AdInfo) {}
}

ad.load(activity, bidPayload)