購入者 SDK 広告では、独自の SDK でレンダリングされたクリエイティブが使用されます。
購入者の入札アダプタをアプリに統合しているパブリッシャーのモバイルアプリ インベントリは、購入者 SDK でレンダリングされた広告フォーマットで入札を受け付けることができます。レンダリング方法は、SDK の実装と、入札レスポンスで送信する SDKRenderedAd に基づきます。
購入者 SDK でレンダリングされた広告または ad format supported by the Google Mobile Ads SDK でサポートされているその他の広告フォーマットを含む入札を行うことができますが、両方を含む bids は除外されます。
要件
購入者 SDK 広告は、承認された購入者が利用できます。メディエーション、 ビッダー アダプタ、 セキュア シグナルなど、 認定バイヤーを Google Mobile Ads SDK と直接統合できます。 パブリッシャーは、SDK とアダプタをモバイルアプリに統合する必要があります。
これらの統合ポイントについて詳しくは、テクニカル アカウント マネージャーにお問い合わせください。また、広告の関連性や測定を改善するために、Google Mobile Ads SDK とのオンデバイス シグナルや処理の統合についてご相談いただくこともできます。
クリエイティブを入札レスポンスに含める前に、審査のために送信することをおすすめします。
入札リクエストがこの広告フォーマットをサポートしている場合は、
SDK でレンダリングする広告をsdk_rendered_adフィールドを入札
レスポンスで設定して指定できます。
入札リクエスト
モバイルアプリ インベントリの入札リクエストには、パブリッシャーのアプリ内の SDK とアダプタに関する詳細情報が含まれています。これらの情報は、次のフィールドでレンダリングに使用できます。
- SDK ID
入札リクエストを使用して、入札レスポンスで指定する必要がある SDK ID を
BidRequest.app.ext.installed_sdk.idフィールドで確認できます。- 広告ユニットのマッピング
入札リクエストを使用して、入札スロットに一致する広告ユニットのマッピングを
BidRequest.imp.ext.ad_unit_mappingフィールドで確認できます。- セキュア シグナル
パブリッシャーは、ビッダーとセキュア シグナルを共有できます。これらのシグナルは
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.adomainBidResponse.seatbid.bid.ext.billing_idBidResponse.seatbid.bid.cridBidResponse.seatbid.bid.wBidResponse.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>", } }
クリエイティブを入札レスポンスに含める前に、リアルタイム ビッダー API を使用して審査のために 送信することをおすすめします。
OpenRTB ガイドで SdkRenderedAd フィールドの詳細をご確認ください。
入札レスポンスの例
広告フォーマットごとの入札レスポンスの例を次に示します。
バナー
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(推奨)
リアルタイム ビッダー API の
buyers.creatives.createメソッドを使用して、クリエイティブを審査のために 送信できます。この API では、クリエイティブごとに 1 回の送信のみが必要で、クリエイティブの審査ステータスを確認できます。
- 入札レスポンス
新しいクリエイティブを入札レスポンスで直接送信できます。
購入者 SDK クリエイティブを含む入札レスポンスを審査のために送信するには、
SdkRenderedAdオブジェクトのdeclared_adフィールドを使用する必要があります。入札レスポンスで送信されたクリエイティブは、多くの入札が行われた後にのみ審査されます。 審査が完了する前に行われた入札はすべてオークションから除外されます。 審査の開始後にクリエイティブのステータスを確認するには、リアルタイム ビッダー インターフェース または リアルタイム ビッダー API を使用します。
詳しくは、クリエイティブ ガイドについて 詳しくは、こちらをご覧ください。