บทความนี้มีไว้สําหรับใคร
โพสต์นี้เป็นข้อมูลอ้างอิงทางเทคนิคเกี่ยวกับการปรับปรุง Protected Audience API เวอร์ชันทดลองในปัจจุบัน
Protected Audience API เป็นภาพรวมด้านเทคนิคน้อยกว่าของข้อเสนอ และยังมีอภิธานศัพท์
การสาธิต Protected Audience จะแสดงคำแนะนำแบบทีละขั้นเกี่ยวกับการทำให้ FLEDGE พื้นฐานใช้งานได้
วิดีโอสาธิตเกี่ยวกับ Protected Audience อธิบายวิธีการทำงานของโค้ดเดโม และแสดงวิธีใช้เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome สำหรับการแก้ไขข้อบกพร่องของ Protected Audience
Protected Audience คืออะไร
Protected Audience API เป็นข้อเสนอของ Privacy Sandbox เพื่อแสดงรีมาร์เก็ตติ้งและ Use Case ของกลุ่มเป้าหมายที่กำหนดเอง ซึ่งออกแบบมาให้บุคคลที่สามใช้ในการติดตามพฤติกรรมการท่องเว็บของผู้ใช้ในเว็บไซต์ต่างๆ ไม่ได้ API จะเปิดใช้การประมูลในอุปกรณ์ตามเบราว์เซอร์เพื่อเลือกโฆษณาที่เกี่ยวข้องกับเว็บไซต์ที่ผู้ใช้เคยเข้าชมก่อนหน้านี้
Protected Audience เป็นการทดสอบแรกที่จะนำมาใช้ใน Chromium ภายในกลุ่มข้อเสนอ TURTLEDOVE
แผนภาพด้านล่างแสดงภาพรวมวงจรการใช้งาน FLEDGE
![ภาพประกอบแสดงภาพรวมแต่ละขั้นตอนในวงจรชีวิตของ FLEDGE](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/fledgeblog1.png?authuser=6&hl=th)
ฉันจะลองใช้ 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 การประมูลเพื่อแสดงโฆษณา](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/screenshot-devtools-f272e7a201571.png?authuser=6&hl=th)
เมื่อเบรกพอยท์ทริกเกอร์ การดำเนินการจะหยุดชั่วคราวก่อนคำสั่งแรกที่ระดับบนสุดของสคริปต์ Worklet คุณสามารถใช้เบรกพอยท์ปกติหรือคำสั่งขั้นตอนเพื่อไปยังฟังก์ชันการเสนอราคา/การให้คะแนน/การรายงาน
สคริปต์ Worklet แบบสดจะแสดงในแผง Threads ด้วย
![ภาพหน้าจอของเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome Canary ที่ไฮไลต์แผงเทรดในแผงแหล่งที่มา ซึ่งแสดงให้เห็นสคริปต์เวิร์กเล็ตปัจจุบันที่ถูกหยุดชั่วคราว](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/screenshot-devtools-chr-49c6b80c72f4a.png?authuser=6&hl=th)
เนื่องจากเวิร์กเล็ตบางรายการอาจทำงานพร้อมกัน เทรดหลายรายการจึงอาจอยู่ในสถานะ "หยุดชั่วคราว" ที่นั่น คุณสามารถใช้รายการชุดข้อความเพื่อสลับระหว่างชุดข้อความต่างๆ และให้กลับมาทำงานอีกครั้งหรือตรวจสอบอย่างละเอียดยิ่งขึ้นตามความเหมาะสม
สังเกตเหตุการณ์ Protected Audience
คุณดูกลุ่มความสนใจและกิจกรรมการประมูลของ Protected Audience ได้จากแผงแอปพลิเคชันในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
หากคุณไปที่เว็บไซต์ช็อปปิ้งเดโมของ Protected Audience ในเบราว์เซอร์ที่เปิดใช้ Protected Audience เครื่องมือสำหรับนักพัฒนาเว็บจะแสดงข้อมูลเกี่ยวกับเหตุการณ์ join
![แผงแอปพลิเคชันเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome Canary ที่แสดงข้อมูลเกี่ยวกับเหตุการณ์การเข้าร่วมกลุ่มความสนใจของ Protected Audience](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/the-devtools-applicati-c7168a6021513.png?authuser=6&hl=th)
ในตอนนี้หากคุณไปที่เว็บไซต์ผู้เผยแพร่โฆษณาเดโมของ Protected Audience ในเบราว์เซอร์ที่เปิดใช้ Protected Audience เครื่องมือสำหรับนักพัฒนาเว็บจะแสดงข้อมูลเกี่ยวกับเหตุการณ์ bid
และ win
![แผงแอปพลิเคชันเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome Canary ที่แสดงข้อมูลเกี่ยวกับราคาเสนอในการประมูลที่ใช้ Protected Audience API และเหตุการณ์ที่ชนะ](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/the-devtools-applicati-33f68c41ad519.png?authuser=6&hl=th)
Protected Audience API ทำงานอย่างไร
ในตัวอย่างนี้ ผู้ใช้เรียกดูเว็บไซต์ของผู้ผลิตจักรยานที่ผลิตตามสั่ง แล้วเข้าชมเว็บไซต์ข่าวในภายหลัง และเห็นโฆษณาจักรยานใหม่จากผู้ผลิตจักรยานดังกล่าว
1. ผู้ใช้เข้าชมเว็บไซต์ของผู้ลงโฆษณา
![ภาพประกอบแสดงบุคคลที่เข้าชมเว็บไซต์ผู้ผลิตจักรยานที่ผลิตเองในเบราว์เซอร์บนแล็ปท็อป](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-showing-p-7cef347843604.png?authuser=6&hl=th)
สมมติว่าผู้ใช้รายหนึ่งเข้าชมเว็บไซต์ของร้านผลิตจักรยานผลิตตามสั่ง (ผู้ลงโฆษณาในตัวอย่างนี้) และใช้เวลาในหน้าผลิตภัณฑ์จักรยานเหล็กแฮนด์เมด ซึ่งทำให้ผู้ผลิตจักรยานมีโอกาสด้านรีมาร์เก็ตติ้ง
2. เบราว์เซอร์ของผู้ใช้ถูกขอให้เพิ่มกลุ่มความสนใจ
![ภาพประกอบแสดงผู้ที่กำลังดูเว็บไซต์ในเบราว์เซอร์บนแล็ปท็อป โค้ด JoinAdInterestGroup() กำลังทำงานในเบราว์เซอร์](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-showing-per-8856a700d6569.png?authuser=6&hl=th)
ส่วนคำอธิบาย: เบราว์เซอร์บันทึกกลุ่มความสนใจ
แพลตฟอร์มฝั่งดีมานด์ (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. ผู้ใช้เข้าชมเว็บไซต์ที่ขายพื้นที่โฆษณา
![ภาพประกอบแสดงภาพผู้ที่กำลังเข้าชมเว็บไซต์ข่าวจากเบราว์เซอร์ในแล็ปท็อป เว็บไซต์
มีช่องโฆษณาว่าง](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-showing-per-113f3bd8c69da.png?authuser=6&hl=th)
ต่อมาผู้ใช้เข้าชมเว็บไซต์ที่ขายพื้นที่โฆษณา ซึ่งในตัวอย่างนี้คือเว็บไซต์ข่าว เว็บไซต์ดังกล่าวมีพื้นที่โฆษณา ซึ่งขายแบบเป็นโปรแกรมโดยใช้การเสนอราคาแบบเรียลไทม์
4. การประมูลเพื่อแสดงโฆษณาจะทำงานในเบราว์เซอร์
![ภาพประกอบแสดงภาพผู้ที่กำลังดูเว็บไซต์ข่าวในเบราว์เซอร์บนแล็ปท็อป การประมูลเพื่อแสดงโฆษณาที่ใช้ Protected Audience API กำลังเกิดขึ้น](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-showing-per-43194d760936b.png?authuser=6&hl=th)
ส่วนคําอธิบาย: ผู้ขายเรียกใช้การประมูลในอุปกรณ์
การประมูลเพื่อแสดงโฆษณามีแนวโน้มที่จะดำเนินการโดย 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': {...}, |
สัญญาณบริบทเกี่ยวกับหน้าเว็บของผู้ซื้อแต่ละรายจากเซิร์ฟเวอร์ของผู้ซื้อ |
perBuyerTimeouts |
ไม่บังคับ | 50 |
รันไทม์สูงสุด (ms) ของสคริปต์ generateBid() ของผู้ซื้อบางราย |
componentAuctions |
ไม่บังคับ | [{'seller': 'https://www.some-other-ssp.com', |
การกำหนดค่าเพิ่มเติมสำหรับการประมูลคอมโพเนนต์ |
* ผู้ขายอาจระบุ 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 กําลังเกิดขึ้น โดยผู้เข้าร่วมจะได้รับข้อมูลจากบริการคีย์/ค่า](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-showing-per-d80920d3014fe.png?authuser=6&hl=th)
ส่วนคําอธิบาย: การดึงข้อมูลแบบเรียลไทม์จากบริการคีย์/ค่าของ 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%) จะแสดงโดยมีล็อกด้านบนเพื่อแสดงว่าโฆษณาแสดงใน
เฟรมที่มีรั้ว](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-showing-per-54028ccec709f.png?authuser=6&hl=th)
ส่วนคำอธิบาย: เบราว์เซอร์แสดงโฆษณาที่ชนะ
ตามที่อธิบายไว้ก่อนหน้านี้: สัญญาที่แสดงผลโดย 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. รายงานการคลิกโฆษณา
![ภาพประกอบแสดงคนกำลังคลิกโฆษณาจักรยานภายในกรอบล้อมรอบบนเว็บไซต์ข่าว พร้อมรายงานข้อมูลไปยังผู้ขายและผู้ซื้อ](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-showing-p-0332a635e2724.png?authuser=6&hl=th)
รายงานการคลิกโฆษณาที่แสดงในเฟรมที่มีการปิดกั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีดำเนินการนี้ได้ที่การรายงานโฆษณา Fenced Frame
แผนภาพด้านล่างแสดงแต่ละขั้นตอนของการประมูลเพื่อแสดงโฆษณาที่ใช้ Protected Audience API
![ภาพประกอบแสดงภาพรวมของการประมูลเพื่อแสดงโฆษณาที่ใช้ Protected Audience API แต่ละขั้นตอน](https://developers.google.cn/static/privacy-sandbox/assets/images/blog/illustration-providing-fda431ab192ee.png?authuser=6&hl=th)
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 จะเข้าถึงการเป็นสมาชิกกลุ่มไม่ได้เมื่อผู้ใช้ท่องเว็บในโหมดไม่ระบุตัวตน และการเป็นสมาชิกจะถูกนำออกเมื่อผู้ใช้ล้างข้อมูลเว็บไซต์
มีส่วนร่วมและแชร์ความคิดเห็น
- GitHub: อ่านข้อเสนอ ตั้งคำถามและติดตามการพูดคุย
- W3C: พูดคุยเกี่ยวกับกรณีการใช้งานของอุตสาหกรรมในกลุ่มธุรกิจการปรับปรุงการโฆษณาบนเว็บ
- การสนับสนุนนักพัฒนาแอป: ถามคำถามและเข้าร่วมการสนทนาในที่เก็บการสนับสนุนนักพัฒนาแอปของ Privacy Sandbox
- รายชื่ออีเมล FLEDGE: fledge-api-announce แสดงประกาศและข้อมูลอัปเดตเกี่ยวกับ API
- เข้าร่วมการโทรที่กำหนดเวลาไว้สำหรับ Protected Audience (ทุกสัปดาห์) ทุกคนสามารถเข้าร่วมได้ แต่ก่อนอื่นอย่าลืมเข้าร่วม WICG คุณสามารถมีส่วนร่วมอย่างตั้งใจหรือฟังอย่างเดียวก็ได้!
- ใช้แบบฟอร์มความคิดเห็นของ Privacy Sandbox เพื่อแชร์ความคิดเห็นแบบส่วนตัวกับทีม Chrome นอกฟอรัมสาธารณะ
รับการสนับสนุน
หากต้องการถามคำถามเกี่ยวกับการใช้งาน การสาธิต หรือเอกสารประกอบ ให้ทำดังนี้
- เปิดปัญหาใหม่ในที่เก็บ Privacy-sandbox-dev-support ตรวจสอบว่าได้เลือกเทมเพลตปัญหาสำหรับ Protected Audience
- แจ้งปัญหาในที่เก็บโค้ดสาธิตใน GitHub
- สำหรับคำถามทั่วไปเพิ่มเติมเกี่ยวกับวิธีดำเนินการตามกรณีการใช้งานด้วย API ให้แจ้งปัญหาในที่เก็บข้อเสนอ
สำหรับข้อบกพร่องและปัญหาเกี่ยวกับการใช้งาน Protected Audience API ใน Chrome ให้ทำดังนี้ * ดูปัญหาที่มีอยู่ ที่รายงานสำหรับ API * แจ้งปัญหาใหม่ที่ crbug.com/new
รับข้อมูลอัปเดต
- หากต้องการรับการแจ้งเตือนการเปลี่ยนแปลงสถานะใน API โปรดเข้าร่วมรายชื่ออีเมลสำหรับนักพัฒนาซอฟต์แวร์
- หากต้องการติดตามการสนทนาที่กำลังดำเนินอยู่ทั้งหมดเกี่ยวกับ API อย่างใกล้ชิด ให้คลิกปุ่มดูในหน้าข้อเสนอบน GitHub คุณจำเป็นต้องมีหรือสร้างบัญชี GitHub
- หากต้องการรับข้อมูลอัปเดตโดยรวมเกี่ยวกับ Privacy Sandbox ให้ติดตามฟีด RSS [ความคืบหน้าใน Privacy Sandbox]
ดูข้อมูลเพิ่มเติม
- Protected Audience API: ภาพรวมทางเทคนิคของข้อเสนอน้อยกว่า
- การสาธิต Protected Audience: คำแนะนำแบบทีละขั้นเกี่ยวกับการติดตั้งใช้งาน Protected Audience เบื้องต้น
- วิดีโอเดโมของ Protected Audience: อธิบายโค้ดเดโมและแสดงวิธีใช้เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome เพื่อแก้ไขข้อบกพร่องของ Protected Audience
- คำอธิบายทางเทคนิคของ Protected Audience API
- เจาะลึกเรื่อง Privacy Sandbox
- ความตั้งใจในการสร้างต้นแบบ
รูปภาพโดย Ray Hennessy ใน Unsplash