購入者 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

入札リクエストを使用して、購入者の SDK でレンダリングされた広告の入札レスポンスで指定する必要がある id を見つけることができます。

次のフィールドをご覧ください。

  • 認定バイヤー: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

InstalledSdk メッセージについて詳しくは、Google および OpenRTB プロトコル ガイドをご覧ください。

広告ユニットのマッピング

入札リクエストを使用して、入札スロットに一致する広告ユニットのマッピングを読み取ることができます。

次のフィールドをご覧ください。

  • 認定バイヤー: BidRequest.AdSlot.ad_unit_mapping
  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping

AdUnitMapping オブジェクトについて詳しくは、GoogleOpenRTB プロトコル ガイドをご覧ください。

セキュア シグナル

拡張 ID オブジェクトを読み取る必要があります。これは、パブリッシャーが選択したセキュア シグナルを渡すために使用される標準の拡張機能です。

次のフィールドをご覧ください。

  • 認定バイヤー: BidRequest.AdSlot.SecureSignal.data
  • OpenRTB: BidRequest.user.ext.eids.uids.id

Extended Id オブジェクトについて詳しくは、GoogleOpenRTB プロトコル ガイドをご覧ください。

テスト リクエスト

[テスト リクエスト] フィールドを確認すると、入札リクエストがテストかどうかを確認できます。

次のフィールドをご覧ください。

  • 認定バイヤー: BidRequest.is_test
  • OpenRTB: BidRequest.test

Test フィールドについて詳しくは、Google および OpenRTB プロトコル ガイドをご覧ください。

入札リクエストの例

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 オブジェクトには、次のフィールドが必要です。

  • 認定バイヤー:

    • 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

SeatBid メッセージについて詳しくは、Google および OpenRTB プロトコル ガイドをご覧ください。

入札レスポンスには、次のものを含む SdkRenderedAd を含める必要があります。

SDK ID

id フィールドを使用して、SDK が広告をレンダリングするための ID を指定します。

ID は入札リクエストの以下のフィールドで確認できます。

  • 認定バイヤー: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

InstalledSdk メッセージについて詳しくは、Google および OpenRTB プロトコル ガイドをご覧ください。

宣言した広告

入札リクエストの CreativeEnforcementSettings 要件を満たし、広告のレンダリング データを表すクリエイティブを指定する場合は、declared_ad フィールドを使用します。ネイティブ以外の広告フォーマットでは、html_snippetvideo_urlvideo_vast_xml のいずれか 1 つのみを表示する必要があります。ネイティブ広告フォーマットの場合は、native_response のみを使用する必要があります。

declared_ad に値が入力されないと、クリエイティブは審査できず、そのクリエイティブの入札はすべてオークションから除外されます。

データのレンダリング

rendering_data フィールドを使って、購入者の SDK が広告のレンダリングに使用するデータを指定します。

  • 認定バイヤー: BidResponse.ad.sdk_rendered_ad.rendering_data
  • OpenRTB: BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data

購入者の 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>",
  }
}

入札レスポンスに含める前に、Realtime Bidding API を使用して審査のためにクリエイティブを送信することをおすすめします。

SdkRenderedAd フィールドの詳細については、Google プロトコル ガイドと 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 つのクリエイティブにつき 1 つの送信のみが必要となります。この API を使用すると、クリエイティブの審査状況を確認できます。

入札レスポンス

新しいクリエイティブは、入札レスポンスで直接送信できます。

審査を受けるために購入者の SDK クリエイティブを含む入札レスポンスを送信するには、SdkRenderedAd オブジェクトの declared_ad フィールドを使用する必要があります。

入札レスポンスで送信されたクリエイティブは、多くの入札が行われた後にのみ審査されます。審査が完了する前に行われた入札はすべてオークションから除外されます。 審査開始後にクリエイティブのステータスを確認するには、リアルタイム ビッダー インターフェースまたはリアルタイム ビッダー API を使用します。

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