Reklamy renderowane przez pakiet SDK

Reklamy z pakietu SDK kupującego korzystają z kreacji renderowanych przez Twój pakiet SDK.

Zasoby reklamowe aplikacji mobilnych wydawców, którzy zintegrują z aplikacją Twój adapter do określania stawek, mogą akceptować stawki w formacie reklamy renderowanej przez pakiet SDK kupującego. Sposób ich renderowania zależy od implementacji pakietu SDK i SDKRenderedAd, które przesyłasz w odpowiedzi na pytanie o stawkę.

Możesz przesłać stawkę zawierającą reklamę renderowaną 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 elementy są odfiltrowywane.

Wymagania

Reklamy z pakietu SDK kupującego są dostępne dla zatwierdzonych kupujących. Ten format wymaga dodatkowego wysiłku z Twojej strony i ze strony wydawcy. Skontaktuj się z menedżerem technicznym konta, aby skonfigurować konto pod kątem reklam z pakietu SDK kupującego. Następnie możesz wdrożyć adapter do określania stawek, który umożliwi Twojemu pakietowi SDK komunikację z pakietem SDK do reklam mobilnych Google. Wydawca musi zintegrować Twój pakiet SDK i adapter ze swoimi aplikacjami mobilnymi.

Zalecamy przesłanie kreacji do sprawdzenia przed uwzględnieniem ich w odpowiedzi na pytanie o stawkę. Jeśli w momencie ustalania stawki nie znasz typu kreacji, skontaktuj się z Technicznym menedżerem konta.

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

Pytanie o stawkę

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

Identyfikator pakietu SDK

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

Więcej informacji na ten temat znajdziesz w InstalledSdkdokumentacji.

Mapowanie jednostki reklamowej

Za pomocą pytania o stawkę możesz znaleźć mapowania jednostek reklamowych, które pasują do miejsca na reklamę w pytaniu o stawkę, korzystając z pola BidRequest.imp.ext.ad_unit_mapping.

Więcej informacji na ten temat znajdziesz w AdUnitMappingdokumentacji.

Bezpieczne sygnały

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

Więcej informacji o tym, jak bezpieczne sygnały są reprezentowane w BuyerGeneratedRequestDatadokumentacji.

Żądania testowe

Za pomocą pola BidRequest.test możesz sprawdzić, czy pytanie o stawkę jest testowe.

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 pytanie o stawkę

W odpowiedzi na pytanie o 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 w odpowiedzi na pytanie o stawkę musisz podać w polu BidResponse.seatbid.bid.ext.sdk_rendered_ad te informacje:

Identyfikator pakietu SDK

W polu id podaj identyfikator, który umożliwi pakietowi SDK renderowanie reklamy.

Identyfikator znajdziesz w BidRequest.app.ext.installed_sdk.

Zgłoszona reklama

Użyj BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad, aby podać kreację, która spełnia wymagania określone w BidRequest.imp.ext.creative_enforcement_settings i odzwierciedla dane renderowania reklamy. Należy wypełnić tylko jeden z tych atrybutów: html_snippet, video_url, video_vast_xml lub native_response.

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

Więcej informacji o zadeklarowanej reklamie znajdziesz w DeclaredAddokumentacji.

Renderowanie danych

Użyj pola BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data, aby podać dane, które pakiet SDK kupującego może wykorzystać do renderowania reklamy.

W przypadku stawek za umieszczenie reklamy z pakietu SDK kupującego w polu declared_ad musi być określona kreacja. Zadeklarowana reklama musi dokładnie reprezentować 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 używanie interfejsu API określania stawek w czasie rzeczywistym do przesyłania kreacji do sprawdzenia przed uwzględnieniem ich 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 stawki dla poszczególnych formatów reklam:

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:

Real-time Bidding API (zalecany)

Za pomocą metody buyers.creatives.create interfejsu API określania stawek w czasie rzeczywistym możesz przesyłać kreacje do sprawdzenia.

Interfejs API wymaga tylko 1 zgłoszenia na kreację i umożliwia sprawdzenie stanu weryfikacji kreacji.

Odpowiedź na pytanie o stawkę

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

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

Kreacje przesłane w odpowiedzi na pytanie o stawkę są sprawdzane dopiero po wielu pytaniach o stawkę. Wszystkie stawki złożone przed zakończeniem weryfikacji są odfiltrowywane z aukcji. Aby sprawdzić stan kreacji po rozpoczęciu 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.

Inne integracje pakietu SDK do reklam mobilnych Google

Kupujący w ramach usługi Authorized Buyers mają kilka opcji bezpośredniej integracji z pakietem SDK do reklam mobilnych Google, w tym mediację, adaptery do licytującychbezpieczne sygnały. Więcej informacji o tych punktach integracji lub o innych integracjach sygnałów lub przetwarzania na urządzeniu z pakietem SDK do reklam mobilnych Google, które mogą poprawić trafność reklam lub pomiarów, uzyskasz od swojego technicznego menedżera konta.