WebView'larda Onay: Yerel ve Web Onayını Senkronize Tutmak
Çift Banner Sorunu
Birçok uygulama kısmen yerel, kısmen web tabanlıdır. Bir oyun mağazasını, haberlerini veya yardım sayfalarını bir WebView'da gösterir; bir yardımcı uygulama web sitesindeki makaleleri işler; bir hibrit uygulama arayüzünün çoğunu web içeriğiyle sarar. Her tarafın kendi onay mekanizması vardır: yerel uygulama uygulama içi bir CMP veya SDK kullanır, web sayfaları ise bir web CMP'si yükler. Bunlar bağlanmadığı sürece kullanıcıya iki kez sorulur, bir yerde yapılan tercihler diğerinde yok sayılır ve WebView içinden giden reklam istekleri yanlış sinyallerle çıkar.
Bu rehber, yerel ve web onayını nasıl uyumlu hale getireceğinizi kapsar; böylece kullanıcılar bir kez yanıtlar ve her reklam isteği aynı kararı taşır.
Her Taraf Onayı Nerede Saklar
Yerel
IAB TCF, uygulama içi bir CMP'nin onayı nasıl saklayacağını belirtir: iOS'ta NSUserDefaults, Android'de SharedPreferences içinde, IABTCF_TCString, IABTCF_gdprApplies ve IABTCF_PurposeConsents gibi standart anahtarlarla. Reklam SDK'ları bu anahtarları doğrudan okur. IAB GPP, IABGPP_HDR_GppString gibi IABGPP_ önekli benzer anahtarlar tanımlar.
Web
Bir web CMP'si kararını tipik olarak sitenin alan adı için birinci taraf çerezlerde veya yerel depolamada saklar ve __tcfapi ile __gpp JavaScript işlevleri aracılığıyla sunar. Sayfadaki reklam etiketleri yerel depolamayı değil, bu işlevleri çağırır.
Boşluk
WebView'ların cihaz tarayıcısından ve uygulamanın yerel tercihlerinden ayrı, kendi çerez ve depolama alanları vardır. iOS'ta kalıcı olmayan bir veri deposu kullanan bir WKWebView kapandığında her şeyi unutur. Siz bir köprü kurmadıkça iki taraf arasında hiçbir şey akmaz.
Tek Bir Doğruluk Kaynağı Seçin
İlk karar, onayın hangi tarafa ait olduğudur. Çoğu uygulama için yanıt yerel CMP'dir, çünkü:
- Herhangi bir WebView açılmadan önce ilk o çalışır.
- Genellikle gelirin çoğunu getiren yerel reklam SDK'ları yerel depolamayı okur.
- iOS'ta App Tracking Transparency istemiyle koordine edilebilir.
Arayüzünün tamamı web içeriği olan hibrit uygulamalar için önce web yaklaşımı mantıklı olabilir, ancak o zaman yerel SDK'lar için kararı yerel depolamaya geri yazmanız gerekir.
Yerel Onayı WebView'a Aktarmak
Doğruluk kaynağı yerelken, WebView'ın aynı kararı görmesi gerekir. Yaygın kalıplar:
- Bir
__tcfapiuygulaması enjekte edin. Sayfanın betikleri çalışmadan önce,__tcfapi(ve gerekirse__gpp) tanımlayan ve çağrıları yerel depolamadan okunan TC string'i ve değerlerle yanıtlayan küçük bir betik enjekte edin. Sayfadaki reklam etiketleri yerel kararı standart API aracılığıyla alır. - Web banner'ını bastırın. Web CMP'sini, sayfa uygulamanızın içinde yüklendiğinde, örneğin bir sorgu parametresine veya kontrol ettiğiniz özel bir user agent belirtecine göre gizli kalacak şekilde yapılandırın. Aksi halde kullanıcı ikinci bir banner görür.
- Dizeyi yüklemede iletin. Bazı web CMP'leri başlatma sırasında mevcut bir onay dizesini kabul edip benimseyebilir. Desteklenen yöntemler için web CMP'nizin belgelerine bakın.
Hangi kalıbı kullanırsanız kullanın, kullanıcı tercihini yerel ayarlar ekranında değiştirdiğinde enjekte edilen değerlerin yalnızca bir sonraki uygulama açılışında değil, hemen güncellendiğinden emin olun.
Web Onayını Yerel Tarafa Geri İletmek
Kullanıcılar onayı WebView içinde, örneğin bir gizlilik ayarları sayfası aracılığıyla değiştirebiliyorsa, uygulamanın bunu öğrenmesi gerekir. Bir JavaScript köprüsü kullanın: iOS'ta bir mesaj işleyicisi, Android'de bir JavaScript arayüzü. Web tarafı __tcfapi('addEventListener', ...) ile dinler ve yeni dizeyi, standart anahtarları yazan yerel koda gönderir. Yazmadan önce WebView'dan gelen girdiyi doğrulayın; yalnızca kendi içeriğinizden gelen mesajları kabul edin.
WebView'lar İçindeki Reklamlar
Bir WebView'da işlenen reklamlar web reklamlarıdır. Reklam SDK'sı ikisini bağlamanın bir yolunu sunmadıkça onayı yerel depolamadan değil, sayfadan okurlar. Örneğin Google'ın Mobile Ads SDK'sı, WebView'ların içindeki reklamların uygulamadan gelen sinyalleri kullanabilmesi için WebView'ları kaydeden bir API sunar; SDK'nız için güncel belgelere bakın. Her durumda, WebView'dan gelen reklam isteklerinin yerel reklam istekleriyle aynı TC veya GPP dizesini taşıdığını bir testle doğrulayın.
Test Kontrol Listesi
- Yeni kurulum: iki değil, tek bir onay istemi.
- Yerel CMP'de hepsini reddedin, bir WebView açın, reklam isteklerini inceleyin: dize reddi yansıtmalıdır.
- Yerel ayarlarda onayı değiştirin, açık bir WebView'a dönün: sayfa yeni kararı görmelidir.
- Web ayarları varsa, onayı orada değiştirin ve yerel anahtarların güncellendiğini doğrulayın.
- Uygulamayı kapatıp yeniden başlatın: kararlar her iki tarafta da kalıcıdır.
- WebView depolaması her birinde farklı davrandığı için hem iOS'ta hem Android'de test edin.
Önemli Çıkarımlar
- Yerel ve WebView onayı ayrı depolarda yaşar ve varsayılan olarak senkronize olmaz.
- Tek bir doğruluk kaynağı seçin; çoğu uygulama için bu yerel CMP'dir.
- Yerel onayı, enjekte edilen bir
__tcfapiveya__gppile web içeriğine sunun ve web banner'ını gizleyin. - Web tarafındaki değişiklikleri yerel depolamaya geri göndermek için bir JavaScript köprüsü kullanın.
- WebView'lardan gelen reklam isteklerinin yerel olanlarla aynı onay dizesini taşıdığını kontrol edin.