Format reklamy SDK kupującego

Reklamy korzystające z pakietu SDK kupującego używają kreacji renderowanych przez Twój własny pakiet SDK.

Zasoby reklamowe w aplikacjach mobilnych pochodzące od wydawców, którzy zintegrowali Twój adapter określania stawek z aplikacją, mogą akceptować stawki za pomocą formatu reklam renderowanego przez pakiet SDK kupującego. Sposób renderowania zależy od implementacji pakietu SDK oraz parametru SDKRenderedAd przesłanego w odpowiedzi na stawkę.

Możesz ustalić stawkę obejmującą reklamę wyrenderowaną przez pakiet SDK kupującego lub dowolny inny format reklamy obsługiwany przez pakiet SDK do reklam mobilnych Google, ale wszystkie stawki zawierające oba te formaty zostaną odfiltrowane.

Wymagania

Reklamy SDK kupujących są dostępne dla zatwierdzonych kupujących. Ten format wymaga dodatkowego wysiłku ze strony Ciebie i wydawcy. Aby skonfigurować konto na potrzeby reklam z pakietu SDK kupujących, skontaktuj się z technicznym menedżerem konta. Następnie możesz zaimplementować adapter określania stawek, który umożliwia komunikację pakietu SDK z pakietem SDK do reklam mobilnych Google. Wydawca musi zintegrować pakiet SDK i adapter ze swoimi aplikacjami mobilnymi.

Zalecamy przesłanie kreacji do sprawdzenia przed uwzględnieniem ich w odpowiedzi na stawkę. Jeśli nie znasz typu kreacji, który należy podać podczas ustalania stawki, skontaktuj się z technicznym menedżerem konta.

Jeśli pytanie o stawkę obsługuje ten format reklamy, możesz określić reklamę, która jest renderowana za pomocą Twojego pakietu SDK, ustawiając pole sdk_rendered_ad w odpowiedzi na stawkę.

Pytanie o stawkę

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

Identyfikator pakietu SDK

Przy użyciu pytania o stawkę możesz znaleźć parametr id, który musisz podać w odpowiedzi na stawkę za reklamę wyrenderowaną przez pakiet SDK kupującego.

Zobacz te pola:

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

Więcej informacji o komunikacie InstalledSdk znajdziesz w przewodnikach po protokołach Google i OpenRTB.

Mapowanie jednostki reklamowej

Możesz użyć pytania o stawkę, aby odczytywać mapowania jednostek reklamowych pasujące do boksu stawki.

Zobacz te pola:

  • Authorized Buyers: BidRequest.AdSlot.ad_unit_mapping
  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping

Więcej informacji o obiekcie AdUnitMapping znajdziesz w przewodnikach po protokołów Google i OpenRTB.

Bezpieczne sygnały

Zapoznaj się z obiektem Rozszerzony identyfikator, który jest standardowym rozszerzeniem służącym do przekazywania bezpiecznych sygnałów wybranych przez wydawcę.

Zobacz te pola:

  • Authorized Buyers: BidRequest.AdSlot.SecureSignal.data
  • OpenRTB: BidRequest.user.ext.eids.uids.id

Więcej informacji o obiekcie Extended Id znajdziesz w przewodnikach po protokołów Google i OpenRTB.

Żądania testowe

W polu Pytanie testowe możesz się dowiedzieć, czy pytanie o stawkę jest testem.

Zobacz te pola:

  • Authorized Buyers: BidRequest.is_test
  • OpenRTB: BidRequest.test

Więcej informacji o polu Test znajdziesz w przewodnikach po protokołach Google i OpenRTB.

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ę

Stawka miejsca

W obiekcie BidResponse.seatbid.bid wymagane są te pola:

  • Authorized Buyers:

    • BidResponse.Ad.click_through_url
    • BidResponse.Ad.AdSlot.billing_id
    • BidResponse.Ad.buyer_creative_id
    • BidResponse.Ad.width
    • BidResponse.Ad.height
  • OpenRTB:

    • BidResponse.seatbid.bid.adomain
    • BidResponse.seatbid.bid.cid
    • BidResponse.seatbid.bid.crid
    • BidResponse.seatbid.bid.w
    • BidResponse.seatbid.bid.h

Więcej informacji o komunikacie SeatBid znajdziesz w przewodnikach po protokołach Google i OpenRTB.

Odpowiedź na stawkę musi zawierać pole SdkRenderedAd z tym elementem:

Identyfikator pakietu SDK

W polu id podaj identyfikator pakietu SDK do renderowania reklamy.

Znajdziesz go w tych polach w pytaniu o stawkę:

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

Więcej informacji o komunikacie InstalledSdk znajdziesz w przewodnikach po protokołach Google i OpenRTB.

Zadeklarowana reklama

Aby podać kreację, która spełnia wymagania CreativeEnforcementSettings pytania o stawkę i reprezentuje dane dotyczące renderowania reklamy, użyj pola declared_ad. W przypadku innych formatów reklam należy podać tylko jeden z tych formatów: html_snippet, video_url lub video_vast_xml. W przypadku formatu reklamy natywnej należy podać tylko wartość native_response.

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

Renderowanie danych

W polu rendering_data podaj dane, które pakiet SDK kupującego może wykorzystać do renderowania reklamy.

  • Authorized Buyers: BidResponse.ad.sdk_rendered_ad.rendering_data
  • OpenRTB: BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data

Stawki za reklamę z pakietu SDK kupującego muszą określać kreację w polu declared_ad. Zadeklarowana reklama musi dokładnie odzwierciedlać parametr 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, by przed przesłaniem kreacji do sprawdzenia uwzględnić je w odpowiedzi na stawkę za pomocą interfejsu API określania stawek w czasie rzeczywistym.

Więcej informacji o polach SdkRenderedAd znajdziesz w przewodnikach po protokołach Google i OpenRTB.

Przykładowa odpowiedź na stawkę

Oto przykładowe odpowiedzi na stawkę 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

Kreacje są sprawdzane przed rozpoczęciem wyświetlania, by mieć pewność, że są zgodne z naszymi zasadami i ustawieniami wydawcy.

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

Interfejs API określania stawek w czasie rzeczywistym (zalecany)

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

Interfejs API wymaga tylko jednego przesłania każdej kreacji i umożliwia sprawdzanie jej stanu.

Odpowiedź na stawkę

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

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

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

Więcej informacji znajdziesz w przewodniku po kreacjach.