購入者 SDK 広告では、独自の SDK によってレンダリングされたクリエイティブが使用されます。
入札アダプタをアプリに統合しているパブリッシャーのモバイルアプリ広告枠は、購入者の SDK でレンダリングされた広告フォーマットでの入札を受け付けることができます。レンダリング方法は、SDK の実装と、入札レスポンスで送信する SDKRenderedAd
に基づいています。
購入者 SDK でレンダリングされた広告または Google Mobile Ads SDK でサポートされているその他の広告フォーマットを含む入札を行うことができますが、両方を含む入札はフィルタされます。
要件
購入者 SDK 広告は、承認済みの購入者が利用できます。この形式では、クリエイターとパブリッシャーの双方が追加の作業を行う必要があります。購入者 SDK 広告用にアカウントを設定するには、テクニカル アカウント マネージャーにお問い合わせください。次に、SDK が Google Mobile Ads SDK と通信できるように 入札アダプタを実装します。パブリッシャーは、SDK とアダプタをモバイルアプリに統合する必要があります。
入札レスポンスにクリエイティブを含める前に、クリエイティブを審査に送信することをおすすめします。入札時にクリエイティブの種類がわからない場合は、テクニカル アカウント マネージャーにお問い合わせください。
入札リクエストがこの広告フォーマットをサポートしている場合は、入札レスポンスで sdk_rendered_ad
フィールドを設定して、SDK でレンダリングされる広告を指定できます。
入札リクエスト
モバイルアプリ広告枠の入札リクエストには、レンダリングに使用できるパブリッシャーのアプリの SDK とアダプタに関する詳細情報が次のフィールドに含まれます。
- SDK ID
入札リクエストを使用して、入札レスポンスの
BidRequest.app.ext.installed_sdk.id
フィールドで指定する必要がある SDK ID を確認できます。詳しくは、
InstalledSdk
リファレンス ドキュメントをご覧ください。- 広告ユニットのマッピング
入札リクエストを使用して、
BidRequest.imp.ext.ad_unit_mapping
フィールドで入札スロットに一致する広告ユニットのマッピングを検索できます。詳しくは、
AdUnitMapping
リファレンス ドキュメントをご覧ください。- セキュア シグナル
パブリッシャーは、ビッダーとセキュア シグナルを共有できます。これらは
BidRequest.imp.ext.buyer_generated_request_data.data
にあります。セキュア シグナルの表現方法について詳しくは、
BuyerGeneratedRequestData
リファレンス ドキュメントをご覧ください。- テスト リクエスト
BidRequest.test
フィールドを使用して、入札リクエストがテストかどうかを確認できます。このフィールドの詳細については、
BidRequest
リファレンス ドキュメントをご覧ください。
入札リクエストの例
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>"
...
}
入札レスポンス
入札レスポンスには、次のフィールドが必要です。
BidResponse.seatbid.bid.adomain
BidResponse.seatbid.bid.ext.billing_id
BidResponse.seatbid.bid.crid
BidResponse.seatbid.bid.w
BidResponse.seatbid.bid.h
また、入札レスポンスの BidResponse.seatbid.bid.ext.sdk_rendered_ad
には次のように入力する必要があります。
- SDK ID
id
フィールドを使用して、広告をレンダリングする SDK の ID を指定します。ID は
BidRequest.app.ext.installed_sdk
にあります。- 宣言された広告
BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad
を使用して、BidRequest.imp.ext.creative_enforcement_settings
の要件を満たし、広告のレンダリング データを代表するクリエイティブを提供します。html_snippet
、video_url
、video_vast_xml
、native_response
のいずれか 1 つだけを入力する必要があります。declared_ad
に値を設定しないと、クリエイティブを審査できず、そのクリエイティブを含むすべての入札がオークションから除外されます。宣言型広告について詳しくは、
DeclaredAd
リファレンス ドキュメントをご覧ください。- レンダリング データ
BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
フィールドを使用して、購入者 SDK が広告のレンダリングに使用するデータを指定します。購入者 SDK 広告を掲載する入札では、
declared_ad
フィールドにクリエイティブを指定する必要があります。申告された広告は、rendering_data
を正確に表す必要があります。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>", } }
入札レスポンスにクリエイティブを含める前に、Real-time Bidding API を使用してクリエイティブを審査に送信することをおすすめします。
SdkRenderedAd
フィールドの詳細については、OpenRTB ガイドをご覧ください。
入札レスポンスの例
各広告フォーマットの入札レスポンスの例を次に示します。
バナー
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"
インタースティシャル
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"
動画リワード
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"
ネイティブ
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"
クリエイティブの審査
クリエイティブは配信前に審査され、Google のポリシーとパブリッシャーの設定に準拠していることが確認されます。
クリエイティブを審査に送信する方法は次の 2 つです。
- Real-time Bidding API(推奨)
Real-time Bidding API の
buyers.creatives.create
メソッドを使用して、クリエイティブを審査のために送信できます。この API では、クリエイティブごとに 1 回だけ送信すればよく、クリエイティブの審査ステータスを確認できます。
- 入札レスポンス
新しいクリエイティブは、入札レスポンスで直接送信できます。
審査のために購入者の SDK クリエイティブを含む入札レスポンスを送信するには、
SdkRenderedAd
オブジェクトのdeclared_ad
フィールドを使用する必要があります。入札レスポンスで送信されたクリエイティブは、多くの入札が行われた後にのみ審査されます。審査が完了する前に行われた入札はすべて、オークションから除外されます。審査の開始後にクリエイティブのステータスを確認するには、リアルタイム入札インターフェースまたは リアルタイム入札 API を使用します。
詳しくは、クリエイティブ ガイドをご覧ください。