구매자 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는 광고 소재당 제출을 한 번만 요구하며 광고 소재 검토 상태를 확인할 수 있습니다.

입찰 응답

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

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

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

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