Format reklamy SDK kupującego

Reklamy w pakiecie SDK kupującego korzystają z kreacji renderowanych przez Twój własny pakiet SDK.

Zasoby reklamowe aplikacji mobilnych od wydawców, którzy zintegrowali w swojej aplikacji adapter ustalania stawek, mogą akceptować stawki z formatem reklamy renderowanej przez pakiet SDK kupującego. Sposób ich renderowania zależy od implementacji pakietu SDK i SDKRenderedAd przesłanych w odpowiedzi na zapytanie o kwotę stawki.

Możesz ustawić stawkę, która obejmuje reklamę renderowaną przez pakiet SDK kupującego lub inny format reklamy obsługiwany przez pakiet SDK do reklam mobilnych Google, ale stawki zawierające oba te elementy są filtrowane.

Wymagania

Reklamy w pakiecie SDK dla kupujących są dostępne dla zatwierdzonych kupujących. Ten format wymaga dodatkowych działań od Ciebie i wydawcy. Aby skonfigurować konto na potrzeby reklam z pakietu SDK dla kupujących, skontaktuj się z menedżerem ds. technicznych kont. Następnie możesz zaimplementować adapter ustalania stawek, który umożliwi Twojemu pakietowi SDK komunikowanie się z pakietem SDK do reklam mobilnych Google. Wydawca musi zintegrować pakiet SDK i adapter z aplikacjami mobilnymi.

Zalecamy przesłanie kreacji do sprawdzenia, zanim uwzględnisz je w odpowiedzi na pytanie o stawkę. Jeśli nie wiesz, jaki typ kreacji chcesz użyć, skontaktuj się z menedżerem technicznym konta.

Jeśli żądanie stawki obsługuje ten format reklamy, możesz określić reklamę, która będzie renderowana za pomocą pakietu SDK. W tym celu ustaw pole sdk_rendered_adodpowiedzi na żądanie stawki.

Pytanie o stawkę

Żądania o stawkę dotyczące zasobów reklamowych aplikacji mobilnych zawierają szczegółowe informacje o pakietach SDK i adapterach w aplikacji wydawcy, których możesz używać do renderowania w tych polach:

Identyfikator pakietu SDK

Na podstawie żądania stawki możesz znaleźć identyfikator pakietu SDK, który musisz podać w odpowiedzi na stawkę w polu BidRequest.app.ext.installed_sdk.id.

Więcej informacji znajdziesz w dokumentacji referencyjnej InstalledSdk.

Mapowanie jednostek reklamowych

Za pomocą żądania stawki możesz znaleźć mapowania jednostek reklamowych, które pasują do slotu stawki z polem BidRequest.imp.ext.ad_unit_mapping.

Więcej informacji znajdziesz w dokumentacji referencyjnej AdUnitMapping.

Bezpieczne sygnały

Wydawcy mogą udostępniać licytującym bezpieczne sygnały. Znajdziesz je w sekcji BidRequest.imp.ext.buyer_generated_request_data.data.

Więcej informacji o sposobie przedstawiania bezpiecznych sygnałów znajdziesz w dokumentacji referencyjnej BuyerGeneratedRequestData.

Prośby o testy

Aby sprawdzić, czy żądanie stawki jest testem, możesz użyć pola BidRequest.test.

Więcej informacji o tym polu znajdziesz w BidRequestdokumentacji referencyjnej.

Przykładowe pytanie o stawkę

id: "<bid_request_id>"
imp {
  id: "1"
  banner {
    w: 320
    h: 50
    ...
  }
...
  adx_ext {
   ...
    ad_unit_mapping {
      keyvals {
        key: "key_1"
        value: "value_1"
      }
      keyvals {
        key: "key_2"
        value: "value_2"
      }
      ...
      format: FORMAT_BANNER
    }
  }
}
app {
 ...
  adx_ext {
    installed_sdk {
      id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
      sdk_version {
        major: 1
        minor: 2
        micro: 30
      }
      adapter_version {
        major: 1
        minor: 2
        micro: 3000
      }
    }
    installed_sdk {
    ...
    }
    ...
  }
}
device {
  ...
}
user {
  ...
  }
  adx_ext {
    eids {
      source: "com.google.ads.mediation.partner.PartnerMediationAdapter"
      uids {
        id: "<partner_signal_string>"
      }
    }
  }
}
at: 1
tmax: 1000
cur: "USD"
test: 1
...
adx_ext {
  google_query_id: "<query_string>"
  ...
}

Odpowiedź na stawkę

W odpowiedzi na stawkę wymagane są te pola:

  • BidResponse.seatbid.bid.adomain
  • BidResponse.seatbid.bid.ext.billing_id
  • BidResponse.seatbid.bid.crid
  • BidResponse.seatbid.bid.w
  • BidResponse.seatbid.bid.h

Dodatkowo odpowiedź na zapytanie o stawkę musi zawierać te informacje: BidResponse.seatbid.bid.ext.sdk_rendered_ad

Identyfikator pakietu SDK

W polu id podaj identyfikator pakietu SDK, aby renderować reklamę.

Identyfikator znajdziesz w BidRequest.app.ext.installed_sdk.

Zadeklarowana reklama

Użyj BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad, aby przesłać kreację, która spełnia wymagania podane w BidRequest.imp.ext.creative_enforcement_settings i reprezentuje dane renderowania reklamy. Wypełnij tylko jedną z tych właściwości: html_snippet, video_url, video_vast_xml lub native_response.

Jeśli nie wypełnisz pola declared_ad, nie będziemy mogli sprawdzić kreacji, a wszystkie stawki z tą kreacją zostaną odfiltrowane z aukcji.

Więcej informacji o deklarowanej reklamie znajdziesz w dokumentacji DeclaredAd.

Renderowanie danych

Użyj pola BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data, aby podać dane, których pakiet SDK kupującego będzie używać do renderowania reklamy.

Stawki na potrzeby umieszczania reklamy z pakietu SDK kupującego muszą zawierać w polu declared_ad kreację. Zadeklarowana reklama musi dokładnie odzwierciedlać rendering_data.

Oto przykładowy obiekt SdkRenderedAd:

{
  "id": "1234567",
  "rendering_data": "\xd58...,\xd4\x89\xd\xf9",
  "declared_ad": {
    "html_snippet": "<iframe src=\"https://example.com/ads?id=123&
      curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
  }
}

Zalecamy korzystanie z interfejsu API określania stawek w czasie rzeczywistym, aby przesyłać kreacje do sprawdzenia, zanim uwzględnisz je w odpowiedzi na pytanie o stawkę.

Więcej informacji o polach SdkRenderedAd znajdziesz w przewodniku OpenRTB.

Przykładowa odpowiedź na pytanie o stawkę

Oto przykładowe odpowiedzi na oferty dla każdego formatu reklamy:

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 99
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 320
    h: 50
    burl: "https://abc.com/billing?td=fn&win_price=${AUCTION_PRICE}"
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          html_snippet: "<!doctype html> <html> ... </html>"
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
      billing_id: 141763360450
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Pełnoekranowa

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 400
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 412
    h: 775
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          video_vast_xml: "<VAST version=\"2.0\"><Ad>...</Ad></VAST>"
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Wideo z nagrodą

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 400
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 412
    h: 775
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          video_vast_xml: "<VAST version=\"2.0\"><Ad>...</Ad></VAST>"
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Natywna

id: "<bid_request_id>"
seatbid {
  bid {
    id: "<bidder_generated_response_id>"
    impid: "1"
    price: 400
    adomain: "https://play.google.com/store/apps/details?id=com.test.app"
    cid: "<billing_id>"
    crid: "<creative_id>"
    w: 1200
    h: 627
    adx_ext {
      sdk_rendered_ad {
        id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
        rendering_data: "<rendering_data_string>"
        declared_ad {
          click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
          native_response {
            ...
            assets {
              id: 1
              title {
                text: ""
              }
            }
            assets {
              id: 2
              data {
                value: "<some_string>"
              }
            }
            assets {
              id: 3
              data {
                value: "View now"
              }
            }
            assets {
              id: 4
              img {
                url: "<valid_image_url>"
                w: 1200
                h: 627
                type: 3
              }
            }
            assets {
              id: 5
              img {
                url: "<valid_image_url>"
                w: 100
                h: 100
                type: 1
              }
            }
            assets {
              id: 6
              data {
                value: ""
              }
            }
            assets {
              id: 7
              data {
                value: "<some_string>"
              }
            }
            link {
              url: "<destination_link>"
            }
          }
        }
      }
      event_notification_token {
        payload: "<payload_string>"
      }
    }
  }
}
bidid: "<bidder_generated_response_id>"
cur: "USD"

Sprawdzanie kreacji

Zanim kreacje zaczną się wyświetlać, sprawdzamy je pod kątem zgodności z naszymi zasadami i ustawieniami wydawcy.

Kreacje możesz przesłać do sprawdzenia na 2 sposoby:

Interfejs Real-time Bidding API (zalecany)

Aby przesłać kreacje do weryfikacji, możesz użyć metody buyers.creatives.create interfejsu API określania stawek w czasie rzeczywistym.

Interfejs API wymaga tylko 1 przesłania na kreację i pozwala sprawdzić stan sprawdzania kreacji.

Odpowiedź na stawkę

Nowe kreacje możesz przesyłać bezpośrednio w odpowiedzi na stawkę.

Aby przesłać odpowiedź na zapytanie o stawkę z kreacją z pakietu SDK kupującego do sprawdzenia, musisz użyć pola declared_ad obiektu SdkRenderedAd.

Kreacje przesłane w odpowiedzi na pytanie o stawkę są sprawdzane dopiero po wielu stawkach. Wszystkie stawki podane przed zakończeniem weryfikacji są odfiltrowywane z aukcji. Aby sprawdzić stan kreacji po rozpoczęciu sprawdzania, możesz użyć interfejsu ustalania stawek w czasie rzeczywistym lub interfejsu API ustalania stawek w czasie rzeczywistym.

Więcej informacji znajdziesz w przewodniku po kreacjach.