GDPR IAB desteği

Google AB Kullanıcı Rızası Politikası uyarınca, Avrupa Ekonomik Alanı (AEA) ve Birleşik Krallık'taki kullanıcılarınıza belirli açıklamalar yapmanız ve çerez veya başka yerel depolama bilgilerinin yanı sıra reklam yayınlamak için kişisel verilerin (ör. AdID) kullanımı konusunda kullanıcıların rızasını almanız gerekir. Bu politika, AB eGizlilik Yönergesi ve Genel Veri Koruma Yönetmeliği (GDPR) şartlarını yansıtmaktadır.

Bu kılavuzda, UMP SDK'sının bir parçası olarak GDPR IAB TCF v2 mesajını desteklemek için gereken adımlar açıklanmaktadır. Bu kılavuz, uygulamanızı UMP SDK ile çalıştırma ve mesajınızı ayarlama temel bilgileri hakkında genel bir bakış sunan Başlarken ile birlikte kullanılmak üzere tasarlanmıştır. Aşağıdaki yönergeler, GDPR IAB TCF v2 mesajına özeldir. Daha fazla bilgi için IAB şartları, AB kullanıcı rızası alma mesajlarını nasıl etkiler? başlıklı makaleyi inceleyin.

Ön koşullar

GDPR, kullanıcıların rıza tercihlerini istedikleri zaman geri çekmelerine olanak tanımak için rıza iptali gerektirir. Kullanıcıların izin tercihlerini geri çekmelerini sağlamak için Gizlilik seçenekleri başlıklı makaleyi inceleyin.

Bir kullanıcının reşit olma yaşının altında olup olmadığını belirtmek için setTagForUnderAgeOfConsent (TFUA) değerini ayarlayın. TFUA'yı true olarak ayarladığınızda UMP SDK kullanıcıdan izin istemez. Uygulamanızın karma bir kitlesi varsa izin istenmemesi için çocuk kullanıcılar için bu parametreyi ayarlayın.

Aşağıdaki örnekte, UMP izin isteğinde TFUA değeri true olarak ayarlanır:

Java

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    (OnConsentInfoUpdateSuccessListener) () -> {
      // ...
    },
    (OnConsentInfoUpdateFailureListener) requestConsentError -> {
      // ...
    });

Kotlin

val params = ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build()

consentInformation = UserMessagingPlatform.getConsentInformation(this)
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ConsentInformation.OnConsentInfoUpdateSuccessListener {
      // ...
    },
    ConsentInformation.OnConsentInfoUpdateFailureListener {
      requestConsentError ->
      // ...
    })

Uyumlulaştırma

Uyumlulaştırma iş ortaklarınızı reklam iş ortakları listesine eklemek için Yayınlanan GDPR mesajlarına reklam iş ortakları ekleme başlıklı makaledeki adımları uygulayın. Bunu yapmamanız, iş ortaklarının uygulamanızda reklam yayınlayamamasına neden olabilir.

Uyumlulaştırma iş ortakları, GDPR'ye uyum konusunda yardımcı olacak ek araçlara da sahip olabilir. Daha fazla ayrıntı için belirli bir iş ortağının entegrasyon kılavuzuna bakın.

GDPR izni alındıktan sonra TCF 2.0 spesifikasyonuna uygun olarak yerel depolama alanından izin seçeneklerini okuyabilirsiniz. IABTCF_PurposeConsents anahtarı, TCF amaçlarının her biri için izni gösterir.

Aşağıdaki kod snippet'inde, Amaç 1 için iznin nasıl kontrol edileceği gösterilmektedir:

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "1111111111"
String purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "");
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
  String purposeOneString = purposeConsents.charAt(0).toString();
  boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (purposeConsents?.isEmpty() == false) {
  val purposeOneString = purposeConsents.first().toString()
  val hasConsentForPurposeOne = purposeOneString == "1"
}

Sık sorulan sorular

AEA'da ve Birleşik Krallık'ta reklam yayınlamayla ilgili Kullanıcı Rızası Yönetim Platformu koşullarını karşılamak için herhangi bir işlem yapmazsam ne olur?

16 Ocak 2024'ten itibaren bir iş ortağı Google sertifikalı CMP kullanmazsa AEA ve Birleşik Krallık trafiğinde yalnızca sınırlı reklamlar yayınlanmaya uygun olacaktır.

Şart 16 Ocak 2024'te AEA ve Birleşik Krallık trafiğinin küçük bir kısmında uygulanmaya başlayacak ve Şubat 2024'ün sonuna geldiğimizde tüm AEA ve Birleşik Krallık trafiğinde hayata geçirilene kadar uygulama kapsamı artacak. Para kazanma sürecinizin etkilenmemesi için 16 Ocak 2024'e kadar sertifikalı bir CMP kullanmaya başlayın.

Kullanıcının izin verip vermediğini nasıl kontrol edebilirim?

Kullanıcı rızası tek bir bit ile değil, IAB TCF spesifikasyonunda tanımlandığı gibi bir dizi amaç ve sağlayıcı ile temsil edilir. Google Ads kişiselleştirme ölçütleri için Kullanıcı Rızası Politikaları: Kişiselleştirilmiş ve Kişiselleştirilmemiş Reklamlar başlıklı makaleyi inceleyin.

Ayrıca, Google'ın reklam teknolojisi sağlayıcılar (ATP) listesinde yer alan ve TCF katılımcı listesine kayıtlı olmayan reklam teknolojileri, izin toplama için Google'ın Ek İzin teknik spesifikasyonunu kullanır. Google, IAB'ye kaydolmamış reklam teknolojisi sağlayıcıların ve kimliklerinin listesini aşağıdaki konumda yayınlar: https://storage.googleapis.com/tcfac/additional-consent-providers.csv.

Tek bir reklam isteğinde hata ayıklamak için reklam inceleyicideki Gizlilik ayarlarında hata ayıklama özelliğini kullanarak IAB Europe TCF ile yayıncı entegrasyonu kapsamında reklam isteğinde iletilen aşağıdaki gizlilik sinyallerini görüntüleyin:

Reklam inceleyici etiketi Reklam isteği sorgu parametresi Anlamı
GDPR geçerlidir (IABTCF_gdprApplies) gdpr Bu reklam isteği için GDPR'nin geçerli olup olmadığı.
TC dizesi (IABTCF_TCString) gdpr_consent TC dizesi. IAB, değeri manuel olarak kodunu çözebileceğiniz bir web aracı sunar.
Eİ dizesi (IABTCF_AddtlConsent) addtl_consent Google'ın Ek İzin için teknik spesifikasyonundaki Eİ dizesi.

Kullanıcı rızası tercihlerini programatik olarak okumak için Kullanıcı rızası tercihlerini okuma başlıklı makaleyi inceleyin.

CMP şartını karşılamak için Google'ın UMP SDK'sını kullanmam gerekir mi?

Hayır, reklam yayınlamak için Google sertifikalı CMP listesindeki herhangi bir CMP'yi kullanabilirsiniz.

Kullanıcı daha önce izin vermiş olsa bile UMP SDK'sını kullanarak izin formunu tekrar nasıl gösterebilirim?

Bir kullanıcı zaten izin kararı vermişse Google'ın izin yönetimi çözümü, TC dizesinin süresi dolana veya başka bir şekilde geçersiz hale gelene kadar yeni izin toplama isteğinde bulunmaz.

GDPR, kullanıcıların izin tercihlerini istedikleri zaman geri çekebilmeleri için izin değişikliği yapılmasını zorunlu kılar. Kullanıcıların izin tercihlerini geri çekmelerine olanak tanıyan bir yöntem uygulamak için gizlilik seçeneklerine bakın. İzin formunu tekrar göstermek için showPrivacyOptionsForm() işlevini çağırın.

Google sertifikalı bir CMP entegre ettim ancak izin veren kullanıcılar dahil olmak üzere hiçbir kullanıcıdan aracılık iş ortaklarına reklam isteği gönderilmiyor. Why is this happening?

TCF kapsamında Google, reklam teknolojisi sağlayıcıların ve diğer programatik talep kaynaklarının Google politikasını ihlal edip etmediğini ve verileri uyumlulaştırma şelalesine eklemeden önce veri işleme için en az bir yasal gerekçeleri olup olmadığını kontrol eder. Daha fazla bilgi için aracılık bölümüne gidin.

Google'ın Reklam Teknolojisi Sağlayıcılar (ATP) listesindeki bazı arabuluculuk iş ortakları TCF katılımcı listesine kayıtlı değildir. Bu iş ortakları, izin toplama için Google'ın Ek İzin için teknik spesifikasyonunu kullanır. Google, IAB'ye kaydolmamış reklam teknolojisi sağlayıcıların ve kimliklerinin listesini aşağıdaki konumda yayınlar: https://storage.googleapis.com/tcfac/additional-consent-providers.csv

UMP SDK, ACString'in depolanmasını destekler. Bu sayede, iş ortaklarının TCF'ye kayıtlı olup olmadığını anlamanıza gerek kalmadan yayınlanan GDPR mesajlarına reklam iş ortakları ekleyebilirsiniz. Üçüncü taraf CMP kullanırken şunları yapmanız gerekir:

  1. Üçüncü taraf CMP'nin ACString'in depolanmasını desteklediğini onaylayın.
  2. Her uyumlulaştırma iş ortağını, üçüncü taraf CMP'nin izin almak için kullandığı reklam teknolojisi sağlayıcılar listesine ekleyin.
Kullanıcılar izin vermezse uygulamamın işleyişini değiştirebilir miyim? Bu duruma politika tarafından izin veriliyor mu?

Yayıncılar, uygulamalarında IAB TCF dizesini okuyabilir. İzin tercihlerini programatik olarak okuma hakkında bilgi edinmek için İzin tercihlerini okuma başlıklı makaleyi inceleyin. Yayıncılar, ilgili düzenlemeler kapsamındaki yükümlülüklerini hukuk danışmanlarıyla birlikte incelemelidir.

Seçenekleri Yönet'i seçip tüm amaçlar için izin verdiğimde reklam görmüyorum. Why is this happening?

Toplama amaçları için izne ek olarak tedarikçi izni de almanız gerekir. Google gibi herhangi bir sağlayıcının uygun reklamlar yayınlayabilmesi için hem amaç izni hem de sağlayıcı izni gerekir.

Eİ dizesinin 2. sürümünü, 1. sürüm için izin vermiş olan kullanıcılarda nasıl uygularım?

Kullanıcının AC String sürüm 2'yi kabul edip etmediğini ve izin formunu tekrar göstermeniz gerekip gerekmediğini belirlemek için Google'ın Ek İzin teknik spesifikasyonuna göre yerel depolamada IABTCF_AddtlConsent anahtarını kontrol edin.

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "2~1.35.41.101~dv.9.21.81"
String additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "");
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  String specACVersion = additionalConsent.charAt(0);
  boolean isACVersion2 = purposeOneString.equals("2");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "2~1.35.41.101~dv.9.21.81"
val additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "")
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  val specACVersion = additionalConsent.first()
  val isACVersion2 = specACVersion == "2"
}