購入者 SDK 広告フォーマット

購入者 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_snippetvideo_urlvideo_vast_xmlnative_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 を使用します。

詳しくは、クリエイティブ ガイドをご覧ください。