SDK Çalışma Zamanı görüntülenebilirliği tasarım teklifi

SDK Çalışma Zamanı'ndaki reklam SDK'ları, yayıncının görüntüleme hiyerarşisine erişemez. Bunun yerine, çalışma zamanındaki SDK'ların kendi görünümleri vardır. SDK, aynı görevi görecek Reklamın olup olmadığını belirlemek için SDK çalışma zamanı dışında kullandıkları şekliyle API'leri kullanıcı tarafından görülebilir, çünkü reklam görünümü, uygulamanın penceresini kapatın. Buna getLocationOnScreen gibi Android View API'leri dahildir. getLocationInWindow veya getVisibility gibi, beklenen sonucu döndürmeyen değerler.

Reklam görüntülenebilirliği ölçümünü desteklemek, temel SDK Çalışma Zamanı gereksinimidir. Bu tasarım önerisi, Open Measurement ve benzer ölçüm hizmetleri için destek sağlamayı amaçlamaktadır. Burada açıklanan çözümler Attribution Reporting API'leri için de geçerli olabilir. Bu teklifle ilgili geri bildirimlerinizi bekliyoruz.

İşlemler

Bu tasarım, reklam SDK'larının veya ölçüm iş ortaklarının aşağıdaki görüntülenebilirlik verilerini hesaplamasını desteklemeyi amaçlar (adlar geçicidir ve değişiklik gösterebilir):

SDK Çalışma Zamanı görüntülenebilirliği bileşenlerinin birlikte nasıl çalıştığını gösteren görsel
SDK Çalışma Zamanı Görüntülenebilirliğine Genel Bakış.
  • viewport [Rect]: Platformun özelliklerine bağlı olarak cihaz ekranını veya uygulama penceresi geometrisini temsil eder.
  • uiContainerGeometry [Rect]: Oluşturulan SandboxedSdkView geometrisi.
  • alpha [float]: Oluşturulan SandboxedSdkView öğesinin opaklığı.
  • onScreenGeometry [Rect]: uiContainerGeometry alt kümesi olan viewport dahil olmak üzere üst görüntülemeler tarafından kırpılmayan).
  • occludedGeometry [Rect]: onScreenGeometry öğesinin şurada bulunan bölümleri: uygulamanın hiyerarşisindeki herhangi bir görünüm tarafından engellenmesine izin verilmez. Şunun için bir Rect içerir: kesişen sıfır, bir veya daha fazla uygulama görüntülemesine karşılık gelen her kapatma SandboxedSdkView onScreenGeometry ile

Şartlar

  • uiContainerGeometry, onScreenGeometry ve occludedGeometry için değerler viewport parametresinin koordinat 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üntülemenin ilk görünüşünden son görünüşüne kadar tüm yaşam döngüsü için ölçülebilir.

Teklif tasarlama

Bu teklif, kullanıcı arayüzü sunumunun müşteri ve sağlayıcının kullanıcı arayüzü kitaplıkları. SDK'nın kullanıcı arayüzü oturumuna bir veya daha fazla gözlemci kaydettirmesine izin vermek için kullanıcı arayüzü kitaplıklarını genişleteceğiz. Gözlemci Veri türlerini değiştiren ilgili etkinlikler olduğunda, görüntülenebilirlik bilgileri özellikler bölümü algılanır. SDK çalışma zamanındaki ölçüm SDK'ları (OMID ve MRAID uygulamaları), bu bilgilerin doğrudan kendilerine gönderilebilmesi için bu gözlemciyi kullanıcı arayüzü oturumuna ekleyebilir. Ölçüm iş ortakları, JavaScript görüntülenebilirlik etkinlikleri oluşturmak için kullanıcı arayüzü kitaplıklarından elde edilen bilgileri, mevcut içerikle ilgili verilerle (ör. reklam öğesine yerleştirilen ölçüm komut dosyalarını kullanırken) birleştirebilir.

Görüntülenebilirlik için akışı kontrol edin.
Görüntülenebilirlik akışını kontrol edin.

İstemci kitaplığı, aşağıdakiler gibi etkinlik işleyiciler aracılığıyla reklam kullanıcı arayüzündeki değişiklikleri dinler: ViewTreeObserver olarak. Reklam arayüzünün nasıl etkileyebileceğini öğrenmek için, istemci kitaplığının gözlemciye son bildirim gönderildi. Son güncelleme daha büyükse minimum 200 ms'ye kadar, izin verilen gecikmeden (SDK tarafından yapılandırılabilir) mobil), yeni bir AdContainerInfo nesnesi oluşturulur ve gözlemciye gönderilir. Bu olaya dayalı model, günümüzde Android'deki çoğu OMID uygulaması tarafından yapılan anketlere kıyasla sistem sağlığı için daha iyidir.

API

Aşağıdakiler privacysandbox.ui.core kitaplığına eklenir:

  • SessionObserver: Genellikle ölçüm SDK'sı tarafından uygulanır ve SDK tarafından privacysandbox.ui aracılığıyla döndürülen oturuma eklenir. Bu arayüz, ölçüm SDK'sının belirli kategorileri etkinleştirmesine de olanak tanıyacaktır. sinyallerine geçiş yapabiliyoruz. Böylece, kullanıcı arayüzü istemci kitaplığının yalnızca gözlemcinin ilgilendiği sinyalleri toplar. Bu, sistem açısından genel sağlık.
  • registerObserver(): Session sınıfına eklenen bu yöntem Oturum'a erişimi olan herkese açık kullanıcı izni verebilirsiniz. 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ığında AdContainerInfo gönderilir.
  • AdContainerInfo: Gözlemcinin şunları yapmasına olanak tanıyan alıcılar içeren bir sınıf: 'da listelenen veri türleri için salt okunur reklam kapsayıcısı bilgilerini edinmek özellikler bölümünü inceleyin. Bu alıcılardan döndürülen değerler, mümkün olduğunda View ve alt sınıflarındaki mevcut alıcılardan döndürülen paketlenebilir dönüş değerlerine karşılık gelir. Reklam kapsayıcısı Jetpack Compose kullanılarak oluşturulduysa bu, kapsayıcının anlamsal özelliklerini gösterir. Bu sınıfı, görüntülenebilirlikle ilgili NetzDG ve OMID etkinliklerini hesaplamak için kullanılabilir.
  • SessionObserverotifyAdContainerChanged(): Gözlemciye bildirim göndermek için kullanılır otomatik olarak eklenir. Bir AdContainerInfo nesneyi geçirir. Bu listelenen veri türlerini etkileyen etkinlik algılandığında çağrılır. Özellikler bölümüne gidin. Not: Bu yöntem, yöntemlere ek olarak çağrılabilir oturum açın. Örneğin, SDK'dan reklamı yeniden boyutlandırmasını istemek için Session.notifyResized() çağrılır ve bu işlem gerçekleştiğinde SessionObserver.notifyAdContainerChanged() da çağrılır.
  • SessionObserverotifySessionClosed(): Gözlemciye oturumun kapatıldığını bildirir.
ziyaret edin.

Gelecekteki geliştirmeler

Uygulamanın güvenliği ihlal edilirse privacysandbox.ui.client kitaplığındaki kod da dahil olmak üzere uygulama sürecinde çalışan tüm kodlar değiştirilebilir. Bu nedenle, uygulama sürecinde çalışan tüm sinyal toplama mantığı, uygulama kodu tarafından bozulmaya açıktır. Bu, SDK kodu için de geçerlidir çalışan Özel Korumalı Alan'ın kullanıma sunulmasından önce dağıtılan takip etmeniz gerekir. 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, reklam kullanıcı arayüzü sunumu hakkında çerçeveden daha güçlü garantiler verebilecek setTrustedPresentationCallback adlı bir platform API'si kullanabilir. setTrustedPresentationCallback. Yüzey düzeyinde çalışır ve Google'ın, kullanımı ve erişimiyle ilgili Örneğin, görünür piksel yüzdesi, ekranda geçirilen süre veya ölçek. Bu veriler, Kullanıcı arayüzü istemci kitaplığı tarafından sağlanan görüntülenebilirlik verileriyle karşılaştırılarak kontrol edildi. bölümünü ziyaret edin. Çerçeve tarafından sağlanan veriler daha güvenilir olduğundan Verileri çerçevedeki verilerle uyumlu olmayan kullanıcı arayüzü kitaplığı, silindi. Örneğin, dinleyici size setTrustedPresentationCallback, piksel içermeyen bir bildirimle çağrılır ekranda gösterilmektedir. İstemci kullanıcı arayüzü kitaplığında ise piksel sayısı sıfır değilse, bunlardan gelen veriler silinebilir.

Açık uçlu sorular

Aşağıdaki konular hakkında geri bildirimlerinizi bizimle paylaşabilirsiniz:

  1. Bu açıklama metninde bahsedilmeyen hangi görüntülenebilirlik sinyalleriyle ilgileniyorsunuz?
  2. Mevcut öneri, kullanıcı arayüzünde alakalı 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? Aksi takdirde ne sıklıkta görüşmek istersiniz?
  3. setTrustedPresentationCallback bilgilerini kendiniz mi analiz etmek istersiniz yoksa sağlayıcı kullanıcı arayüzü kitaplığının, setTrustedPresentationCallback verileriyle eşleşmeyen verileri istemci kullanıcı arayüzü kitaplığından atmasını mı tercih edersiniz?
  4. Görüntülenebilirlik sinyallerini nasıl kullanabilirsiniz? Kullanım alanlarınızı anlamamıza yardımcı olun: bu soruları yanıtlayan geri bildirimler gönderin.