คู่มือนักพัฒนาซอฟต์แวร์ FLEDGE API

โพสต์นี้เป็นข้อมูลอ้างอิงทางเทคนิคเกี่ยวกับเวอร์ชันปัจจุบันของ Protected Audience API เวอร์ชันทดลอง

Protected Audience คืออะไร

Protected Audience API เป็นข้อเสนอของ Privacy Sandbox เพื่อแสดงกรณีการใช้งานรีมาร์เก็ตติ้งและกลุ่มเป้าหมายที่กำหนดเอง ซึ่งออกแบบมาเพื่อไม่ให้บุคคลที่สามใช้ติดตามพฤติกรรมการท่องเว็บของผู้ใช้ในเว็บไซต์ต่างๆ API นี้ช่วยให้เบราว์เซอร์ทำการประมูลในอุปกรณ์เพื่อเลือกโฆษณาที่เกี่ยวข้องสําหรับเว็บไซต์ที่ผู้ใช้เคยเข้าชม

กลุ่มเป้าหมายที่ได้รับการคุ้มครองเป็นการทดสอบครั้งแรกที่จะนำมาใช้ใน Chromium ภายในกลุ่มข้อเสนอ TURTLEDOVE

แผนภาพด้านล่างแสดงภาพรวมของวงจร FLEDGE

ภาพแสดงภาพรวมของแต่ละระยะของวงจร FLEDGE
วงจรของ FLEDGE

ฉันจะลองใช้กลุ่มเป้าหมายที่ได้รับการปกป้องได้อย่างไร

การสาธิต Protected Audience

คุณสามารถดูการแนะนำการใช้งานกลุ่มเป้าหมายที่มีการป้องกันขั้นพื้นฐานในเว็บไซต์ของผู้ลงโฆษณาและผู้เผยแพร่โฆษณาได้ที่ protected-audience-demo.web.app

วิดีโอสาธิตอธิบายวิธีการทำงานของโค้ดเดโม และแสดงวิธีใช้เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome สำหรับการแก้ไขข้อบกพร่องของ Protected Audience

เข้าร่วมช่วงทดลองใช้ Protected Audience จากต้นทาง

การทดลองใช้จากต้นทางที่เกี่ยวข้องกับความเกี่ยวข้องและการวัดผลของ Privacy Sandbox พร้อมให้ใช้งานใน Chrome Beta 101.0.4951.26 ขึ้นไปบนเดสก์ท็อปสําหรับ Protected Audience, Topics และ Attribution Reporting API

หากต้องการเข้าร่วม ให้ลงทะเบียนรับโทเค็นช่วงทดลองใช้จากต้นทาง

เมื่อลงทะเบียนเข้าร่วมช่วงทดลองใช้เรียบร้อยแล้ว คุณจะลองใช้ Protected Audience JavaScript API ในหน้าเว็บที่ให้โทเค็นช่วงทดลองใช้ที่ถูกต้องได้ เช่น เพื่อขอให้เบราว์เซอร์เข้าร่วมกลุ่มความสนใจอย่างน้อย 1 กลุ่ม แล้วทำการประมูลโฆษณาเพื่อเลือกและแสดงโฆษณา

การสาธิต Protected Audience แสดงตัวอย่างพื้นฐานของการติดตั้งใช้งาน Protected Audience แบบครบวงจร

ระบุโทเค็นช่วงทดลองใช้สำหรับทุกหน้าที่ต้องการเรียกใช้โค้ด Protected Audience API

  • ใช้เป็นเมตาแท็กใน <head>

    <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">

  • ใช้เป็นส่วนหัว HTTP

    Origin-Trial: TOKEN_GOES_HERE

  • การให้โทเค็นแบบเป็นโปรแกรม

    const otMeta = document.createElement('meta');
    otMeta.httpEquiv = 'origin-trial';
    otMeta.content = 'TOKEN_GOES_HERE';
    document.head.append(otMeta);
    

IFrame ที่เรียกใช้โค้ด Protected Audience เช่น navigator.joinAdInterestGroup() ที่เรียกใช้โดยเจ้าของกลุ่มความสนใจ จะต้องระบุโทเค็นที่ตรงกับต้นทาง

รายละเอียดช่วงทดลองใช้จากต้นทางของ Protected Audience ครั้งแรกที่เสนอจะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับเป้าหมายของช่วงทดลองใช้ครั้งแรกและอธิบายฟีเจอร์ที่รองรับ

ทดสอบ API นี้

คุณสามารถทดสอบกลุ่มเป้าหมายที่ได้รับการคุ้มครองสําหรับผู้ใช้รายเดียวใน Chrome เบต้า 101.0.4951.26 ขึ้นไปบนเดสก์ท็อปได้โดยทำดังนี้

  • โดยการเปิดใช้ Ad Privacy API ทั้งหมดในส่วน chrome://settings/adPrivacy
  • โดยการติดธงจากบรรทัดคำสั่ง

แสดงผลโฆษณาใน iframe หรือเฟรมที่มีการกำหนดเขต

โฆษณาอาจแสดงผลเป็น <iframe> หรือ <fencedframe> โดยขึ้นอยู่กับการตั้งค่า Flag

วิธีใช้ <fencedframe> เพื่อแสดงโฆษณา

--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,FencedFrames

วิธีใช้ <iframe> เพื่อแสดงโฆษณา

--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,AllowURNsInIframes --disable-features=FencedFrames

ใส่ Flag BiddingAndScoringDebugReportingAPI เพื่อเปิดใช้วิธีการรายงานการสูญเสีย/ชนะชั่วคราวสำหรับการแก้ไขข้อบกพร่อง

เรียกใช้ Chromium ด้วย Flagอธิบายวิธีตั้งค่า Flag เมื่อเรียกใช้ Chrome และเบราว์เซอร์อื่นๆ ที่ใช้ Chromium จากบรรทัดคำสั่ง ดูรายการ Flag ของกลุ่มเป้าหมายที่ได้รับการคุ้มครองทั้งหมดได้จากChromium Code Search

Chrome เวอร์ชันล่าสุดรองรับฟีเจอร์ใดบ้าง

เรากำลังทําให้ Protected Audience พร้อมใช้งานหลัง Flag ฟีเจอร์ใน Chromium เป็นการทดสอบครั้งแรกเพื่อทดสอบฟีเจอร์ต่อไปนี้ของข้อเสนอ Protected Audience

  • กลุ่มความสนใจ: เบราว์เซอร์จัดเก็บไว้พร้อมข้อมูลเมตาที่เกี่ยวข้องเพื่อกําหนดค่าการเสนอราคาและการแสดงโฆษณา
  • การเสนอราคาในอุปกรณ์โดยผู้ซื้อ (DSP หรือผู้ลงโฆษณา): อิงตามกลุ่มความสนใจและสัญญาณที่บันทึกไว้จากผู้ขาย
  • การเลือกโฆษณาในอุปกรณ์โดยผู้ขาย (SSP หรือผู้เผยแพร่โฆษณา): อิงตามราคาเสนอในการประมูลและข้อมูลเมตาจากผู้ซื้อ
  • การแสดงผลโฆษณาในเฟรมที่มีการป้องกันชั่วคราว: มีการอนุญาตให้เข้าถึงเครือข่ายและการบันทึกการแสดงผลโฆษณา

คำอธิบาย API มีรายละเอียดเพิ่มเติมเกี่ยวกับการรองรับและข้อจำกัดของฟีเจอร์

สิทธิ์ของกลุ่มความสนใจ

ค่าเริ่มต้นในการใช้งาน Protected Audience ในปัจจุบันคือการอนุญาตให้เรียกใช้ joinAdInterestGroup() จากทุกที่ในหน้าเว็บ แม้แต่จาก iframe แบบข้ามโดเมน ในอนาคต เมื่อเจ้าของเว็บไซต์มีเวลาปรับนโยบายสิทธิ์ของ iframe ข้ามโดเมนแล้ว แผนของเราคือการไม่อนุญาตการเรียกใช้จาก iframe ข้ามโดเมน ตามที่คำอธิบายอธิบายไว้

บริการคีย์/ค่า

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

โค้ดบริการคีย์/ค่าของกลุ่มเป้าหมายที่ได้รับการคุ้มครองพร้อมใช้งานแล้วในที่เก็บ GitHub ของ Privacy Sandbox นักพัฒนาซอฟต์แวร์ Chrome และ Android สามารถใช้บริการนี้ได้ โปรดดูการอัปเดตสถานะในบล็อกโพสต์ประกาศ ดูข้อมูลเพิ่มเติมเกี่ยวกับบริการคีย์/ค่าของ Protected Audience จากคำอธิบาย API และคำอธิบายรูปแบบความน่าเชื่อถือ

สำหรับการทดสอบครั้งแรกจะใช้รูปแบบ "นำเซิร์ฟเวอร์มาใช้เอง" ในระยะยาว เทคโนโลยีโฆษณาจะต้องใช้บริการคีย์/ค่าของ Protected Audience แบบโอเพนซอร์สที่ทำงานในสภาพแวดล้อมการเรียกใช้ที่เชื่อถือได้เพื่อดึงข้อมูลแบบเรียลไทม์

เราคาดว่าจะไม่กำหนดให้ต้องใช้บริการคีย์/ค่าหรือ TEE แบบโอเพนซอร์สจนกว่าจะถึงเวลาเลิกใช้งานคุกกี้ของบุคคลที่สาม เพื่อให้ระบบนิเวศมีเวลาทดสอบอย่างเพียงพอ เราจะแจ้งให้นักพัฒนาแอปทราบล่วงหน้าอย่างเพียงพอเพื่อให้เริ่มการทดสอบและการนำไปใช้ก่อนการเปลี่ยนแปลงนี้

ตรวจหาการรองรับฟีเจอร์

ก่อนใช้ API ให้ตรวจสอบว่าเบราว์เซอร์รองรับ API นั้นและ API พร้อมใช้งานในเอกสารหรือไม่ โดยทำดังนี้

'joinAdInterestGroup' in navigator &&
  document.featurePolicy.allowsFeature('join-ad-interest-group') &&
  document.featurePolicy.allowsFeature('run-ad-auction') ?
  console.log('navigator.joinAdInterestGroup() is supported on this page') :
  console.log('navigator.joinAdInterestGroup() is not supported on this page');

ฉันจะเลือกไม่ใช้ Protected Audience ได้อย่างไร

คุณสามารถบล็อกการเข้าถึง Protected Audience API ในฐานะเจ้าของเว็บไซต์หรือผู้ใช้รายบุคคล

เว็บไซต์จะควบคุมการเข้าถึงได้อย่างไร

ในที่สุด Protected Audience จะกําหนดให้เว็บไซต์ต้องตั้งค่านโยบายสิทธิ์เพื่ออนุญาตให้ใช้ฟังก์ชัน Protected Audience ได้ วิธีนี้ช่วยให้มั่นใจได้ว่าบุคคลที่สามที่ไม่ทราบข้อมูลจะไม่สามารถใช้งาน API ได้ อย่างไรก็ตาม ระบบจะยกเว้นข้อกำหนดนี้โดยค่าเริ่มต้นเพื่อให้การทดสอบในช่วงช่วงทดลองใช้จากต้นทางครั้งแรกเป็นไปอย่างสะดวก เว็บไซต์ที่ต้องการปิดใช้ฟังก์ชัน Protected Audience อย่างชัดแจ้งในระหว่างระยะเวลาการทดสอบสามารถใช้นโยบายสิทธิ์ที่เกี่ยวข้องเพื่อบล็อกการเข้าถึงได้

นโยบายสิทธิ์ของกลุ่มเป้าหมายที่มีการป้องกันมี 2 รายการที่ตั้งค่าแยกกันได้ ดังนี้

  • join-ad-interest-group เปิด/ปิดใช้ฟังก์ชันเพื่อเพิ่มเบราว์เซอร์ลงในกลุ่มความสนใจ
  • run-ad-auction เปิด/ปิดใช้ฟังก์ชันการทำงานเพื่อเรียกใช้การประมูลในอุปกรณ์

คุณสามารถปิดการเข้าถึง Protected Audience API ทั้งหมดในบริบทของบุคคลที่หนึ่งได้โดยระบุนโยบายสิทธิ์ต่อไปนี้ในส่วนหัวการตอบกลับ HTTP

Permissions-Policy: join-ad-interest-group=(), run-ad-auction=()

คุณปิดใช้การใช้ API ใน iframe ได้โดยเพิ่มแอตทริบิวต์ allow ต่อไปนี้ลงในองค์ประกอบ iframe

<iframe src="https://example.com" allow="join-ad-interest-group 'none'; run-ad-auction 'none'"></iframe>

โปรดดูรายละเอียดเพิ่มเติมในส่วนนโยบายสิทธิ์ช่วงทดลองใช้จากต้นทางของ Protected Audience ครั้งแรกที่เสนอ

ผู้ใช้เลือกไม่ใช้

ผู้ใช้สามารถบล็อกการเข้าถึง Protected Audience API และฟีเจอร์อื่นๆ ของ Privacy Sandbox โดยใช้กลไกต่อไปนี้

  • ปิดใช้ช่วงทดลองใช้ Privacy Sandbox ในการตั้งค่า Chrome: การตั้งค่า > ความปลอดภัยและความเป็นส่วนตัว > Privacy Sandbox ซึ่งเข้าถึงได้ที่ chrome://settings/adPrivacy
  • ปิดใช้คุกกี้ของบุคคลที่สามในการตั้งค่า Chrome: การตั้งค่า > ความปลอดภัยและความเป็นส่วนตัว
  • ตั้งค่าคุกกี้และข้อมูลเว็บไซต์อื่นๆเป็น "บล็อกคุกกี้ของบุคคลที่สาม" หรือ "บล็อกคุกกี้ทั้งหมด" จาก chrome://settings/cookies
  • ใช้โหมดไม่ระบุตัวตน

คําอธิบาย Protected Audience ให้รายละเอียดเพิ่มเติมเกี่ยวกับองค์ประกอบการออกแบบ API และอธิบายวิธีที่ API พยายามบรรลุเป้าหมายด้านความเป็นส่วนตัว

แก้ไขข้อบกพร่องของชิ้นงาน Protected Audience

ตั้งแต่ Chrome Canary 98.0.4718.0 เป็นต้นไป คุณสามารถแก้ไขข้อบกพร่องของชิ้นงานกลุ่มเป้าหมายที่ได้รับการคุ้มครองภายในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome ได้

ขั้นตอนแรกคือตั้งจุดหยุดผ่านหมวดหมู่ใหม่ในแผงจุดหยุดของโปรแกรมรับฟังเหตุการณ์ในแผงแหล่งที่มา

ภาพหน้าจอของ DevTools ใน Chrome Canary ที่ไฮไลต์แผงเบรกพอยต์ของ Listener เหตุการณ์ในแผงแหล่งที่มา
   เลือก &quot;เริ่มระยะการเสนอราคาของผู้เสนอราคา&quot; ในส่วน Worklet การประมูลเพื่อแสดงโฆษณา

เมื่อทริกเกอร์จุดหยุดพักชั่วคราว ระบบจะหยุดการดําเนินการชั่วคราวก่อนคำสั่งแรกในระดับบนสุดของสคริปต์เวิร์กเลต คุณสามารถใช้จุดพักหรือคําสั่งขั้นตอนปกติเพื่อไปยังฟังก์ชันการเสนอราคา/การให้คะแนน/การรายงานได้

สคริปต์ของเวิร์กเลตแบบเรียลไทม์จะปรากฏในแผงชุดข้อความด้วย

ภาพหน้าจอของ DevTools ใน Chrome Canary ที่ไฮไลต์แผงชุดข้อความในแผงแหล่งที่มา ซึ่งแสดงสคริปต์เวิร์กเลตปัจจุบันที่หยุดชั่วคราว

เนื่องจากบางเวิร์กเลตอาจทำงานพร้อมกัน หลายเธรดจึงอาจอยู่ในสถานะ "หยุดชั่วคราว" คุณสามารถใช้รายการเธรดเพื่อสลับไปมาระหว่างเธรดต่างๆ รวมถึงดำเนินการต่อหรือตรวจสอบเธรดอย่างละเอียดยิ่งขึ้นตามความเหมาะสม

ดูเหตุการณ์ของ Protected Audience

จากแผงแอปพลิเคชันในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome คุณสามารถดูกลุ่มความสนใจของกลุ่มเป้าหมายที่มีการป้องกันและเหตุการณ์การประมูลได้

หากคุณไปที่เว็บไซต์การช็อปปิ้งเดโมของกลุ่มเป้าหมายที่มีการป้องกันในเบราว์เซอร์ที่เปิดใช้กลุ่มเป้าหมายที่มีการป้องกัน DevTools จะแสดงข้อมูลเกี่ยวกับเหตุการณ์ join

แผงแอปพลิเคชันของเครื่องมือสําหรับนักพัฒนาเว็บใน Chrome Canary ซึ่งแสดงข้อมูลเกี่ยวกับเหตุการณ์การเข้าร่วมกลุ่มความสนใจของ Protected Audience

ตอนนี้ หากคุณไปที่เว็บไซต์ผู้เผยแพร่โฆษณาเดโมของ Protected Audience ในเบราว์เซอร์ที่เปิดใช้ Protected Audience แล้ว DevTools จะแสดงข้อมูลเกี่ยวกับเหตุการณ์ bid และ win

แผงแอปพลิเคชันของเครื่องมือสําหรับนักพัฒนาเว็บใน Chrome Canary ซึ่งแสดงข้อมูลเกี่ยวกับราคาเสนอในการประมูลของ Protected Audience และเหตุการณ์ที่ชนะ

Protected Audience API ทํางานอย่างไร

ในตัวอย่างนี้ ผู้ใช้เรียกดูเว็บไซต์ของผู้ผลิตจักรยานคัสตอม จากนั้นเข้าชมเว็บไซต์ข่าวในภายหลัง และเห็นโฆษณาจักรยานใหม่จากผู้ผลิตจักรยาน

1. ผู้ใช้เข้าชมเว็บไซต์ของผู้ลงโฆษณา

ภาพแสดงบุคคลที่กําลังเข้าชมเว็บไซต์ของผู้ผลิตจักรยานคัสตอมในเบราว์เซอร์บนแล็ปท็อป

สมมติว่าผู้ใช้เข้าชมเว็บไซต์ของผู้ผลิตจักรยานคัสตอม (ผู้ลงโฆษณาในตัวอย่างนี้) และใช้เวลาอยู่ในหน้าผลิตภัณฑ์จักรยานเหล็กทำมือ ซึ่งเปิดโอกาสให้ผู้ผลิตจักรยานใช้รีมาร์เก็ตติ้ง

2. ระบบจะขอให้เบราว์เซอร์ของผู้ใช้เพิ่มกลุ่มความสนใจ

ภาพแสดงบุคคลที่ดูเว็บไซต์ในเบราว์เซอร์บนแล็ปท็อป โค้ด JavaScript
  joinAdInterestGroup() กำลังทํางานในเบราว์เซอร์

ส่วนคำอธิบาย: เบราว์เซอร์บันทึกกลุ่มความสนใจ

แพลตฟอร์มฝั่งซื้อ (DSP) ของผู้ลงโฆษณา (หรือผู้ลงโฆษณาเอง) จะเรียกใช้ navigator.joinAdInterestGroup() เพื่อขอให้เบราว์เซอร์เพิ่มกลุ่มความสนใจลงในรายการกลุ่มที่เบราว์เซอร์เป็นสมาชิก ในตัวอย่างนี้ กลุ่มมีชื่อว่า custom-bikes และเจ้าของคือ dsp.example เจ้าของกลุ่มความสนใจ (ในกรณีนี้คือ DSP) จะเป็นผู้ซื้อในการประมูลโฆษณาที่อธิบายไว้ในขั้นตอนที่ 4 การเป็นสมาชิกกลุ่มความสนใจจะจัดเก็บไว้ในอุปกรณ์ของผู้ใช้โดยเบราว์เซอร์ และจะไม่แชร์กับผู้ให้บริการเบราว์เซอร์หรือบุคคลอื่น

joinAdInterestGroup() ต้องได้รับสิทธิ์จาก

  • เว็บไซต์ที่เข้าชม
  • เจ้าของกลุ่มความสนใจ

ตัวอย่างเช่น malicious.example ต้องไม่สามารถเรียกใช้ joinAdInterestGroup() ที่มี dsp.example เป็นเจ้าของได้หากไม่ได้รับอนุญาตจาก dsp.example

สิทธิ์จากเว็บไซต์ที่เข้าชม

ต้นทางเดียวกัน: โดยค่าเริ่มต้น ระบบจะให้สิทธิ์โดยปริยายสำหรับการเรียกใช้ joinAdInterestGroup() จากต้นทางเดียวกับเว็บไซต์ที่เข้าชม กล่าวคือจากต้นทางเดียวกับเฟรมระดับบนสุดของหน้าปัจจุบัน เว็บไซต์สามารถใช้คําสั่ง join-ad-interest-group ในส่วนหัวนโยบายสิทธิ์ของ Protected Audience เพื่อปิดใช้การเรียก joinAdInterestGroup()

ข้ามต้นทาง: การเรียกใช้ joinAdInterestGroup() จากต้นทางที่แตกต่างจากหน้าปัจจุบันจะสำเร็จก็ต่อเมื่อเว็บไซต์ที่เข้าชมได้ตั้งค่านโยบายสิทธิ์ที่อนุญาตให้เรียกใช้ joinAdInterestGroup() จาก iframe ข้ามต้นทาง

สิทธิ์จากเจ้าของกลุ่มความสนใจ

ระบบจะมอบสิทธิ์ของเจ้าของกลุ่มความสนใจโดยนัยด้วยการเรียกใช้ joinAdInterestGroup() จาก iframe ที่มีต้นทางเดียวกับเจ้าของกลุ่มความสนใจ เช่น dsp.example iframe สามารถเรียก joinAdInterestGroup() สำหรับกลุ่มความสนใจที่เป็นของ dsp.example

ข้อเสนอคือ joinAdInterestGroup() สามารถทํางานในหน้าเว็บหรือ iframe ในโดเมนของเจ้าของ หรือมอบสิทธิ์ให้โดเมนอื่นๆ ได้โดยใช้รายการที่ URL ของ .well-known

การใช้ navigator.joinAdInterestGroup()

ตัวอย่างการใช้ API

const interestGroup = {
  owner: 'https://dsp.example',
  name: 'custom-bikes',
  biddingLogicUrl: ...,
  biddingWasmHelperUrl: ...,
  dailyUpdateUrl: ...,
  trustedBiddingSignalsUrl: ...,
  trustedBiddingSignalsKeys: ['key1', 'key2'],
  userBiddingSignals: {...},
  ads: [bikeAd1, bikeAd2, bikeAd3],
  adComponents: [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2],
};

navigator.joinAdInterestGroup(interestGroup, 7 * kSecsPerDay);

ออบเจ็กต์ interestGroup ที่ส่งไปยังฟังก์ชันต้องมีขนาดไม่เกิน 50 KiB ไม่เช่นนั้นการเรียกใช้จะไม่สําเร็จ พารามิเตอร์ที่ 2 ระบุระยะเวลาของกลุ่มความสนใจ โดยไม่เกิน 30 วัน การเรียกใช้ที่ต่อเนื่องจะเขียนทับค่าที่เก็บไว้ก่อนหน้านี้

X-Allow-FLEDGE: true

พร็อพเพอร์ตี้ของกลุ่มความสนใจ

พร็อพเพอร์ตี้ ต้องระบุ ตัวอย่าง บทบาท
owner ต้องระบุ 'https://dsp.example' ต้นทางของเจ้าของกลุ่มความสนใจ
name ต้องระบุ 'custom-bikes' ชื่อกลุ่มความสนใจ
biddingLogicUrl** ไม่บังคับ* 'https://dsp.example/bid/custom-bikes/bid.js' URL สําหรับ JavaScript การเสนอราคาที่ทํางานในเวิร์กเลต
biddingWasmHelperUrl** ไม่บังคับ* 'https://dsp.example/bid/custom-bikes/bid.wasm' URL สำหรับโค้ด WebAssembly ที่มาจาก biddingLogicUrl
dailyUpdateUrl** ไม่บังคับ 'https://dsp.example/bid/custom-bikes/update' URL ที่แสดงผล JSON เพื่ออัปเดตแอตทริบิวต์กลุ่มความสนใจ (ดูอัปเดตกลุ่มความสนใจ)
trustedBiddingSignalsUrl** ไม่บังคับ 'https://dsp.example/trusted/bidding-signals' URL ฐานสําหรับคําขอคีย์-ค่าไปยังเซิร์ฟเวอร์ที่เชื่อถือของผู้เสนอราคา
trustedBiddingSignalsKeys ไม่บังคับ ['key1', 'key2' ...] คีย์สําหรับคําขอไปยังเซิร์ฟเวอร์ที่เชื่อถือของคีย์-ค่า
userBiddingSignals ไม่บังคับ {...} ข้อมูลเมตาเพิ่มเติมที่เจ้าของสามารถใช้ในระหว่างการเสนอราคา
ads ไม่บังคับ* [bikeAd1, bikeAd2, bikeAd3] โฆษณาที่อาจแสดงผลสําหรับกลุ่มความสนใจนี้
adComponents ไม่บังคับ [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2] องค์ประกอบสําหรับโฆษณาที่ประกอบด้วยหลายส่วน

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

** URL biddingLogicUrl, biddingWasmHelperUrl, dailyUpdateUrl และ trustedBiddingSignalsUrl ต้องมีต้นทางเดียวกับเจ้าของ URL ads และ adComponents ไม่มีข้อจำกัดดังกล่าว

อัปเดตแอตทริบิวต์กลุ่มความสนใจ

dailyUpdateUrl ระบุเว็บเซิร์ฟเวอร์ที่แสดงผล JSON ซึ่งกําหนดพร็อพเพอร์ตี้กลุ่มความสนใจ ซึ่งสอดคล้องกับออบเจ็กต์กลุ่มความสนใจที่ส่งไปยัง navigator.joinAdInterestGroup() ซึ่งจะเป็นกลไกให้เจ้าของกลุ่มอัปเดตแอตทริบิวต์ของกลุ่มความสนใจเป็นระยะ ในการใช้งานปัจจุบัน คุณจะเปลี่ยนแอตทริบิวต์ต่อไปนี้ได้

  • biddingLogicUrl
  • biddingWasmHelperUrl
  • trustedBiddingSignalsUrl
  • trustedBiddingSignalsKeys
  • ads
  • priority

ระบบจะไม่เขียนทับช่องที่ไม่ได้ระบุใน JSON แต่จะอัปเดตเฉพาะช่องที่ระบุใน JSON เท่านั้น ส่วนการเรียกใช้ navigator.joinAdInterestGroup() จะเขียนทับกลุ่มความสนใจที่มีอยู่

การอัปเดตจะดำเนินการอย่างดีที่สุดและอาจดำเนินการไม่สำเร็จภายใต้เงื่อนไขต่อไปนี้

  • หมดเวลาของคําขอเครือข่าย (ปัจจุบันคือ 30 วินาที)
  • เครือข่ายล้มเหลวอื่นๆ
  • แยกวิเคราะห์ JSON ไม่สำเร็จ

นอกจากนี้ ระบบยังอาจยกเลิกการอัปเดตหากมีการอัปเดตติดต่อกันเป็นเวลานานเกินไป แต่จะไม่จำกัดอัตราการอัปเดตที่ยกเลิก (เหลืออยู่) การอัปเดตมีขีดจำกัดอัตราสูงสุดที่ 1 ครั้งต่อวัน ระบบจะลองอัปเดตอีกครั้งหลังจากผ่านไป 1 ชั่วโมงหากอัปเดตไม่สำเร็จเนื่องจากข้อผิดพลาดของเครือข่าย และระบบจะลองอัปเดตอีกครั้งทันทีเมื่อเชื่อมต่ออินเทอร์เน็ตอีกครั้งหากอัปเดตไม่สำเร็จเนื่องจากอินเทอร์เน็ตตัดการเชื่อมต่อ

การอัปเดตด้วยตนเอง

คุณสามารถเรียกให้อัปเดตกลุ่มความสนใจซึ่งเป็นเจ้าของโดยต้นทางของเฟรมปัจจุบันได้ด้วยตัวเองผ่าน navigator.updateAdInterestGroups() การจำกัดอัตราการเรียกใช้จะป้องกันไม่ให้การอัปเดตเกิดขึ้นบ่อยเกินไป โดยระบบจะไม่ดำเนินการใดๆ กับการเรียกใช้ navigator.updateAdInterestGroups() ซ้ำจนกว่าจะผ่านระยะเวลาการจำกัดอัตราการเรียกใช้ (ปัจจุบันคือ 1 วัน) ระบบจะรีเซ็ตขีดจํากัดอัตราหากเรียกใช้ navigator.joinAdInterestGroup() อีกครั้งสําหรับกลุ่มความสนใจ owner และ name เดียวกัน

การอัปเดตอัตโนมัติ

ระบบจะอัปเดตกลุ่มความสนใจทั้งหมดที่โหลดสำหรับการประมูลโดยอัตโนมัติหลังจากการประมูลเสร็จสมบูรณ์ โดยขึ้นอยู่กับขีดจํากัดอัตราเดียวกันกับการอัปเดตด้วยตนเอง สําหรับเจ้าของแต่ละรายที่มีกลุ่มความสนใจอย่างน้อย 1 กลุ่มที่เข้าร่วมการประมูล ระบบจะทําราวกับว่ามีการเรียก navigator.updateAdInterestGroups() จาก iframe ที่มีต้นทางตรงกับเจ้าของรายนั้น

ระบุโฆษณาสําหรับกลุ่มความสนใจ

ออบเจ็กต์ ads และ adComponents มี URL ของครีเอทีฟโฆษณาและข้อมูลเมตาที่กำหนดเอง (ไม่บังคับ) ที่ใช้ได้ในเวลาเสนอราคา เช่น

{
  renderUrl: 'https://cdn.example/.../bikeAd1.html',
  metadata: bikeAd1metadata // optional
}

ผู้ซื้อเสนอราคาได้อย่างไร

สคริปต์ที่ biddingLogicUrl ซึ่งเจ้าของกลุ่มความสนใจระบุต้องมีฟังก์ชัน generateBid() เมื่อผู้ขายพื้นที่โฆษณาเรียก navigator.runAdAuction() ระบบจะเรียกใช้ฟังก์ชัน generatedBid() 1 ครั้งสําหรับกลุ่มความสนใจแต่ละกลุ่มที่เบราว์เซอร์เป็นสมาชิกอยู่ หากเจ้าของกลุ่มความสนใจได้รับเชิญให้เสนอราคา กล่าวคือ generateBid() จะเรียกใช้ 1 ครั้งสําหรับโฆษณาแต่ละรายการที่ตรงตามเกณฑ์ ผู้ขายระบุพร็อพเพอร์ตี้ decisionLogicUrl ในพารามิเตอร์การกําหนดค่าการประมูลที่ส่งไปยัง navigator.runAdAuction() โค้ดใน URL นี้ต้องมีฟังก์ชัน scoreAd() ซึ่งจะเรียกใช้สำหรับผู้เสนอราคาแต่ละรายในการประมูล เพื่อประเมินราคาเสนอแต่ละรายการที่ generateBid() แสดงผล

สคริปต์ที่ biddingLogicUrl ที่ผู้ซื้อพื้นที่โฆษณาระบุต้องมีฟังก์ชัน generateBid() ระบบจะเรียกใช้ฟังก์ชันนี้ 1 ครั้งสําหรับโฆษณาที่มีโอกาสแสดงแต่ละรายการ runAdAuction() จะตรวจสอบโฆษณาแต่ละรายการแยกกัน รวมถึงราคาเสนอและข้อมูลเมตาที่เกี่ยวข้อง จากนั้นจะกําหนดคะแนนความน่าพึงพอใจแบบตัวเลขให้กับโฆษณา

generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  ...
  return {
    ad: adObject,
    bid: bidValue,
    render: renderUrl,
    adComponents: [adComponentRenderUrl1, ...]
   };
}

generateBid() ใช้อาร์กิวเมนต์ต่อไปนี้

  • interestGroup
    ออบเจ็กต์ที่ผู้ซื้อโฆษณาส่งไปยัง joinAdInterestGroup() (กลุ่มความสนใจอาจอัปเดตได้ผ่าน dailyUpdateUrl)

  • auctionSignals
    พร็อพเพอร์ตี้ของอาร์กิวเมนต์ auction config ที่ผู้ขายพื้นที่โฆษณาส่งให้กับ navigator.runAdAuction() ข้อมูลนี้ให้ข้อมูลเกี่ยวกับบริบทของหน้าเว็บ (เช่น ขนาดโฆษณาและรหัสผู้เผยแพร่โฆษณา) ประเภทการประมูล (ราคาอันดับ 1 หรืออันดับ 2) และข้อมูลเมตาอื่นๆ

  • perBuyerSignals
    เช่นเดียวกับ auctionSignals ซึ่งเป็นพร็อพเพอร์ตี้ของการกำหนดค่าการประมูล ที่ส่งผ่านโดยผู้ขายไปยัง navigator.runAdAuction() ซึ่งสามารถส่งสัญญาณตามบริบทจากเซิร์ฟเวอร์ของผู้ซื้อเกี่ยวกับหน้าเว็บได้ หากผู้ขายเป็น SSP ที่ใช้การเรียกใช้การเสนอราคาแบบเรียลไทม์กับเซิร์ฟเวอร์ของผู้ซื้อและส่งการตอบกลับกลับ หรือหากหน้าเว็บของผู้เผยแพร่โฆษณาติดต่อเซิร์ฟเวอร์ของผู้ซื้อโดยตรง หากเป็นเช่นนั้น ผู้ซื้ออาจต้องตรวจสอบลายเซ็นการเข้ารหัสของสัญญาณเหล่านั้นภายใน generateBid() เพื่อป้องกันการแทรกแซง

  • trustedBiddingSignals
    ออบเจ็กต์ที่คีย์คือ trustedBiddingSignalsKeys สําหรับกลุ่มความสนใจ และค่าที่แสดงในคําขอ trustedBiddingSignals

  • browserSignals
    ออบเจ็กต์ที่สร้างโดยเบราว์เซอร์ ซึ่งอาจรวมถึงข้อมูลเกี่ยวกับบริบทของหน้า (เช่น hostname ของหน้าปัจจุบัน ซึ่งผู้ขายอาจปลอมแปลงได้) และข้อมูลสำหรับกลุ่มความสนใจนั้นๆ (เช่น บันทึกเวลาที่กลุ่มชนะการประมูลก่อนหน้านี้ เพื่ออนุญาตให้มีการจำกัดความถี่ในอุปกรณ์)

ออบเจ็กต์ browserSignals มีพร็อพเพอร์ตี้ต่อไปนี้

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  joinCount: 3,
  bidCount: 17,
  prevWins: [[time1,ad1],[time2,ad2],...],
  wasmHelper: ... /* WebAssembly.Module object based on interest group's biddingWasmHelperUrl. */
  dataVersion: 1, /* Data-Version value from the buyer's Key/Value service response(s). */
}

หากต้องการคำนวณค่า bid โค้ดใน generateBid() สามารถใช้พร็อพเพอร์ตี้ของพารามิเตอร์ของฟังก์ชันได้ เช่น

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
    ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    ...
  }
}

generateBid() จะแสดงผลออบเจ็กต์ที่มีพร็อพเพอร์ตี้ 4 รายการ ได้แก่

  • ad
    ข้อมูลเมตาที่ไม่เจาะจงเกี่ยวกับโฆษณา เช่น ข้อมูลที่ผู้ขายคาดหวังว่าจะได้ทราบเกี่ยวกับการเสนอราคาหรือครีเอทีฟโฆษณานี้ ผู้ขาย](/resources/glossary#ssp) ใช้ข้อมูลนี้ในการประมูลและตัดสินใจเกี่ยวกับครีเอทีฟโฆษณา ผู้ขายจะใช้ข้อมูลนี้ในการประมูลและตรรกะการตัดสินใจ

  • bid
    ราคาเสนอที่เป็นตัวเลขที่จะเข้าร่วมการประมูล ผู้ขายต้องสามารถเปรียบเทียบราคาเสนอจากผู้ซื้อรายต่างๆ ได้ ดังนั้นราคาเสนอจึงต้องอยู่ในหน่วยที่ผู้ขายเลือก (เช่น "USD ต่อพัน") หากราคาเสนอเป็น 0 หรือติดลบ กลุ่มความสนใจนี้จะไม่เข้าร่วมการประมูลของผู้ขายเลย กลไกนี้ช่วยให้ผู้ซื้อใช้กฎของผู้ลงโฆษณาเพื่อกำหนดตําแหน่งที่โฆษณาอาจปรากฏหรือไม่ปรากฏได้

  • render
    URL หรือรายการ URL ที่จะใช้ในการแสดงผลครีเอทีฟโฆษณาหากราคาเสนอนี้ชนะการประมูล (ดูโฆษณาที่ประกอบด้วยหลายส่วนในคำอธิบาย API) ค่าต้องตรงกับ renderUrl ของโฆษณาที่กําหนดไว้สําหรับกลุ่มความสนใจรายการใดรายการหนึ่ง

  • adComponents
    รายการคอมโพเนนต์สูงสุด 20 รายการ (ไม่บังคับ) สำหรับโฆษณาที่ประกอบด้วยหลายส่วน ซึ่งนำมาจากพร็อพเพอร์ตี้ adComponents ของอาร์กิวเมนต์กลุ่มความสนใจที่ส่งไปยัง navigator.joinAdInterestGroup()

การขอให้เบราว์เซอร์ออกจากกลุ่มความสนใจ

เจ้าของกลุ่มความสนใจจะขอให้นำเบราว์เซอร์ออกจากกลุ่มความสนใจได้ กล่าวคือ ระบบจะขอให้เบราว์เซอร์นํากลุ่มความสนใจออกจากรายการกลุ่มที่ตนเป็นสมาชิก

navigator.leaveAdInterestGroup({
  owner: 'https://dsp.example',
  name: 'custom-bikes'
});

หากผู้ใช้กลับไปที่เว็บไซต์ซึ่งขอให้เบราว์เซอร์เพิ่มกลุ่มความสนใจ เจ้าของกลุ่มความสนใจจะเรียกใช้ฟังก์ชัน navigator.leaveAdInterestGroup() เพื่อขอให้เบราว์เซอร์นํากลุ่มความสนใจออกได้ โค้ดของโฆษณายังเรียกใช้ฟังก์ชันนี้สําหรับกลุ่มความสนใจได้ด้วย

3. ผู้ใช้เข้าชมเว็บไซต์ที่ขายพื้นที่โฆษณา

ภาพแสดงบุคคลที่กําลังเข้าชมเว็บไซต์ข่าวในเบราว์เซอร์บนแล็ปท็อป เว็บไซต์มีช่องโฆษณาว่าง

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

4. การประมูลเพื่อแสดงโฆษณาจะทํางานในเบราว์เซอร์

ภาพแสดงบุคคลที่ดูเว็บไซต์ข่าวในเบราว์เซอร์บนแล็ปท็อป มีการประมูลเพื่อแสดงโฆษณาโดยใช้ Protected Audience API

ส่วนคำอธิบาย: ผู้ขายเรียกใช้การประมูลในอุปกรณ์

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

ผู้ขายพื้นที่โฆษณาส่งคําขอไปยังเบราว์เซอร์ของผู้ใช้เพื่อเริ่มการประมูลโฆษณาโดยเรียกใช้ navigator.runAdAuction()

เช่น

const auctionConfig = {
  seller: 'https://ssp.example',
  decisionLogicUrl: ...,
  trustedScoringSignalsUrl: ...,
  interestGroupBuyers: ['https://dsp.example', 'https://buyer2.example', ...],
  auctionSignals: {...},
  sellerSignals: {...},
  sellerTimeout: 100,
  perBuyerSignals: {
    'https://dsp.example': {...},
    'https://another-buyer.example': {...},
    ...
  },
  perBuyerTimeouts: {
    'https://dsp.example': 50,
    'https://another-buyer.example': 200,
    '*': 150,
    ...
  },
  componentAuctions: [
    {
      'seller': 'https://some-other-ssp.example',
      'decisionLogicUrl': ...,
      ...
    },
    ...
  ]
};

const auctionResultPromise = navigator.runAdAuction(auctionConfig);

runAdAuction() จะแสดงผลลัพธ์เป็น URN (urn:uuid:<something>) ที่แสดงถึงผลลัพธ์ของการประมูลโฆษณา เบราว์เซอร์จะถอดรหัสได้ก็ต่อเมื่อส่งไปยังเฟรมที่มีการป้องกันเพื่อการแสดงผลเท่านั้น หน้าผู้เผยแพร่โฆษณาจะตรวจสอบโฆษณาที่ชนะไม่ได้

สคริปต์ decisionLogicUrl จะพิจารณาโฆษณาแต่ละรายการ รวมถึงราคาเสนอและข้อมูลเมตาที่เกี่ยวข้องทีละรายการ จากนั้นจึงกําหนดคะแนนความพึงปรารถนาเป็นตัวเลข

ที่พัก auctionConfig แห่ง

พร็อพเพอร์ตี้ ต้องระบุ ตัวอย่าง บทบาท
seller ต้องระบุ 'https://ssp.example' ต้นทางของผู้ขาย
decisionLogicUrl ต้องระบุ 'https://ssp.example/auction-decision-logic.js' URL สําหรับ JavaScript ของ Worklet การประมูล
trustedScoringSignalsUrl ไม่บังคับ 'https://ssp.example/scoring-signals' URL ของเซิร์ฟเวอร์ที่เชื่อถือของผู้ขาย
interestGroupBuyers* ต้องระบุ ['https://dsp.example', 'https://buyer2.example', ...] ต้นทางของเจ้าของกลุ่มความสนใจทั้งหมดที่ขอให้เสนอราคาในการประมูล
auctionSignals ไม่บังคับ {...} ข้อมูลผู้ขายเกี่ยวกับบริบทของหน้าเว็บ ประเภทการประมูล ฯลฯ
sellerSignals ไม่บังคับ {...} ข้อมูลตามการตั้งค่าของผู้เผยแพร่โฆษณา การสร้างคําขอโฆษณาตามบริบท ฯลฯ
sellerTimeout ไม่บังคับ 100 รันไทม์สูงสุด (มิลลิวินาที) ของสคริปต์ scoreAd() ของผู้ขาย
perBuyerSignals ไม่บังคับ {'https://dsp.example': {...},
  'https://another-buyer.example': {...},
...}
สัญญาณตามบริบทเกี่ยวกับหน้าเว็บสําหรับผู้ซื้อแต่ละรายจากเซิร์ฟเวอร์ของผู้ซื้อ
perBuyerTimeouts ไม่บังคับ 50 รันไทม์สูงสุด (ms) ของสคริปต์ generateBid() ของผู้ซื้อรายใดรายหนึ่ง
componentAuctions ไม่บังคับ [{'seller': 'https://www.some-other-ssp.com',
  'decisionLogicUrl': ..., ...},
  ...]
การกําหนดค่าเพิ่มเติมสําหรับการประมูลคอมโพเนนต์

* ผู้ขายอาจระบุ interestGroupBuyers: '*' เพื่ออนุญาตให้กลุ่มความสนใจทั้งหมดเสนอราคาได้ จากนั้นระบบจะยอมรับหรือปฏิเสธโฆษณาตามเกณฑ์อื่นๆ นอกเหนือจากการรวมเจ้าของกลุ่มความสนใจ ตัวอย่างเช่น ผู้ขายอาจตรวจสอบครีเอทีฟโฆษณาเพื่อยืนยันว่าเป็นไปตามนโยบาย

** additionalBids ไม่รองรับการใช้งาน Protected Audience ในปัจจุบัน อ่านข้อมูลเพิ่มเติมได้ในส่วนผู้เข้าร่วมการประมูลในคำอธิบายกลุ่มเป้าหมายที่ได้รับการคุ้มครอง

โฆษณาได้รับการเลือกอย่างไร

โค้ดที่ decisionLogicUrl (พร็อพเพอร์ตี้ของออบเจ็กต์การกําหนดค่าการประมูลที่ส่งไปยัง runAdAuction()) ต้องมีฟังก์ชัน scoreAd() ระบบจะเรียกใช้ขั้นตอนนี้ 1 ครั้งสําหรับโฆษณาแต่ละรายการเพื่อพิจารณาความน่าพึงพอใจ

scoreAd(adMetadata, bid, auctionConfig, trustedScoringSignals, browserSignals) {
  ...
  return desirabilityScoreForThisAd;
}

scoreAd() ใช้อาร์กิวเมนต์ต่อไปนี้

  • adMetadata
    ข้อมูลเมตาที่ไม่เจาะจงซึ่งระบุโดยผู้ซื้อ
  • bid
    ค่าการเสนอราคาที่เป็นตัวเลข
  • auctionConfig
    ออบเจ็กต์การกําหนดค่าการประมูลที่ส่งไปยัง navigator.runAdAuction()
  • trustedScoringSignals
    ค่าที่ดึงข้อมูล ณ เวลาประมูลจากเซิร์ฟเวอร์ที่เชื่อถือได้ของผู้ขาย ซึ่งแสดงถึงความคิดเห็นของผู้ขายเกี่ยวกับโฆษณา
  • browserSignals
    ออบเจ็กต์ที่เบราว์เซอร์สร้างขึ้น ซึ่งรวมถึงข้อมูลที่เบราว์เซอร์ทราบและสคริปต์การประมูลของผู้ขายอาจต้องการยืนยัน
{
  topWindowHostname: 'publisher.example',
  interestGroupOwner: 'https://dsp.example',
  renderUrl: 'https://cdn.example/render',
  adComponents: ['https://cdn.com/ad-component-1', ...],
  biddingDurationMsec: 12,
  dataVersion: 1 /* Data-Version value from the seller's Key/Value service response. */
}

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

5. ผู้ขายและผู้ซื้อที่เข้าร่วมจะได้รับข้อมูลแบบเรียลไทม์จากบริการคีย์/ค่า

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

ส่วนคําอธิบาย: การดึงข้อมูลแบบเรียลไทม์จากบริการคีย์/ค่าของ Protected Audience

ในระหว่างการประมูลโฆษณา ผู้ขายพื้นที่โฆษณาจะได้รับข้อมูลแบบเรียลไทม์เกี่ยวกับครีเอทีฟโฆษณาที่เฉพาะเจาะจงโดยส่งคําขอไปยังบริการคีย์/ค่าโดยใช้พร็อพเพอร์ตี้ trustedScoringSignalsUrl ของอาร์กิวเมนต์การกําหนดค่าการประมูลที่ส่งไปยัง navigator.runAdAuction() พร้อมกับคีย์จากพร็อพเพอร์ตี้ renderUrl ของรายการทั้งหมดในช่อง ads และ adComponents ของกลุ่มความสนใจทั้งหมดในการประมูล

ในทํานองเดียวกัน ผู้ซื้อพื้นที่โฆษณาสามารถขอข้อมูลแบบเรียลไทม์จากบริการคีย์/ค่าได้โดยใช้พร็อพเพอร์ตี้ trustedBiddingSignalsUrl และ trustedBiddingSignalsKeys ของอาร์กิวเมนต์กลุ่มความสนใจที่ส่งผ่านไปยัง navigator.joinAdInterestGroup()

เมื่อเรียก runAdAuction() แล้วเบราว์เซอร์จะส่งคําขอไปยังเซิร์ฟเวอร์ที่เชื่อถือของผู้ซื้อโฆษณาแต่ละราย URL สําหรับคําขออาจมีลักษณะดังนี้

https://kv-service.example/getvalues?hostname=publisher.example&keys=key1,key2
  • URL พื้นฐานมาจาก trustedBiddingSignalsUrl
  • hostname มาจากเบราว์เซอร์
  • ค่า keys นำมาจาก trustedBiddingSignalsKeys

การตอบกลับคําขอนี้เป็นออบเจ็กต์ JSON ที่ให้ค่าสําหรับคีย์แต่ละรายการ

6. โฆษณาที่ชนะจะแสดง

ภาพแสดงบุคคลที่ดูเว็บไซต์ข่าวในเบราว์เซอร์บนแล็ปท็อป โฆษณาจักรยาน (ลด 20%) แสดงขึ้นโดยมีแม่กุญแจด้านบนเพื่อแสดงให้เห็นว่าโฆษณาแสดงในกรอบที่มีการป้องกัน

ส่วนคําอธิบาย: เบราว์เซอร์แสดงผลโฆษณาที่มีประสิทธิภาพสูงสุด

ตามที่อธิบายไว้ก่อนหน้านี้ พรอมต์ที่ runAdAuction() แสดงผลจะเปลี่ยนเป็น URN ซึ่งส่งไปยังเฟรมที่มีการกำหนดเขตเพื่อแสดงผล และเว็บไซต์จะแสดงโฆษณาที่ชนะ

7. รายงานผลลัพธ์การประมูล

ส่วนคําอธิบาย: การรายงานระดับเหตุการณ์ (สําหรับตอนนี้)

ผลลัพธ์ที่รายงานโดยผู้ขาย

ส่วนคำอธิบาย: การรายงานของผู้ขายเกี่ยวกับการแสดงผล

JavaScript ของผู้ขายที่ระบุไว้ใน decisionLogicUrl (ซึ่งระบุ scoreAd() ด้วย) สามารถรวมฟังก์ชัน reportResult() เพื่อรายงานผลลัพธ์ของการประมูล

reportResult(auctionConfig, browserSignals) {
  ...
  return signalsForWinner;
}

อาร์กิวเมนต์ที่ส่งไปยังฟังก์ชันนี้มีดังนี้

  • auctionConfig
    ออบเจ็กต์การกําหนดค่าการประมูลที่ส่งไปยัง navigator.runAdAuction()

  • browserSignals
    ออบเจ็กต์ที่เบราว์เซอร์สร้างขึ้นซึ่งให้ข้อมูลเกี่ยวกับการประมูล เช่น

    {
      'topWindowHostname': 'publisher.example',
      'interestGroupOwner': 'https://dsp.example',
      'renderUrl': 'https://cdn.example/url-of-winning-creative.wbn',
      'bid:' <bidValue>,
      'desirability': <winningAdScore>
    }
    

ระบบจะใช้ค่าที่ฟังก์ชันนี้แสดงผลเป็นอาร์กิวเมนต์ sellerSignals ของฟังก์ชัน reportWin() ของผู้เสนอราคาที่ชนะ

ผู้เสนอราคาที่ชนะรายงานผลลัพธ์

ส่วนคําอธิบาย: การรายงานของผู้ซื้อเกี่ยวกับเหตุการณ์การแสดงผลและโฆษณา

JavaScript ของผู้เสนอราคาที่ชนะ (ซึ่งระบุ generateBid() ด้วย) สามารถมีฟังก์ชัน reportWin() เพื่อรายงานผลลัพธ์ของการประมูล

reportWin(auctionSignals, perBuyerSignals, sellerSignals, browserSignals) {
  ...
}

อาร์กิวเมนต์ที่ส่งไปยังฟังก์ชันนี้มีดังนี้

  • auctionSignals และ perBuyerSignals
    ค่าเดียวกันกับที่ส่งไปยัง generateBid() สําหรับผู้เสนอราคาที่ชนะ
  • sellerSignals
    ค่าที่แสดงผลของ reportResult() ซึ่งช่วยให้ผู้ขายมีโอกาสส่งข้อมูลไปยังผู้ซื้อ
  • browserSignals
    ออบเจ็กต์ที่เบราว์เซอร์สร้างขึ้นซึ่งให้ข้อมูลเกี่ยวกับการประมูล เช่น

    {
      'topWindowHostname': 'publisher.example',
      'seller': 'https://ssp.example',
      'interestGroupOwner': 'https://dsp.example',
      'interestGroupName': 'custom-bikes',
      'renderUrl': 'https://cdn.example/winning-creative.wbn',
      'bid:' <bidValue>
    }
    

การติดตั้งใช้งานการรายงานการสูญเสีย/การชนะชั่วคราว

การรายงานการประมูลใน Chrome มี 2 วิธีชั่วคราว ดังนี้

  • forDebuggingOnly.reportAdAuctionLoss()
  • forDebuggingOnly.reportAdAuctionWin()

โดยแต่ละเมธอดจะใช้อาร์กิวเมนต์รายการเดียว ซึ่งเป็น URL ที่จะดึงข้อมูลหลังจากการประมูลเสร็จสมบูรณ์ เรียกได้หลายครั้งทั้งใน scoreAd() และ generateBid() โดยมีอาร์กิวเมนต์ URL ที่แตกต่างกัน

Chrome จะส่งรายงานการแก้ไขข้อบกพร่องเกี่ยวกับจำนวนครั้งที่ชนะ/แพ้ก็ต่อเมื่อการประมูลทํางานเสร็จสมบูรณ์เท่านั้น หากการประมูลถูกยกเลิก (เช่น เนื่องจากการนําทางใหม่) ระบบจะไม่สร้างรายงาน

ซึ่งวิธีการเหล่านี้มีให้ใช้งานใน Chrome โดยค่าเริ่มต้น หากต้องการทดสอบวิธีการ ให้เปิดใช้ Ad Privacy API ทั้งหมดในส่วน chrome://settings/adPrivacy หากใช้ Chrome ที่มี Flag บรรทัดคำสั่งเพื่อเปิดใช้กลุ่มเป้าหมายที่ได้รับการคุ้มครอง คุณจะต้องเปิดใช้วิธีการดังกล่าวอย่างชัดเจนโดยใส่ Flag BiddingAndScoringDebugReportingAPI หากไม่ได้เปิดใช้ Flag ดังกล่าว วิธีการจะยังคงใช้งานได้แต่จะไม่ทําการใดๆ

8. มีการรายงานการคลิกโฆษณา

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

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



แผนภาพด้านล่างแสดงขั้นตอนต่างๆ ของการประมูลโฆษณาสำหรับ Protected Audience

ภาพแสดงภาพรวมของแต่ละระยะของการประมูลโฆษณาสำหรับ Protected Audience


Protected Audience กับ TURTLEDOVE แตกต่างกันอย่างไร

กลุ่มเป้าหมายที่ได้รับการคุ้มครองเป็นการทดสอบครั้งแรกที่จะนำมาใช้ใน Chromium ภายในกลุ่มข้อเสนอของ TURTLEDOVE

กลุ่มเป้าหมายที่ได้รับการคุ้มครองเป็นไปตามหลักการระดับสูงของ TURTLEDOVE การโฆษณาออนไลน์บางประเภทอิงตามการแสดงโฆษณาต่อผู้ที่อาจสนใจซึ่งเคยโต้ตอบกับผู้ลงโฆษณาหรือเครือข่ายโฆษณา ที่ผ่านมาวิธีนี้ได้ผลเนื่องจากผู้ลงโฆษณาจดจําบุคคลที่เฉพาะเจาะจงขณะท่องเว็บ ซึ่งเป็นข้อกังวลด้านความเป็นส่วนตัวหลักของเว็บในปัจจุบัน

โครงการ TURTLEDOVE มุ่งนำเสนอ API ใหม่เพื่อจัดการกับ Use Case นี้ไปพร้อมกับการนำเสนอความเป็นส่วนตัวขั้นสูงที่สำคัญบางอย่าง ดังนี้

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

Protected Audience พัฒนามาจาก TURTLEDOVE และชุดข้อเสนอที่เกี่ยวข้องสำหรับการแก้ไขเพื่อให้บริการนักพัฒนาซอฟต์แวร์ที่จะใช้ API ได้ดียิ่งขึ้น

  • ใน SPARROW: Criteo เสนอให้เพิ่มรูปแบบบริการ ("Gatekeeper") ที่ทำงานในสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE) กลุ่มเป้าหมายที่ได้รับการคุ้มครองมีการจำกัดการใช้ TEE มากขึ้นสำหรับการค้นหาข้อมูลแบบเรียลไทม์และการรายงานแบบรวม
  • TERN ของ NextRoll และข้อเสนอ PARRROT ของ Magnite อธิบายบทบาทที่แตกต่างกันของผู้ซื้อและผู้ขายในการประมูลบนอุปกรณ์ ขั้นตอนการเสนอราคา/การให้คะแนนโฆษณาของกลุ่มเป้าหมายที่ได้รับการคุ้มครองจะอิงตามงานวิจัยนี้
  • การแก้ไข TURTLEDOVE ตามผลลัพธ์และระดับผลิตภัณฑ์ของ RTB House ช่วยปรับปรุงรูปแบบการไม่ระบุตัวตนและความสามารถในการปรับเปลี่ยนในแบบของคุณของการประมูลในอุปกรณ์
  • PARAKEET คือข้อเสนอของ Microsoft สําหรับบริการโฆษณาที่คล้ายกับ TURTLEDOVE ซึ่งอาศัยเซิร์ฟเวอร์พร็อกซีที่ทํางานใน TEE ระหว่างเบราว์เซอร์กับผู้ให้บริการเทคโนโลยีโฆษณา เพื่อลบข้อมูลระบุตัวตนในคําขอโฆษณาและบังคับใช้พร็อพเพอร์ตี้ความเป็นส่วนตัว Protected Audience ไม่ได้ใช้รูปแบบพร็อกซีนี้ เราจะปรับ JavaScript API สำหรับ PARAKEET และ Protected Audience ให้สอดคล้องกัน เพื่อรองรับการทำงานในอนาคตในการรวมฟีเจอร์ที่ดีที่สุดของทั้ง 2 ข้อเสนอเข้าด้วยกัน

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

การกำหนดค่าเบราว์เซอร์ใดบ้างที่ใช้ได้

ผู้ใช้สามารถปรับการเข้าร่วมการทดลองใช้ Privacy Sandbox ใน Chrome ได้โดยเปิดหรือปิดการตั้งค่าระดับบนสุดใน chrome://settings/adPrivacy ในระหว่างการทดสอบระยะเริ่มต้น ผู้ใช้จะใช้การตั้งค่า Privacy Sandbox ระดับสูงนี้เพื่อเลือกไม่ใช้กลุ่มเป้าหมายที่ได้รับการคุ้มครองได้ Chrome วางแผนที่จะอนุญาตให้ผู้ใช้ดูและจัดการรายการกลุ่มความสนใจที่ตนอยู่ทั่วทั้งเว็บในเว็บไซต์ที่ตนเข้าชม การตั้งค่าของผู้ใช้อาจเปลี่ยนแปลงไปตามความคิดเห็นจากผู้ใช้ ผู้ควบคุมดูแล และอื่นๆ เช่นเดียวกับเทคโนโลยี Privacy Sandbox เอง

เราจะอัปเดตการตั้งค่าที่ใช้ได้ใน Chrome อย่างต่อเนื่องเมื่อข้อเสนอ Protected Audience พัฒนาไป โดยอิงตามการทดสอบและความคิดเห็น ในอนาคต เราวางแผนที่จะเสนอการตั้งค่าที่ละเอียดยิ่งขึ้นเพื่อจัดการ Protected Audience และข้อมูลที่เชื่อมโยง

ผู้เรียก API จะเข้าถึงการเป็นสมาชิกกลุ่มไม่ได้เมื่อผู้ใช้ท่องเว็บในโหมดไม่ระบุตัวตน และระบบจะนำการเป็นสมาชิกออกเมื่อผู้ใช้ล้างข้อมูลเว็บไซต์



มีส่วนร่วมและแชร์ความคิดเห็น

รับการสนับสนุน

หากต้องการถามคําถามเกี่ยวกับการติดตั้งใช้งาน เดโม หรือเอกสารประกอบ ให้ทำดังนี้

สําหรับข้อบกพร่องและปัญหาเกี่ยวกับการติดตั้งใช้งาน Protected Audience API ใน Chrome ให้ดูปัญหาที่มีอยู่ซึ่งรายงานสำหรับ API * แจ้งปัญหาใหม่ได้ที่ crbug.com/new

รับข้อมูลอัปเดต

  • หากต้องการรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะใน API โปรดเข้าร่วมรายชื่ออีเมลสำหรับนักพัฒนาซอฟต์แวร์
  • หากต้องการติดตามการพูดคุยเกี่ยวกับ API ทั้งหมดที่กำลังดำเนินอยู่อย่างใกล้ชิด ให้คลิกปุ่มติดตามในหน้าข้อเสนอใน GitHub ซึ่งคุณต้องมีหรือสร้างบัญชี GitHub
  • หากต้องการรับข้อมูลอัปเดตโดยรวมเกี่ยวกับ Privacy Sandbox โปรดสมัครรับฟีด RSS [ความคืบหน้าใน Privacy Sandbox]

ดูข้อมูลเพิ่มเติม


รูปภาพโดย Ray Hennessy ใน Unsplash