รูปแบบโฆษณา SDK ของผู้ซื้อ

โฆษณา SDK ของผู้ซื้อใช้ครีเอทีฟโฆษณาที่แสดงผลโดย SDK ของคุณเอง

พื้นที่โฆษณาในแอปบนอุปกรณ์เคลื่อนที่จากผู้เผยแพร่โฆษณาที่ผสานรวม อะแดปเตอร์การเสนอราคาไว้ในแอปจะยอมรับราคาเสนอได้โดยใช้รูปแบบโฆษณาที่แสดงผลจาก SDK ของผู้ซื้อ การแสดงผลจะขึ้นอยู่กับการใช้งาน SDK และ SDKRenderedAd ที่คุณส่งในการตอบกลับราคาเสนอ

คุณสามารถเสนอราคาซึ่งรวมโฆษณาที่แสดงผลจาก SDK ของผู้ซื้อหรือรูปแบบโฆษณาอื่นๆ ที่ Google Mobile Ads SDK รองรับ แต่ระบบจะกรองการเสนอราคาที่มีทั้ง 2 รูปแบบออก

ข้อกำหนด

โฆษณา SDK ของผู้ซื้อพร้อมให้บริการแก่ผู้ซื้อที่ได้รับอนุมัติ รูปแบบนี้ต้องใช้ความพยายามเพิ่มเติมจากคุณและผู้เผยแพร่โฆษณา ติดต่อผู้จัดการลูกค้าด้านเทคนิคเพื่อกำหนดค่าบัญชีสําหรับโฆษณา SDK ของผู้ซื้อ จากนั้นคุณสามารถติดตั้งใช้งานอะแดปเตอร์การเสนอราคาที่ช่วยให้ SDK สื่อสารกับ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google ได้ ผู้เผยแพร่โฆษณาต้องผสานรวม SDK และอะแดปเตอร์ของคุณลงในแอปบนอุปกรณ์เคลื่อนที่

เราขอแนะนําให้ส่งครีเอทีฟโฆษณาเพื่อรับการตรวจสอบก่อนรวมไว้ในการเสนอราคาตอบ โปรดติดต่อผู้จัดการลูกค้าด้านเทคนิคหากไม่ทราบประเภทครีเอทีฟโฆษณา ณ เวลาเสนอราคา

หากคําขอราคาเสนอรองรับรูปแบบโฆษณานี้ คุณสามารถระบุโฆษณาที่แสดงผลด้วย SDK ได้โดยการตั้งค่าช่อง sdk_rendered_ad ในการตอบกลับราคาเสนอ

คำขอราคาเสนอ

คําขอราคาเสนอสําหรับพื้นที่โฆษณาในแอปบนอุปกรณ์เคลื่อนที่จะมีรายละเอียดเกี่ยวกับ SDK และอะแดปเตอร์ในแอปของผู้เผยแพร่โฆษณาที่คุณสามารถใช้สําหรับการแสดงผลในช่องต่อไปนี้

รหัส SDK

คุณสามารถใช้คำขอราคาเสนอเพื่อค้นหารหัส SDK ที่ต้องระบุในการตอบกลับราคาเสนอด้วยช่อง BidRequest.app.ext.installed_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 เพื่อระบุรหัสสำหรับ SDK เพื่อแสดงผลโฆษณา

คุณจะดูรหัสได้ใน BidRequest.app.ext.installed_sdk

โฆษณาที่ประกาศ

ใช้ BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad เพื่อส่งครีเอทีฟโฆษณาที่เป็นไปตามข้อกําหนดใน BidRequest.imp.ext.creative_enforcement_settings และแสดงถึงข้อมูลการแสดงผลของโฆษณา ควรป้อนค่าเพียง 1 รายการจาก 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>",
  }
}

เราขอแนะนําให้ใช้ 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"

การตรวจสอบครีเอทีฟโฆษณา

ครีเอทีฟโฆษณาจะได้รับการตรวจสอบก่อนที่จะแสดงเพื่อให้มั่นใจว่าเป็นไปตามนโยบายและการตั้งค่าของผู้เผยแพร่โฆษณา

คุณส่งครีเอทีฟโฆษณาเข้ารับการตรวจสอบได้ 2 วิธีดังนี้

Real-time Bidding API (แนะนํา)

คุณสามารถใช้เมธอด buyers.creatives.create ของ Real-time Bidding API เพื่อส่งครีเอทีฟโฆษณาเข้ารับการตรวจสอบ

API กำหนดให้ส่งครีเอทีฟโฆษณารายการเดียวต่อครีเอทีฟโฆษณา และให้คุณตรวจสอบสถานะการตรวจสอบครีเอทีฟโฆษณาได้

การเสนอราคาตอบ

คุณส่งครีเอทีฟโฆษณาใหม่ได้โดยตรงในการเสนอราคาตอบ

คุณต้องใช้ฟิลด์ declared_ad ของออบเจ็กต์ SdkRenderedAd เพื่อส่งการเสนอราคาตอบกลับที่มีครีเอทีฟโฆษณา SDK ของผู้ซื้อเข้ารับการตรวจสอบ

ครีเอทีฟโฆษณาที่ส่งในการเสนอราคาตอบจะได้รับการตรวจสอบหลังจากการเสนอราคาหลายรายการเท่านั้น ระบบจะกรองราคาเสนอทั้งหมดที่เสนอก่อนการตรวจสอบเสร็จสมบูรณ์ออกจากการประมูล คุณสามารถใช้อินเทอร์เฟซการเสนอราคาแบบเรียลไทม์หรือ Real-time Bidding API เพื่อตรวจสอบสถานะของครีเอทีฟโฆษณาหลังจากที่การตรวจสอบเริ่มต้นขึ้น

ดูรายละเอียดเพิ่มเติมได้ที่คู่มือครีเอทีฟโฆษณา