SDK โฆษณาในรันไทม์ของ SDK จะเข้าถึงลําดับชั้นมุมมองของผู้เผยแพร่โฆษณาไม่ได้
แต่ SDK ในรันไทม์จะมีมุมมองของตนเอง SDK ไม่สามารถใช้ View API เดียวกันกับที่ใช้นอกรันไทม์ SDK เพื่อระบุว่าผู้ใช้มองเห็นโฆษณาหรือไม่ เนื่องจากวิวโฆษณาไม่ได้แนบอยู่กับหน้าต่างของแอปพลิเคชัน ซึ่งรวมถึง View API ของ Android เช่น getLocationOnScreen
,
getLocationInWindow
หรือ getVisibility
ซึ่งไม่แสดงผลลัพธ์ที่คาดไว้
การรองรับการวัดการมองเห็นโฆษณาเป็นข้อกําหนดหลักของ รันไทม์ SDK วัตถุประสงค์ของข้อเสนอการออกแบบนี้คือเพื่อให้รองรับ Open Measurement และบริการวัดผลที่คล้ายกัน วิธีการที่กล่าวถึงที่นี่อาจใช้กับ Attribution Reporting API ได้ด้วย
ความสามารถ
การออกแบบนี้มีจุดประสงค์เพื่อรองรับ SDK โฆษณาหรือพาร์ทเนอร์การวัดผลในการคํานวณข้อมูลการมองเห็นโฆษณาต่อไปนี้ (ชื่อเป็นชื่อชั่วคราวและอาจมีการเปลี่ยนแปลง)
viewport [Rect]
: แสดงเรขาคณิตของหน้าจออุปกรณ์หรือหน้าต่างแอป ทั้งนี้ขึ้นอยู่กับความสามารถของแพลตฟอร์มuiContainerGeometry [Rect]
: เรขาคณิตของSandboxedSdkView
ที่กำลังแสดงผลalpha [float]
: ความทึบแสงของSandboxedSdkView
ที่กำลังแสดงผลonScreenGeometry [Rect]
: ชุดย่อยของuiContainerGeometry
ซึ่งไม่ได้ถูกตัดโดยมุมมองหลักจนถึงและรวมถึงviewport
)occludedGeometry [Rect]
: ส่วนของonScreenGeometry
ที่บดบังโดยมุมมองใดๆ ในลําดับชั้นของแอปพลิเคชัน มีRect
สําหรับการบดบังแต่ละรายการ ซึ่งสอดคล้องกับมุมมองแอป 0, 1 หรือมากกว่าที่ตัดกันกับSandboxedSdkView onScreenGeometry
ข้อกำหนด
- ค่าของ
uiContainerGeometry
,onScreenGeometry
และoccludedGeometry
จะแสดงในพื้นที่พิกัดของviewport
- การรายงานการเปลี่ยนแปลงระดับการแชร์จะเกิดขึ้นโดยใช้เวลาในการตอบสนองน้อยที่สุด
- การมองเห็นสามารถวัดได้ตลอดวงจรของการแสดงโฆษณา ตั้งแต่การแสดงครั้งแรกจนถึงการแสดงครั้งสุดท้าย
ข้อเสนอการออกแบบ
ข้อเสนอนี้อิงตามวิธีการทํางานของการนําเสนอ UI โดยใช้ไลบรารี UI ของไคลเอ็นต์และผู้ให้บริการ เราจะขยายไลบรารี UI เพื่ออนุญาตให้ SDK ลงทะเบียนผู้สังเกตการณ์เซสชัน UI อย่างน้อย 1 คน ผู้สังเกตการณ์จะได้รับข้อมูลการมองเห็นทุกครั้งที่ตรวจพบเหตุการณ์ที่เกี่ยวข้องซึ่งแก้ไขประเภทข้อมูลในส่วนcapabilities SDK การวัดผลในรันไทม์ SDK (การติดตั้งใช้งาน OMID และ MRAID) สามารถแนบเครื่องมือสังเกตการณ์นี้กับเซสชัน UI เพื่อให้ส่งข้อมูลนี้ไปยัง SDK ได้โดยตรง พาร์ทเนอร์การวัดผลสามารถรวมข้อมูลที่ได้จากไลบรารี UI เข้ากับข้อมูลเกี่ยวกับเนื้อหาที่มีอยู่แล้ว (เช่น เมื่อใช้สคริปต์การวัดผลที่แทรกไว้ในครีเอทีฟโฆษณา) เพื่อสร้างเหตุการณ์การมองเห็นโฆษณา JavaScript
คลังไคลเอ็นต์จะคอยฟังการเปลี่ยนแปลงใน UI ของโฆษณาผ่าน Listener เหตุการณ์ เช่น ViewTreeObserver
เมื่อใดก็ตามที่ระบบพิจารณาว่า UI ของโฆษณามีการเปลี่ยนแปลงในลักษณะที่อาจส่งผลต่อการวัดความสามารถในการแสดงโฆษณา ไลบรารีไคลเอ็นต์จะตรวจสอบว่ามีการแจ้งเตือนครั้งล่าสุดไปยังผู้สังเกตเมื่อใด หากการอัปเดตล่าสุดนานกว่าเวลาในการตอบสนองที่อนุญาต (SDK กำหนดค่าได้สูงสุด 200 มิลลิวินาทีบนอุปกรณ์เคลื่อนที่) ระบบจะสร้างออบเจ็กต์ AdContainerInfo
ใหม่และส่งการแจ้งเตือนไปยังผู้สังเกตการณ์ รูปแบบที่อิงตามเหตุการณ์นี้ส่งผลดีต่อสถานะของระบบมากกว่าการสำรวจที่เกิดจากการติดตั้งใช้งาน OMID ส่วนใหญ่ใน Android ในปัจจุบัน
API
ระบบจะเพิ่มรายการต่อไปนี้ลงในไลบรารี privacysandbox.ui.core
SessionObserver
: โดยทั่วไปแล้ว SDK การวัดผลจะใช้ค่านี้ โดยแนบไปกับเซสชันที่ SDK แสดงผ่าน privacysandbox.ui อินเทอร์เฟซนี้ยังช่วยให้ SDK การวัดผลเลือกใช้หมวดหมู่สัญญาณการแสดงผลได้อีกด้วย ซึ่งจะช่วยให้ไลบรารีไคลเอ็นต์ UI รวบรวมเฉพาะสัญญาณที่ผู้สังเกตการณ์สนใจ ซึ่งส่งผลดีต่อความเสถียรของระบบโดยรวมregisterObserver()
: เพิ่มลงในคลาสSession
แล้ว วิธีการนี้ช่วยให้ทุกคนที่มีสิทธิ์เข้าถึงเซสชันลงทะเบียนผู้สังเกตการณ์ได้ หากผู้สังเกตการณ์ลงทะเบียนหลังจากเปิดเซสชัน UI แล้ว ระบบจะส่งAdContainerInfo
ที่แคชไว้ให้ทันที หากลงทะเบียนไว้ก่อนเปิดเซสชัน ระบบจะส่งAdContainerInfo
เมื่อเปิดเซสชันAdContainerInfo
: คลาสที่มี Geter ซึ่งช่วยให้ผู้สังเกตการณ์ได้รับข้อมูลคอนเทนเนอร์โฆษณาแบบอ่านอย่างเดียวสําหรับประเภทข้อมูลที่แสดงในส่วนความสามารถด้านบน ผลลัพธ์ที่แสดงค่าจากตัวรับเหล่านี้จะสอดคล้องกับผลลัพธ์ที่แสดงค่าแบบแยกส่วนได้ของตัวรับที่มีอยู่ของView
และคลาสย่อย หากสร้างคอนเทนเนอร์โฆษณาโดยใช้ Jetpack Compose การดำเนินการนี้จะแสดงพร็อพเพอร์ตี้เชิงความหมายของคอนเทนเนอร์ คลาสนี้ใช้คํานวณเหตุการณ์ MRAID และ OMID ที่เกี่ยวข้องกับการมองเห็นโฆษณาได้SessionObserverotifyAdContainerChanged()
: ใช้เพื่อแจ้งผู้สังเกตการณ์ทุกครั้งที่การมองเห็นโฆษณามีการเปลี่ยนแปลง โดยส่งออบเจ็กต์AdContainerInfo
ซึ่งจะเรียกใช้ทุกครั้งที่ตรวจพบเหตุการณ์ที่ส่งผลต่อประเภทข้อมูลที่แสดงในส่วนความสามารถ หมายเหตุ: ระบบอาจเรียกใช้เมธอดนี้เพิ่มเติมจากเมธอดในเซสชัน ตัวอย่างเช่น มีการเรียกSession.notifyResized()
เพื่อขอให้ SDK ปรับขนาดโฆษณา และมีการเรียกSessionObserver.notifyAdContainerChanged()
ด้วยเมื่อเกิดเหตุการณ์นี้SessionObserverotifySessionClosed()
: แจ้งให้ผู้สังเกตการณ์ทราบว่าเซสชันปิดแล้ว
การปรับปรุงในอนาคต
โค้ดใดก็ตามที่ทำงานในกระบวนการของแอปพลิเคชัน รวมถึงโค้ดจากไลบรารี privacysandbox.ui.client สามารถแก้ไขได้หากแอปพลิเคชันถูกบุกรุก ดังนั้น ตรรกะการเก็บรวบรวมสัญญาณที่ทำงานในกระบวนการของแอปพลิเคชันจึงมีแนวโน้มที่จะเกิดการแทรกแซงจากโค้ดแอปพลิเคชัน นโยบายนี้มีผลกับโค้ด SDK ที่ติดตั้งใช้งานก่อนความพร้อมใช้งานของ Privacy Sandbox ที่ทำงานในกระบวนการสมัครด้วย ดังนั้น การเก็บรวบรวมสัญญาณโดยไลบรารี UI จึงไม่ทำให้สถานการณ์ด้านความปลอดภัยแย่ลง
นอกจากนี้ โค้ดในรันไทม์ของ SDK ยังใช้ API ของแพลตฟอร์มที่เรียกว่า setTrustedPresentationCallback
ได้ ซึ่งสามารถรับประกันการแสดง UI โฆษณาจากเฟรมเวิร์กได้มากขึ้น setTrustedPresentationCallback
ทํางานในระดับแพลตฟอร์ม และช่วยยืนยันเกี่ยวกับแพลตฟอร์มที่มี UI โฆษณาได้โดยระบุเกณฑ์ขั้นต่ำสําหรับการแสดง เช่น เปอร์เซ็นต์ของพิกเซลที่มองเห็นได้ เวลาบนหน้าจอ หรือขนาด ข้อมูลนี้สามารถตรวจสอบกับข้อมูลการมองเห็นโฆษณาที่ได้จากไลบรารีไคลเอ็นต์ UI ตามที่อธิบายไว้ข้างต้น เนื่องจากข้อมูลที่ได้จากเฟรมเวิร์กมีความน่าเชื่อถือมากกว่า คุณจึงทิ้งเหตุการณ์จากไลบรารี UI ข้อมูลของเหตุการณ์ไม่ตรงกับข้อมูลจากเฟรมเวิร์กได้ ตัวอย่างเช่น หากเรียกใช้โปรแกรมฟังที่ระบุให้กับ setTrustedPresentationCallback
ด้วยการแจ้งเตือนว่าไม่มีพิกเซลของ UI โฆษณาแสดงบนหน้าจอ และไลบรารี UI ของไคลเอ็นต์แสดงจำนวนพิกเซลบนหน้าจอที่ไม่ใช่ 0 ระบบจะทิ้งข้อมูลจากรายการหลัง
คำถามปลายเปิด
- สัญญาณการมองเห็นโฆษณาที่คุณสนใจซึ่งไม่ได้กล่าวถึงในคําอธิบายนี้มีอะไรบ้าง
- ข้อเสนอปัจจุบันคือการอัปเดตการมองเห็นโฆษณาทุกๆ 200 มิลลิวินาทีเป็นอย่างน้อย หากมีการเปลี่ยนแปลงที่เกี่ยวข้องใน UI คุณยอมรับความถี่นี้ไหม หากไม่ คุณต้องการความถี่ใด
- คุณต้องการวิเคราะห์ข้อมูลจาก
setTrustedPresentationCallback
ด้วยตนเอง หรือต้องการให้ไลบรารี UI ของผู้ให้บริการวางข้อมูลจากไลบรารี UI ของลูกค้าเมื่อข้อมูลไม่ตรงกับข้อมูลsetTrustedPresentationCallback
- คุณใช้สัญญาณความสามารถในการแสดงตัวโฆษณาอย่างไร โปรดช่วยเราทำความเข้าใจกรณีการใช้งานของคุณด้วยการยื่นความคิดเห็นที่ตอบคําถามเหล่านี้