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

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

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

Protected Audience คืออะไร

Protected Audience API เป็นข้อเสนอของ Privacy Sandbox เพื่อแสดงรีมาร์เก็ตติ้งและ Use Case ของกลุ่มเป้าหมายที่กำหนดเอง ซึ่งออกแบบมาให้บุคคลที่สามใช้ในการติดตามพฤติกรรมการท่องเว็บของผู้ใช้ในเว็บไซต์ต่างๆ ไม่ได้ 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, 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 นี้

คุณทดสอบ 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 จะอธิบายวิธีการตั้งค่า Flag เมื่อเรียกใช้ Chrome และเบราว์เซอร์อื่นๆ ที่ใช้ Chromium จากบรรทัดคำสั่ง รายการการแจ้งว่าไม่เหมาะสมของ Protected Audience ทั้งหมดมีอยู่ในการค้นหาโค้ด Chromium

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

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

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

คำอธิบาย 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 ด้วย

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

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

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

คุณดูกลุ่มความสนใจและกิจกรรมการประมูลของ Protected Audience ได้จากแผงแอปพลิเคชันในเครื่องมือสำหรับนักพัฒนาเว็บใน 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. เบราว์เซอร์ของผู้ใช้ถูกขอให้เพิ่มกลุ่มความสนใจ

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

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

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



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

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

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


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