SDK โฆษณาในรันไทม์ของ SDK จะเข้าถึงลําดับชั้นมุมมองของผู้เผยแพร่โฆษณาไม่ได้
แต่ SDK ในรันไทม์จะมีมุมมองของตัวเอง SDK จะใช้ View API เดียวกันกับที่ใช้นอกรันไทม์ SDK เพื่อระบุว่าผู้ใช้มองเห็นโฆษณาหรือไม่ไม่ได้ เนื่องจากวิวโฆษณาไม่ได้แนบอยู่กับหน้าต่างของแอปพลิเคชัน ซึ่งรวมถึง View API ของ Android เช่น getLocationOnScreen
,
getLocationInWindow
หรือ getVisibility
ซึ่งไม่แสดงผลลัพธ์ที่คาดไว้
การรองรับการวัดการมองเห็นโฆษณาเป็นข้อกําหนดหลักของ รันไทม์ SDK ข้อเสนอการออกแบบนี้มุ่งหวังที่จะให้การสนับสนุนสำหรับ Open บริการวัดผลและบริการวัดผลที่คล้ายกัน โซลูชันที่กล่าวถึงที่นี่อาจใช้กับ 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 เพื่อให้ส่งข้อมูลนี้ให้พวกเขาได้ โดยตรง พาร์ทเนอร์การวัดผลสามารถรวมข้อมูลที่ได้จาก 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 ของไคลเอ็นต์จะแสดง
จำนวนพิกเซลบนหน้าจอที่ไม่ใช่ 0 สามารถทิ้งข้อมูลจากรายการหลังได้
คำถามปลายเปิด
เรายินดีรับความคิดเห็นเกี่ยวกับประเด็นต่อไปนี้
- สัญญาณการมองเห็นโฆษณาที่คุณสนใจซึ่งไม่ได้กล่าวถึงในคําอธิบายนี้มีอะไรบ้าง
- ข้อเสนอปัจจุบันคือให้อัปเดตความสามารถในการแสดงตัวโฆษณาไม่น้อยกว่าทุก 200 มิลลิวินาที หากมีการเปลี่ยนแปลงที่เกี่ยวข้องใน UI นี่ใช่ เป็นความถี่ที่คุณรับได้ หากไม่ใช่ คุณต้องการให้แสดงโฆษณาบ่อยเพียงใด
- คุณต้องการวิเคราะห์ข้อมูลจาก
setTrustedPresentationCallback
ด้วยตนเอง หรือต้องการให้ไลบรารี UI ของผู้ให้บริการวางข้อมูลจากไลบรารี UI ของลูกค้าเมื่อข้อมูลไม่ตรงกับข้อมูลsetTrustedPresentationCallback
- คุณใช้สัญญาณความสามารถในการแสดงตัวโฆษณาอย่างไร โปรดช่วยเราทำความเข้าใจกรณีการใช้งานของคุณด้วยการยื่นความคิดเห็นที่ตอบคําถามเหล่านี้