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. Reklam görünümü uygulamanın penceresine eklenmediğinden SDK, reklamın kullanıcıya görünür olup olmadığını belirlemek için SDK çalışma zamanı dışında kullandığı View API'lerini kullanamaz. Bu, beklenen değerleri döndürmeyen getLocationOnScreen, getLocationInWindow veya getVisibility gibi Android View API'lerini içerir.
Reklam görüntülenebilirliği ölçümünü desteklemek, temel bir SDK Runtime şartıdır. Bu tasarım önerisi, Open Measurement ve benzer ölçüm hizmetlerinin desteklenmesini amaçlamaktadır. Burada ele alınan çözümler Attribution Reporting API'leri için de geçerli olabilir.
Özellikler
Bu tasarım, aşağıdaki görüntülenebilirlik verilerinin (adlar geçicidir ve değişebilir) hesaplanması için reklam SDK'larını veya ölçüm iş ortaklarını desteklemeyi amaçlamaktadır:
viewport [Rect]: Platformun özelliklerine bağlı olarak cihaz ekranını veya uygulama penceresinin geometrisini temsil eder.uiContainerGeometry [Rect]: OluşturulanSandboxedSdkViewöğesinin geometrisi.alpha [float]: OluşturulanSandboxedSdkViewöğesinin opaklığı.onScreenGeometry [Rect]:uiContainerGeometryöğesinin, üst görünümler tarafından kırpılmayan alt kümesi (viewportdahil).occludedGeometry [Rect]:onScreenGeometry'ün, uygulama hiyerarşisindeki görünümler tarafından engellenen kısımları.Rectiçerir. Her kapatma içinSandboxedSdkView onScreenGeometryile kesişen sıfır, bir veya daha fazla uygulama görünümüne karşılık gelir.
Şartlar
uiContainerGeometry,onScreenGeometryveoccludedGeometrydeğerleri,viewportkoordinat alanında ifade edilir.- Görünürlük değişikliği raporlaması minimum gecikmeyle gerçekleşir.
- Görünürlük, reklam görünümünün ilk görünümünden son görünümüne 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 nasıl çalıştığına dayanmaktadı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. Gözlemci, capabilities bölümündeki veri türlerini değiştiren alakalı etkinlikler her algılandığında görünürlük bilgileri 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 doğrudan onlara gönderilebilir. Ölçüm iş ortakları, JavaScript görünürlük etkinlikleri oluşturmak için kullanıcı arayüzü kitaplıklarından elde edilen bilgileri, halihazırda mevcut olan içeriklerle ilgili verilerle (ör. reklam öğesine yerleştirilen ölçüm komut dosyaları kullanılırken) birleştirebilir.
İstemci kitaplığı, ViewTreeObserver gibi etkinlik işleyiciler aracılığıyla reklam kullanıcı arayüzündeki değişiklikleri dinler. 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) daha büyükse yeni bir AdContainerInfo nesnesi oluşturulur ve gözlemciye bir bildirim gönderilir. Bu etkinliğe dayalı model, günümüzde Android'deki çoğu OMID uygulamasında yapılan yoklamaya kıyasla sistem sağlığı için daha iyidir.
API
privacysandbox.ui.core kitaplığına aşağıdakiler eklenecek:
SessionObserver: Genellikle ölçüm SDK'sı tarafından uygulanır ve privacysandbox.ui aracılığıyla SDK tarafından döndürülen oturuma eklenir. Bu arayüz, ölçüm SDK'sının belirli görüntülenebilirlik sinyali kategorilerini etkinleştirmesine de olanak tanır. Bu da kullanıcı arayüzü istemci kitaplığının yalnızca gözlemcinin ilgilendiği sinyalleri toplamasını sağlar. Bu, genel olarak sistem sağlığı açısından daha iyidir.registerObserver():Sessionsınıfına eklenen bu yöntem, oturuma erişimi olan herkesin gözlemci kaydetmesine olanak tanır. Gözlemci, kullanıcı arayüzü oturumu açıldıktan sonra kaydedilirse önbelleğe alınmışAdContainerInfohemen gönderilir. Oturum açılmadan önce kayıt yaptırıldıysa oturum açıldığındaAdContainerInfogönderilir.AdContainerInfo: Gözlemcinin yukarıdaki capabilites bölümünde listelenen veri türleri için salt okunur reklam kapsayıcısı bilgilerini almasını sağlayan alıcılar içeren bir sınıf. Bu alıcıların döndürdüğü değerler, mümkün olduğundaViewve alt sınıflarındaki mevcut alıcıların döndürdüğü paketlenebilir değerlere karşılık gelir. Reklam kapsayıcısı Jetpack Compose kullanılarak oluşturulduysa kapsayıcının anlamsal özellikleri gösterilir. Bu sınıf, görünürlükle ilgili MRAID ve OMID etkinliklerini hesaplamak için kullanılabilir.SessionObserverotifyAdContainerChanged(): Görüntülenebilirlik her değiştiğinde gözlemciyi bilgilendirmek için kullanılır.AdContainerInfonesnesi geçirir. Bu işlev, Özellikler bölümünde listelenen veri türlerini etkileyen etkinlikler algılandığında çağrılır. Not: Bu yöntem, oturumdaki yöntemlere ek olarak çağrılabilir. Örneğin, SDK'dan reklamın yeniden boyutlandırılması istendiğindeSession.notifyResized()çağrılır ve bu işlem gerçekleştiğindeSessionObserver.notifyAdContainerChanged()de çağrılır.SessionObserverotifySessionClosed(): Gözlemciye oturumun kapatıldığını bildirir.
Gelecekteki geliştirmeler
Uygulama sürecinde çalışan tüm kodlar (privacysandbox.ui.client kitaplığındaki kod dahil) uygulamanın güvenliği ihlal edilirse değiştirilebilir. Bu nedenle, uygulama sürecinde çalışan tüm sinyal toplama mantıkları, uygulama kodu tarafından kurcalanmaya yatkındır. Bu durum, Özel Korumalı Alan kullanıma sunulmadan önce dağıtılan ve uygulama sürecinde çalışan SDK kodu için de geçerlidir. Sonuç olarak, kullanıcı arayüzü kitaplığı tarafından sinyal toplanması güvenlik durumunu kötüleştirmez.
Ayrıca, SDK çalışma zamanındaki kod, setTrustedPresentationCallback adlı bir platform API'si kullanabilir. Bu API, reklam kullanıcı arayüzü sunumuyla ilgili olarak çerçeveden daha güçlü garantiler verebilir. setTrustedPresentationCallback
Yüzey düzeyinde çalışır ve sunum için minimum eşikler (ör. görünür piksel yüzdesi, ekranda kalma süresi veya ölçek) belirterek reklam kullanıcı arayüzünü içeren yüzeyle ilgili onaylar vermeye yardımcı olabilir. Bu veriler, yukarıda açıklanan kullanıcı arayüzü istemci kitaplığı tarafından sağlanan görüntülenebilirlik verileriyle karşılaştırılabilir. Çerçeve tarafından sağlanan veriler daha güvenilir olduğundan, verileri çerçeveden gelen verilerle uyuşmayan kullanıcı arayüzü kitaplığındaki tüm etkinlikler silinebilir. Örneğin, dinleyiciye setTrustedPresentationCallback sağlandığında reklam kullanıcı arayüzünün hiçbir pikselinin ekranda gösterilmediğini belirten bir bildirimle çağrılıyorsa ve istemci kullanıcı arayüzü kitaplığı ekranda sıfır olmayan sayıda piksel gösteriyorsa ikincisinden gelen veriler atılabilir.
Açık sorular
- Bu açıklayıcıda bahsedilmeyen hangi görünürlük sinyalleriyle ilgileniyorsunuz?
- Mevcut öneri, kullanıcı arayüzünde ilgili bir değişiklik olması koşuluyla görüntülenebilirliğin en az 200 milisaniyede bir güncellenmesidir. Bu sıklık sizin için uygun mu? Değilse hangi sıklıkta olmasını tercih edersiniz?
setTrustedPresentationCallbackverileriyle eşleşmediğinde bilgileri 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?setTrustedPresentationCallback- Görüntülenebilirlik sinyallerini nasıl kullanıyorsunuz? Bu soruları yanıtlayan bir geri bildirim göndererek kullanım alanlarınızı anlamamıza yardımcı olun.