구매자 SDK 광고 형식

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

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

구매자 SDK 렌더링 광고 또는 Google 모바일 광고 SDK에서 지원하는 기타 광고 형식을 포함하는 입찰가를 제출할 수 있지만, 두 형식을 모두 포함하는 입찰가는 필터링됩니다.

요구사항

구매자 SDK 광고는 승인된 구매자가 사용할 수 있습니다. 이 형식은 사용자와 게시자의 추가 노력이 필요합니다. 기술계정 관리자에게 문의하여 구매자 SDK 광고용 계정을 구성하세요. 그런 다음 SDK가 Google 모바일 광고 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 중 하나만 채워야 합니다.

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를 사용하여 검토를 위해 광고 소재를 제출하는 것이 좋습니다.

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의 정책 및 게시자 설정을 준수하는지 검토됩니다.

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

Real-time Bidding API (권장)

Real-time Bidding API의 buyers.creatives.create 메서드를 사용하여 검토를 위해 광고 소재를 제출할 수 있습니다.

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

입찰 응답

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

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

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

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