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

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

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

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

ข้อกำหนด

โฆษณา SDK ของผู้ซื้อพร้อมให้บริการแก่ผู้ซื้อที่ได้รับอนุมัติ รูปแบบนี้ต้องใช้ความพยายามเพิ่มเติมจากคุณและผู้เผยแพร่โฆษณา ติดต่อผู้จัดการลูกค้าด้านเทคนิคเพื่อ กำหนดค่าบัญชีสำหรับโฆษณา SDK ของผู้ซื้อ จากนั้นคุณจะใช้ Bidding Adapter ที่ช่วยให้ 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 และเป็นตัวแทนของ ข้อมูลการแสดงโฆษณา ควรระบุ 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 กำหนดให้ส่งครีเอทีฟโฆษณาได้เพียง 1 รายการต่อครีเอทีฟโฆษณา 1 รายการ และให้คุณตรวจสอบ สถานะการตรวจสอบครีเอทีฟโฆษณาได้

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

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

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

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

ดูรายละเอียดเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับครีเอทีฟโฆษณา