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 yasal olarak gerekli olduğu durumlarda çerez veya başka yerel depolama bilgilerinin kullanılmasının yanı sıra, reklam yayınlamak için kişisel verilerin (AdID gibi) kullanılması için kullanıcıların iznini 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 makalenin, uygulamanızı UMP SDK'sıyla kullanmaya başlama ve mesajınızı oluşturmayla ilgili temel bilgilere genel bir bakış sunan Başlayın makalesiyle birlikte kullanılması amaçlanmıştır. Aşağıdaki kılavuz, GDPR IAB TCF v2 mesajına özeldir. Daha fazla bilgi için IAB şartlarının AB kullanıcı rızası alma mesajlarını nasıl etkilediği başlıklı makaleyi inceleyin.

Ön koşullar

GDPR, kullanıcıların rıza seçimlerini istedikleri zaman geri çekmelerine izin vermek için izin iptal etme seçeneğini zorunlu kılar. Kullanıcıların izin tercihlerini geri çekmesini sağlayacak bir yöntem uygulamak 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'sı kullanıcıdan izin istemez. Uygulamanızın karma bir kitlesi varsa izin istenmediğinden emin olmak için bu parametreyi çocuk kullanıcılar için ayarlayın.

Aşağıdaki örnekte, UMP izin isteğinde TFUA doğru olarak ayarlanmıştı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. Aksi takdirde iş ortakları uygulamanızda reklam yayınlayamayabilir.

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

GDPR izni toplandıktan sonra, TCF v2 spesifikasyonunu izleyerek yerel depolama alanındaki izin seçimlerini okuyabilirsiniz. IABTCF_PurposeConsents anahtarı, TCF amaçlarının her biri için izni belirtir.

Aşağıdaki kod snippet'inde, 1. Amaç 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 Şartları'nı karşılamak için herhangi bir işlem yapmazsam ne olur?

16 Ocak 2024'ten itibaren, Google sertifikalı bir CMP kullanmayan iş ortakları AEA ve Birleşik Krallık'taki trafikte yalnızca sınırlı reklamlar yayınlayabilir.

Ş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. Bu süreçte kazancınızın etkilenmemesi için lütfen 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ığı şekilde 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 ancak 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.

Bir reklam isteğinde hata ayıklama yapmak için reklam denetleyicisindeki Gizlilikle ilgili ayarları hata ayıklama özelliğini kullanarak Yayıncının IAB Europe TCF ile 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 GDPR'nin bu reklam isteği için geçerli olup olmadığı.
TC dizesi (IABTCF_TCString) gdpr_consent TC dizesi. IAB, değeri manuel olarak decode bir web aracı sağlar.
Eİ dizesi (IABTCF_AddtlConsent) addtl_consent Google'ın Ek İzin için teknik spesifikasyonundaki Eİ dizesi.

İzin tercihlerini programatik olarak okumak için daha fazla bilgi edinmek üzere İzin 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'lerin listesinde yer alan herhangi bir CMP'yi kullanabilirsiniz.

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

Bir kullanıcı daha önce izin kararı verdiyse Google'ın izin yönetimi çözümü, TC dizesi geçerliliğini yitirene veya başka bir şekilde geçersiz hale gelene kadar yeni izin toplama isteğinde bulunmaz.

GDPR, kullanıcıların izin seçimlerini istedikleri zaman geri çekmelerine olanak tanımak için izin değişikliği yapılmasını zorunlu kılar. Kullanıcıların izin tercihlerini geri çekmesini sağlayacak bir yöntem uygulamak için gizlilik seçenekleri başlıklı makaleyi inceleyin. İzin formunu tekrar göstermek için showPrivacyOptionsForm() numaralı telefonu arayın.

Google sertifikalı bir CMP entegre ettim ancak izin veren kullanıcılardan bile uyumlulaştırma iş ortaklarına reklam isteği gönderilmediğini görüyorum. 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 arabuluculuk bölümüne gidin.

Google'ın Reklam Teknolojisi Sağlayıcılar (ATP) listesinde yer alan bazı uyumlulaştırma iş ortakları TCF tedarikçi listesine kayıtlı değildir. Bu iş ortakları, izin toplama için bunun yerine 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'sı, ACString'in depolanmasını destekler. Böylece, 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'yi kullanırken aşağıdakileri yapmanız gerekir:

  1. Üçüncü taraf CMP'nin ACString'i saklamayı desteklediğini onaylayın.
  2. Her uyumlulaştırma iş ortağını, üçüncü taraf CMP'nin rıza toplamak için kullandığı reklam teknolojisi sağlayıcılar listesine ekleyin.
Kullanıcılar izin vermezse uygulamamın işleyiş şeklini değiştirebilir miyim? Politika buna izin veriyor 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çlara izin verdiğim halde neden reklam görmüyorum? Why is this happening?

Amaç iznini toplamanın yanı sıra tedarikçi firma iznini de almanız gerekir. Google gibi sağlayıcıların uygun reklamlar yayınlayabilmesi için hem amaç izni hem de tedarikçi izni gereklidir.

1. sürüme zaten izin vermiş olan kullanıcılar için Eİ dizesi sürüm 2'yi nasıl uygulayabilirim?

Bir kullanıcının AC dizesi 2 sürümüne izin verip vermediğini ve izin formunu tekrar göstermeniz gerekip gerekmediğini belirlemek için Google'ın Ek İzin teknik spesifikasyonu uyarınca yerel depolama alanındaki 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"
}