구매자 SDK 광고 형식

구매자 SDK 광고는 자체 SDK에서 렌더링한 광고 소재를 사용합니다.

입찰 어댑터를 앱에 통합하는 게시자의 모바일 앱 인벤토리는 구매자 SDK 렌더링 광고 형식으로 입찰을 수락할 수 있습니다. 렌더링 방법은 SDK 구현 및 입찰 응답에서 제출하는 SDKRenderedAd에 따라 다릅니다.

구매자 SDK 렌더링 광고 또는 Google 모바일 광고 SDK에서 지원하는 다른 광고 형식을 포함하여 입찰할 수 있지만 둘 다 포함하는 입찰은 필터링됩니다.

요구사항

구매자 SDK 광고는 승인된 구매자가 사용할 수 있습니다. 이 형식에는 개발자와 게시자의 추가 작업이 필요합니다. 기술계정 관리자에게 문의하여 구매자 SDK 광고의 계정을 구성하세요. 그런 다음 SDK가 Google 모바일 광고 SDK와 통신할 수 있도록 입찰 어댑터를 구현하면 됩니다. 게시자는 SDK와 어댑터를 모바일 앱에 통합해야 합니다.

입찰 응답에 포함하기 전에 검토를 위해 광고 소재를 제출하는 것이 좋습니다. 입찰 시 광고 소재 유형을 모르면 기술계정 관리자에게 문의하세요.

입찰 요청이 이 광고 형식을 지원하는 경우 입찰 응답sdk_rendered_ad 필드를 설정하여 SDK로 렌더링되는 광고를 지정할 수 있습니다.

입찰 요청

모바일 앱 인벤토리의 입찰 요청에는 다음 필드에서 렌더링에 사용할 수 있는 게시자 앱의 SDK 및 어댑터에 관한 세부정보가 포함됩니다.

SDK ID

입찰 요청을 사용하여 구매자 SDK 렌더링 광고의 입찰 응답에 제공해야 하는 id를 찾을 수 있습니다.

다음 필드를 참고하세요.

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

InstalledSdk 메시지에 대한 자세한 내용은 GoogleOpenRTB 프로토콜 가이드를 참조하세요.

광고 단위 매핑

입찰 요청을 사용하여 입찰 슬롯과 일치하는 광고 단위 매핑을 읽을 수 있습니다.

다음 필드를 참고하세요.

  • Authorized Buyers: BidRequest.AdSlot.ad_unit_mapping
  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping

AdUnitMapping 객체에 대한 자세한 내용은 GoogleOpenRTB 프로토콜 가이드를 참조하세요.

보안 처리된 신호

게시자가 선택한 보안 신호를 전달하는 데 사용되는 표준 확장 프로그램인 확장 ID 객체를 읽어야 합니다.

다음 필드를 참고하세요.

  • Authorized Buyers: BidRequest.AdSlot.SecureSignal.data
  • OpenRTB: BidRequest.user.ext.eids.uids.id

Extended Id 객체에 대한 자세한 내용은 GoogleOpenRTB 프로토콜 가이드를 참조하세요.

테스트 요청

'테스트 요청' 필드를 읽으면 입찰 요청이 테스트인지 파악할 수 있습니다.

다음 필드를 참고하세요.

  • Authorized Buyers: BidRequest.is_test
  • OpenRTB: BidRequest.test

Test 필드에 대한 자세한 내용은 GoogleOpenRTB 프로토콜 가이드를 참조하세요.

샘플 입찰 요청

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 객체에는 다음 필드가 필요합니다.

  • Authorized Buyers의 경우:

    • 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 메시지에 대한 자세한 내용은 GoogleOpenRTB 프로토콜 가이드를 참조하세요.

입찰 응답에는 다음과 함께 SdkRenderedAd가 포함되어야 합니다.

SDK ID

id 필드를 사용하여 SDK가 광고를 렌더링할 ID를 제공합니다.

입찰 요청에서 다음 필드를 통해 ID를 찾을 수 있습니다.

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

InstalledSdk 메시지에 대한 자세한 내용은 GoogleOpenRTB 프로토콜 가이드를 참조하세요.

선언된 광고

declared_ad 필드를 사용하여 입찰 요청의 CreativeEnforcementSettings 요구사항을 충족하고 광고의 렌더링 데이터를 나타내는 광고 소재를 제공하세요. 네이티브가 아닌 광고 형식의 경우 html_snippet, video_url 또는 video_vast_xml 중 하나만 표시해야 합니다. 네이티브 광고 형식의 경우 native_response만 표시되어야 합니다.

declared_ad를 채우지 않으면 광고 소재를 검토할 수 없으며 광고 소재가 포함된 모든 입찰이 입찰에서 필터링됩니다.

데이터 렌더링

rendering_data 필드를 사용하여 구매자 SDK에서 광고를 렌더링하는 데 사용할 데이터를 제공합니다.

  • Authorized Buyers: 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>",
  }
}

입찰 응답에 광고 소재를 포함하기 전에 Real-timeBidding API를 사용하여 검토를 위해 광고 소재를 제출하는 것이 좋습니다.

SdkRenderedAd 필드에 대한 자세한 내용은 GoogleOpenRTB 프로토콜 가이드를 참조하세요.

샘플 입찰 응답

다음은 각 광고 형식에 대한 샘플 입찰 응답입니다.

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 정책 및 게시자 설정을 준수하는지 확인하기 위해 검토를 거칩니다.

다음은 검토를 위해 광고 소재를 제출하는 두 가지 방법입니다.

실시간 입찰 API (권장)

실시간 입찰 API의 buyers.creatives.create 메서드를 사용하여 검토를 위해 광고 소재를 제출할 수 있습니다.

API를 사용하면 광고 소재당 한 번만 제출하면 되며, 이를 통해 광고 소재의 검토 상태를 확인할 수 있습니다.

입찰 응답

입찰 응답에서 새 광고 소재를 직접 제출할 수 있습니다.

SdkRenderedAd 객체의 declared_ad 필드를 사용하여 검토를 위해 구매자 SDK 광고 소재와 함께 입찰 응답을 제출해야 합니다.

입찰 응답에 제출된 광고 소재는 여러 번 입찰한 후에만 검토됩니다. 검토가 완료되기 전에 접수된 모든 입찰은 입찰에서 필터링됩니다. 검토가 시작된 후 실시간 입찰 인터페이스 또는 실시간 입찰 API를 사용하여 광고 소재의 상태를 확인할 수 있습니다.

자세한 내용은 광고 소재 가이드를 참고하세요.