SDK Çalışma Zamanı'ndaki reklam SDK'ları yayıncının görünüm hiyerarşisine erişemez.
Bunun yerine, Çalışma Zamanı'ndaki SDK'ların kendi görünümleri vardır. SDK, reklamın kullanıcı tarafından görünüp görünmeyeceğini belirlemek için SDK çalışma zamanı dışında kullandıkları View API'lerini, uygulamanın penceresine ekli olmadığından kullanamaz. Buna, beklenen değerleri döndürmeyen getLocationOnScreen
, getLocationInWindow
veya getVisibility
gibi Android View API'leri de dahildir.
Reklam görüntülenebilirliği ölçümünün desteklenmesi, temel SDK Çalışma Zamanı gereksinimidir. Bu tasarım teklifi, Open Measurement ve benzer ölçüm hizmetleri için destek sağlamayı amaçlar. Burada açıklanan çözümler Attribution Reporting API'leri için de geçerli olabilir. Bu teklifle ilgili geri bildiriminizi göndermenizi öneririz.
Özellikler
Bu tasarım, aşağıdaki görüntülenebilirlik verilerini hesaplamaları için reklam SDK'larını veya ölçüm iş ortaklarını desteklemeyi amaçlamaktadır (adlar geçicidir ve değişebilir):
viewport [Rect]
: Platformun özelliklerine bağlı olarak cihaz ekranını veya uygulama penceresi geometrisini temsil eder.uiContainerGeometry [Rect]
: OluşturulanSandboxedSdkView
geometrisi.alpha [float]
: OluşturulanSandboxedSdkView
öğesinin opaklığı.onScreenGeometry [Rect]
:viewport
dahil olmak üzere, üst görüntülemeler tarafından kırpılmayanuiContainerGeometry
alt kümesi).occludedGeometry [Rect]
: Uygulama hiyerarşisindeki herhangi bir görünüm tarafından engellenenonScreenGeometry
bölümleri. Her kapatma içinSandboxedSdkView onScreenGeometry
ile kesişen sıfır, bir veya daha fazla uygulama görünümüne karşılık gelen birRect
içerir
Koşullar
uiContainerGeometry
,onScreenGeometry
veoccludedGeometry
değerleri,viewport
koordinat alanında ifade edilir.- Görünürlük değişikliği raporları, minimum gecikmeyle gerçekleşir.
- Görünürlük, reklam görüntülemesinin ilk gösteriminden son gösterimine kadar tüm yaşam döngüsü boyunca ölçülebilir.
Tasarım teklifi
Bu teklif, istemci ve sağlayıcı kullanıcı arayüzü kitaplıklarını kullanarak kullanıcı arayüzü sunumunun çalışma şekline dayalıdır. SDK'nın, kullanıcı arayüzü oturumunun bir veya daha fazla gözlemcisini kaydetmesine olanak tanımak için kullanıcı arayüzü kitaplıklarını genişleteceğiz. capabilities bölümündeki veri türlerini değiştiren ilgili etkinlikler tespit edildiğinde, gözlemci görüntülenebilirlik bilgilerini alır. SDK çalışma zamanındaki Ölçüm SDK'ları (OMID ve MRAID uygulamaları), bu gözlemciyi kullanıcı arayüzü oturumuna ekleyebilir. Böylece bu bilgiler onlara doğrudan gönderilebilir. Ölçüm iş ortakları, JavaScript görüntülenebilirlik etkinlikleri oluşturmak için kullanıcı arayüzü kitaplıklarından alınan bilgileri, mevcut içerikle ilgili verilerle (ör. reklam öğesine yerleştirilen ölçüm komut dosyalarını kullanırken) birleştirebilir.
İstemci kitaplığı, ViewTreeObserver
gibi etkinlik işleyiciler aracılığıyla reklam kullanıcı arayüzündeki değişiklikleri işler. Reklam kullanıcı arayüzünün, görüntülenebilirlik ölçümünü etkileyebilecek şekilde değiştiğini belirlediğinde istemci kitaplığı, gözlemciye son bildirimin ne zaman gönderildiğini kontrol eder. Son güncelleme, izin verilen gecikmeden (SDK tarafından yapılandırılabilir, mobil cihazlarda en az 200 ms'ye kadar) büyükse yeni bir AdContainerInfo
nesnesi oluşturulur ve gözlemciye bildirim gönderilir. Etkinliğe dayalı bu model, sistem sağlığı açısından günümüzde Android'deki çoğu OMID uygulaması tarafından yapılan yoklamalardan daha iyidir.
API
Aşağıdakiler privacysandbox.ui.core kitaplığına eklenir:
SessionObserver
: Tipik olarak ölçüm SDK'sı tarafından uygulanır ve SDK tarafından privacysandbox.ui üzerinden döndürülen oturuma eklenir. Bu arayüz, ölçüm SDK'sının belirli görüntülenebilirlik sinyali kategorilerini etkinleştirmesini de sağlar. Bu da kullanıcı arayüzü istemci kitaplığının yalnızca gözlemcinin ilgilendiği sinyalleri toplamasını sağlar. Bu da genel olarak sistem sağlığı için daha iyidir.registerObserver()
:Session
sınıfına eklenen bu yöntem, Oturum'a erişimi olan herkesin bir gözlemci kaydetmesine olanak tanır. Gözlemci, kullanıcı arayüzü oturumu açıldıktan sonra kaydedilirse önbelleğe alınmışAdContainerInfo
hemen gönderilir. Oturum açılmadan önce kaydedilirse oturum açıldığındaAdContainerInfo
gönderilir.AdContainerInfo
: Gözlemcinin yukarıdaki özellikler bölümünde listelenen veri türleri için salt okunur reklam kapsayıcısı bilgilerini elde etmesini sağlayan alıcılar içeren bir sınıf. Bu alıcılardan elde edilen dönüş değerleri, mümkün olduğundaView
ve alt sınıflarındaki mevcut alıcıların ayrıştırılabilir dönüş değerlerine karşılık gelir. Reklam kapsayıcısı Jetpack Compose kullanılarak oluşturulmuşsa kapsayıcının anlamsal özellikleri ortaya çıkar. Bu sınıf, görüntülenebilirlikle ilgili MRAID ve OMID etkinliklerini hesaplamak için kullanılabilir.SessionObserverotifyAdContainerChanged()
: Görüntülenebilirlik değiştiğinde gözlemleyiciyi bilgilendirmek için kullanılır. BirAdContainerInfo
nesne iletir. Özellikler bölümünde listelenen veri türlerini etkileyen etkinliklerin algılanması halinde bu işleve çağrı yapılır. Not: Bu yöntem, Oturum'daki yöntemlere ek olarak çağrılabilir. Örneğin,Session.notifyResized()
, SDK'dan reklamı yeniden boyutlandırmasını istemek için çağrılır. Bu durumdaSessionObserver.notifyAdContainerChanged()
de çağrılır.SessionObserverotifySessionClosed()
: Gözlemciye oturumun kapatıldığını bildirir.
Gelecekteki geliştirmeler
Uygulamanın güvenliği ihlal edilirse {0}privacysandbox.ui.client kitaplığındaki kod da dahil olmak üzere uygulama işleminde çalışan tüm kodlar değiştirilebilir. Bu nedenle, uygulama işleminde çalışan herhangi bir sinyal toplama mantığı, uygulama kodu tarafından değiştirilmeye açıktır. Bu durum, uygulama işleminde çalışan Özel Korumalı Alan'ın kullanıma sunulmasından önce dağıtılan SDK kodu için de geçerlidir. Sonuç olarak, kullanıcı arayüzü kitaplığı tarafından sinyal toplama, güvenlik durumunu daha da kötüleştirmez.
Ayrıca, SDK çalışma zamanındaki kod, reklam kullanıcı arayüzü sunumu hakkındaki çerçeveden ona daha güçlü garantiler verebilecek setTrustedPresentationCallback
adlı bir platform API'si kullanabilir. setTrustedPresentationCallback
, Yüzey düzeyinde çalışır ve sunum için minimum eşikler (ör. görünür piksel yüzdesi, ekranda görünme süresi veya ölçek) belirterek reklam kullanıcı arayüzünü içeren Yüzey hakkında iddialarda bulunulmasına yardımcı olabilir. Bu veriler, yukarıda açıklanan kullanıcı arayüzü istemci kitaplığı tarafından sağlanan görüntülenebilirlik verileriyle kontrol edilebilir. Çerçeve tarafından sağlanan veriler daha güvenilir olduğundan verileri çerçevedeki verilerle uyumlu olmayan kullanıcı arayüzü kitaplığındaki tüm etkinlikler silinebilir. Örneğin, setTrustedPresentationCallback
için sağlanan dinleyici ekranda reklam kullanıcı arayüzüne ait hiçbir pikselin gösterilmediğine dair bir bildirimle çağrılırsa ve istemci kullanıcı arayüzü kitaplığı ekranda sıfır olmayan bir piksel sayısı gösteriyorsa ikincisinden alınan veriler silinebilir.
Açık sorular
Aşağıdaki konularda geri bildirimlerinizi bekliyoruz:
- İlgilendiğiniz ve bu açıklamada bahsedilmeyen görüntülenebilirlik sinyalleri nelerdir?
- Mevcut teklif, kullanıcı arayüzünde ilgili bir değişiklik olması koşuluyla görüntülenebilirliği en az 200 milisaniyede bir güncellemektir. Bu sıklık sizin için kabul edilebilir mi? Yoksa hangi sıklığı tercih ederdiniz?
setTrustedPresentationCallback
verileriyle eşleşmediğindesetTrustedPresentationCallback
bilgilerini kendiniz mi analiz etmeyi yoksa sağlayıcı kullanıcı arayüzü kitaplığının, istemci kullanıcı arayüzü kitaplığından veri bırakmasını mı tercih edersiniz?- Görüntülenebilirlik sinyalleri nasıl kullanılır? Bu soruları yanıtlayan geri bildirimler göndererek kullanım alanlarınızı anlamamıza yardımcı olun.