Avrupalı Kullanıcılardan İzin İsteme

Ön koşullar

User Messaging Platform SDK'sını destekleyen GMA Flutter eklentisinin 1.3.0 sürümünü kullanarak Başlayın'ı tamamlayın.

Okuma IAB şartları AB kullanıcı rızası alma mesajlarını nasıl etkiler?

Giriş

UMP SDK'sı, yayıncıların kişiselleştirilmiş reklamlar için izin istemesini ve Apple'ın Uygulama İzleme Şeffaflığı (ATT) gereksinimlerini karşılamasını sağlayan araçlar sağlar. Tüm yapılandırma AdMob Gizlilik ve mesajlaşma'da gerçekleştiğinden yayıncılar, tek bir form göstererek bu isteklerden birini veya her ikisini birden işlemek için Ad Manager Gizlilik ve Mesajlaşma.

Google AB Kullanıcı Rızası Politikası uyarınca, Birleşik Krallık ile birlikte Avrupa Ekonomik Alanı'ndaki (AEA) 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ımının yanı sıra kişisel verileri (AdID gibi) reklam yayınlamak amacıyla kullanma konusunda kullanıcıların iznini almanız gerekir. Bu politika AB eGizlilik Yönergesi ve Genel Veri Koruma Yönetmeliği (GDPR) gereksinimlerini yansıtmaktadır.

Google, yayıncıları bu politika kapsamındaki şartları yerine getirmeleri konusunda desteklemek için Kullanıcı Mesajlaşma Platformu (UMP) SDK'sını sunmaktadır. UMP SDK'sı, en son IAB standartlarını destekleyecek şekilde güncellenmiştir. İzin formları oluşturma ve reklam iş ortaklarını listeleme sürecini de basitleştirdik. Bu yapılandırmaların tamamı artık Ad Manager Gizlilik ve Mesajlaşma.

Bu kılavuzda SDK'nın yüklenmesi, IAB çözümlerinin uygulanması ve test özelliklerinin nasıl etkinleştirileceği açıklanmaktadır.

Uygulama İzleme Şeffaflığı (yalnızca iOS)

Apple'ın Uygulama İzleme Şeffaflığı gereksinimlerini karşılamak için UMP SDK'sını kullanmayı planlıyorsanız ATT mesajınızı Ad Manager Gizlilik ve Mesajlaşma.

UMP SDK'sının özel uyarı mesajı göstermesi için Info.plist kartınızı, kullanımınızı açıklayan özel bir mesaj dizesiyle birlikte NSUserTrackingUsageDescription anahtarını ekleyerek güncelleyin.

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

Kullanım açıklaması, izin formunu sunduğunuzda ATT iletişim kutusunun bir parçası olarak görünür:

Ardından, AppTrackingTransparency çerçevesini bağlamanız gerekir:

Test sırasında, requestTrackingAuthorization: tek seferlik bir istek olduğundan Apple'ın şartlarına göre IDFA ATT iletişim kutusu yalnızca bir kez gösterilir. Uyarının ikinci kez görünmesi için test cihazınıza uygulamanızı kaldırıp yeniden yüklemeniz gerekir.

SDK'yı kullanma

SDK, doğrusal bir şekilde kullanılmak üzere tasarlanmıştır. SDK'yı kullanma adımları şunlardır:

  1. En güncel izin bilgilerini isteyin.
  2. İzin gerekip gerekmediğini kontrol edin.
  3. Bir formun kullanılabilir olup olmadığını kontrol edin ve varsa formu yükleyin.
  4. Formu sunun.
  5. Kullanıcılara, rızalarını değiştirmeleri için bir yol sağlayın.

Her uygulama lansmanında izin bilgilerinin güncellenmesini istemeniz önerilir. Bu, kullanıcınızın izin vermesi gerekip gerekmediğini belirler.

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    // The consent information state was updated.
    // You are now ready to check if a form is available.
  },
  (FormError error) {
    // Handle the error
  },
);

Varsa form yükle

İzin alma formları kullanıcı Ad Manager kullanıcı arayüzünde oluşturulur. Kullanıcıdan izin isteyeceğinize karar verdikten sonraki adım, bir formun kullanılabilir olup olmadığını belirlemektir. Bir formun kullanılamamasının çeşitli nedenleri olabilir. Örneğin:

  • Kullanıcı, reklam izleme sınırı özelliğini etkinleştirdi.
  • Kullanıcıyı reşit olma yaşının altında olarak etiketlediniz.

Bir formun mevcut olup olmadığını kontrol etmek için ConsentInformation örneğinde isConsentFormAvailable() yöntemini kullanın. Form yüklemek için bir sarmalayıcı yöntemi ekleyin:

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    if (await ConsentInformation.instance.isConsentFormAvailable()) {
      loadForm();
    }
  },
  (FormError error) {
    // Handle the error
  },
);

Formu yüklemek için ConsentForm sınıfında statik loadConsentForm() yöntemini kullanırsınız. loadForm() yönteminizi şu şekilde değiştirin:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      // Present the form
    },
    (FormError formError) {
      // Handle the error
    },
  );
}

Gerekirse formu sunun

İzin formunu sunmak için ConsentForm sınıfında show() yöntemini kullanın. Formu sunmadan önce kullanıcının izin gerektirip gerektirmediğini belirlemeniz gerekir. İzin gerekip gerekmediğini kontrol etmek için ConsentInformation nesnesinde getConsentStatus() yöntemini çağırın. Bu çağrı, ConsentStatus türünde bir enum döndürür. ConsentStatus için dört olası değer vardır:

  • unknown: İzin durumu bilinmiyor.
  • required: Kullanıcı izni gerekiyor ancak henüz alınmadı.
  • notRequired: Kullanıcı izni gerekmez. Örneğin, kullanıcı AEA veya Birleşik Krallık'ta değildir.
  • obtained: Kullanıcı izni alındı. Kişiselleştirme tanımlanmadı.

loadForm yönteminizi şu şekilde değiştirin:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      var status = await ConsentInformation.instance.getConsentStatus();
      if (status == ConsentStatus.required) {
        consentForm.show(
          (FormError formError) {
            // Handle dismissal by reloading form
            loadForm();
          },
        );
      }
    },
    (formError) {
      // Handle the error
    },
  );
}

İzin gerekmiyorsa kullanıcınızın izin durumunu değiştirebilmesi için forma referans verebilirsiniz.

Test

Konumu zorunlu kıl

UMP SDK'sı, ConsentDebugSettings.debugGeography kullanarak cihaz AEA'da bulunuyormuş gibi uygulamanızın davranışını test edebileceğiniz bir yol sunar.

Hata ayıklama işlevini kullanmak için uygulamanızın hata ayıklama ayarlarında test cihazınızın karma oluşturma işlemi uygulanmış kimliğini sağlamanız gerekir. requestConsentInfoUpdate() yöntemini bu değeri ayarlamadan çağırırsanız uygulamanız çalıştırıldığında gerekli kimlik karmasını günlüğe kaydeder.

ConsentDebugSettings debugSettings = ConsentDebugSettings(
  debugGeography: DebugGeography.debugGeographyEea,
  testIdentifiers: ['TEST-DEVICE-HASHED-ID']);

ConsentRequestParameters params = ConsentRequestParameters(
  consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () {},
  (error) {});

SDK'yı, cihazı AEA veya Birleşik Krallık'ta değilmiş gibi ele almaya zorlamak için DebugGeography.debugGeographyNotEea özelliğini kullanın. Hata ayıklama ayarlarının yalnızca test cihazlarında çalıştığını unutmayın. Emülatörlerin test özelliği varsayılan olarak etkin olduğundan emülatörlerin cihaz kimliği listesine eklenmesi gerekmez.

Uygulamanızı UMP SDK ile test ederken bir kullanıcının ilk yükleme deneyimini simüle edebilmek için SDK'nın durumunu sıfırlamayı faydalı bulabilirsiniz. SDK, bunun için reset yöntemini sağlar.

ConsentInformation.instance.reset();

UMP SDK'sını projenizden tamamen kaldırmaya karar verirseniz de sıfırlama işlevini çağırmalısınız.

Uygulama ölçümünü geciktir (isteğe bağlı)

Varsayılan olarak, Google Mobile Ads SDK'sı uygulama ölçümünü başlatır ve uygulama başlar başlamaz kullanıcı düzeyindeki etkinlik verilerini Google'a göndermeye başlar. Bu ilk kullanıma hazırlama davranışı, ek kod değişiklikleri yapmadan AdMob kullanıcı metriklerini etkinleştirebilmenizi sağlar.

Ancak bu etkinliklerin gönderilmeden önce uygulamanızda kullanıcı izni gerekiyorsa Mobile Ads SDK'sını açıkça başlatana veya bir reklam yükleyene kadar uygulama ölçümünü erteleyebilirsiniz.

Android'de uygulama ölçümünü ertelemek için AndroidManifest.xml kodunuza aşağıdaki <meta-data> etiketini ekleyin.

<manifest>
     <application>
        <!-- Delay app measurement until MobileAds.initialize() is called. -->
        <meta-data
            android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT"
            android:value="true"/>
    </application>
</manifest>

iOS'te uygulama ölçümünü geciktirmek için uygulamanızın Info.plist değerine YES boole değerine sahip GADDelayAppMeasurementInit anahtarını ekleyin. Bu değişikliği programatik olarak yapabilirsiniz:

<key>GADDelayAppMeasurementInit</key>
<true/>

Dilerseniz mülk listesi düzenleyicisinde de düzenleyebilirsiniz:

Uyumlulaştırma

Uyumlulaştırmayı kullanıyorsanız uyumlulaştırma iş ortaklarınızın iznini, uygulamanızda kullanmayı seçtiğiniz izin çerçevesine bağlı olarak farklı şekillerde ele almanız gerekir. Google, IAB İzin Çerçevesi'ni destekler ancak kendi özel izin çözümünüzü kullanmanıza da olanak tanır. Aşağıda, bu seçeneklerin her biri altında uyumlulaştırmanın nasıl ele alınacağına dair ayrıntılar verilmiştir. İzin çözümümüz hakkında daha fazla bilgi edinin.

kullanmanızı öneririz.

Ne UMP SDK'sı ne de Mobile Ads SDK'sı, izin bilgilerini uyumlulaştırma iş ortaklarına yönlendirmez. Bunun yerine, IAB çözümünü kullanırken UMP SDK'sı, izin durumu bilgilerini yerel depolama alanına yazar ve uygun anahtarları okumak, her bir uyumlulaştırma iş ortağının SDK'sının sorumluluğundadır. IAB çözümünü destekleyip desteklemediklerini belirlemek için her bir üçüncü taraf ağıyla mutlaka görüşün.

Özel bir rıza çözümü kullanıyorsanız üçüncü taraf SDK'lara uygulamanızın izin durumunu bildirmek sizin sorumluluğunuzdadır. Her uyumlulaştırma ağının izin yönetimi için kendi API'leri vardır. Bu API'ler Android ve iOS için belgelenmiştir.

Bu API'leri Dart'tan nasıl çağıracağınızı öğrenmek için Ağa Özgü API'leri Kullanma bölümüne bakın.

Google Mobile Ads SDK'sının varsayılan davranışı, kişiselleştirilmiş reklamlar yayınlamaktır. Bir kullanıcı yalnızca kişiselleştirilmemiş reklamlar almaya izin verdiyse yalnızca kişiselleştirilmemiş reklamların istenmesi gerektiğini belirtmek için aşağıdaki kodu içeren bir AdManagerAdRequest nesnesi yapılandırabilirsiniz:

final AdManagerAdRequest = AdManagerAdRequest(nonPersonalizedAds: true);

Kişiselleştirilmemiş reklamlar istenirse reklam isteği URL'si şu anda &npa=1 içeriyor. Ancak bunun Google Mobile Ads SDK'sının dahili uygulama ayrıntısı olduğunu ve değişebileceğini unutmayın.