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

บทความนี้มีไว้สําหรับใคร

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

Protected Audience คืออะไร

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

Protected Audience เป็นการทดสอบแรกที่จะติดตั้งใช้งานใน Chromium ภายใน กลุ่มข้อเสนอ TURTLEDOVE

แผนภาพด้านล่างแสดงภาพรวมวงจรการใช้งาน FLEDGE

ภาพประกอบแสดงภาพรวมแต่ละขั้นตอนในวงจรชีวิตของ FLEDGE
อายุการใช้งานของ FLEDGE

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

การสาธิต Protected Audience

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

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

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

มีการทดลองใช้ต้นทางและความเกี่ยวข้องของ Privacy Sandbox ที่พร้อมให้ใช้งานใน Chrome เบต้า 101.0.4951.26 ขึ้นไปบนเดสก์ท็อปสำหรับ Protected Audience หัวข้อ และ 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 นี้

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

  • เปิดใช้ API ความเป็นส่วนตัวเกี่ยวกับโฆษณาทั้งหมดภายใต้ chrome://settings/adPrivacy
  • ตั้งค่าแฟล็กจากบรรทัดคำสั่ง

แสดงโฆษณาใน iframe หรือเฟรมที่มีการปิดกั้น

โฆษณาจะแสดงผลใน <iframe> หรือ <fencedframe> ได้ โดยขึ้นอยู่กับแฟล็กที่ตั้งค่าไว้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ก่อนใช้ 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 อย่างชัดแจ้งในช่วงระยะเวลาการทดสอบจะสามารถใช้ นโยบายสิทธิ์ที่เกี่ยวข้อง เพื่อบล็อกการเข้าถึง

มีนโยบายสิทธิ์ของ 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

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

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

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

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

สคริปต์ Worklet แบบสดจะแสดงในแผง Threads ด้วย

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

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

สังเกตเหตุการณ์ Protected Audience

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

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


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

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

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

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

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

พร็อพเพอร์ตี้ ต้องระบุ ตัวอย่าง บทบาท
owner ต้องระบุ 'https://dsp.example' ต้นทางของเจ้าของกลุ่มความสนใจ
name ต้องระบุ 'custom-bikes' ชื่อกลุ่มความสนใจ
biddingLogicUrl** ไม่บังคับ* 'https://dsp.example/bid/custom-bikes/bid.js' URL สำหรับ JavaScript สำหรับการเสนอราคาที่เรียกใช้ใน Worklet
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 ชั่วโมง และ การอัปเดตที่ดำเนินการไม่สำเร็จเนื่องจากตัดการเชื่อมต่อจากอินเทอร์เน็ตจะพยายามเชื่อมต่อใหม่ทันที

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

การอัปเดตกลุ่มความสนใจที่เป็นต้นทางของเฟรมปัจจุบันจะทริกเกอร์ด้วยตนเองได้ผ่าน 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() ฟังก์ชันนี้เรียกเพียงครั้งเดียวสำหรับโฆษณาที่ผู้สมัครแต่ละรายการ runAdAuction() ตรวจสอบโฆษณาแต่ละรายการ พร้อมกับราคาเสนอและข้อมูลเมตาที่เกี่ยวข้อง จากนั้นจึงกำหนดโฆษณา ที่เป็นตัวเลข

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

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

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

  • auctionSignals
    พร็อพเพอร์ตี้ของอาร์กิวเมนต์การกำหนดค่าการประมูลที่ส่งไปยัง 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
    ข้อมูลเมตาที่กำหนดเองเกี่ยวกับโฆษณา เช่น ข้อมูลที่ผู้ขายคาดหวังว่าจะเรียนรู้เกี่ยวกับการเสนอราคานี้ หรือ ครีเอทีฟโฆษณา ผู้ขาย](/privacy-sandbox/resources/อภิธานศัพท์#ssp) ใช้ข้อมูลนี้ในการประมูลและตัดสินใจ ครีเอทีฟโฆษณา ผู้ขายใช้ข้อมูลนี้ในการประมูลและตัดสินใจ

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

  • 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 รันไทม์สูงสุด (ms) ของสคริปต์ scoreAd() ของผู้ขาย
perBuyerSignals ไม่บังคับ {'https://dsp.example': {...},
  'https://another-buyer.example': {...},
...}
สัญญาณบริบทเกี่ยวกับหน้าเว็บของผู้ซื้อแต่ละรายจากเซิร์ฟเวอร์ของผู้ซื้อ
perBuyerTimeouts ไม่บังคับ 50 รันไทม์สูงสุด (ms) ของสคริปต์ generateBid() ของผู้ซื้อบางราย
componentAuctions ไม่บังคับ [{'seller': 'https://www.some-other-ssp.com',
  'decisionLogicUrl': ..., ...},
  ...]
การกำหนดค่าเพิ่มเติมสำหรับการประมูลคอมโพเนนต์

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

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

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

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

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 โดยค่าเริ่มต้น โปรดเปิดใช้ API ความเป็นส่วนตัวเกี่ยวกับโฆษณาทั้งหมดใน chrome://settings/adPrivacy เพื่อให้ทดสอบเมธอดได้ หากใช้ Chrome ที่มีแฟล็กบรรทัดคำสั่งเพื่อเปิดใช้ Protected Audience คุณจะต้อง เปิดใช้เมธอดอย่างชัดเจนโดยรวม Flag BiddingAndScoringDebugReportingAPI หาก ไม่ได้เปิดใช้งานการตั้งค่าสถานะ วิธีการจะยังคงใช้ได้แต่ไม่ได้ดำเนินการใดๆ

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

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

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



แผนภาพด้านล่างแสดงแต่ละขั้นตอนของการประมูลเพื่อแสดงโฆษณาที่ใช้ Protected Audience API

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


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

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

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

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

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

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

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

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

มีการกำหนดค่าเบราว์เซอร์แบบใดบ้าง

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

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

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



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

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

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

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

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

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

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


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