Android için yeni Birleşik Mesajlaşma Platformu SDK'sı ile kişiselleştirilmemiş AdMob reklamları nasıl istenir?

Aug 18 2020

Avrupalı ​​kullanıcılardan kişiselleştirilmiş reklamlar için izin istemek için şu anda Google'ın (kullanımdan kaldırılmış) izin kitaplığını kullanıyorum. Belgeler, bir kullanıcının izin durumu zaten KİŞİSELLEŞTİRİLMİŞ veya KİŞİSELLEŞTİRİLMEDİ olarak ayarlanmışsa, izni Google Mobile Ads SDK'sına şu şekilde iletebileceğinizi belirtir :

Bundle extras = new Bundle();
extras.putString("npa", "1");

AdRequest request = new AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
    .build();

Şimdi Android için yeni Birleşik Mesajlaşma Platformu SDK'sına geçmek istiyorum . Dokümantasyon oldukça basittir, ancak yalnızca açıklar almak nasıl rıza değil kullanmak rıza. Android için yeni UMP SDK'yı kullanırken, artık ayarlamak zorunda demek mu "npa"olduğunu "1"kişiselleştirilmiş reklamları için izin vermedim bir kullanıcı için AdMob reklamı isterken?


25 Ağu 2020

Dün , Mobile Ads SDK ekibinden birinin burada sorduğum soruyu yanıtladığı bu sohbeti buldum . Şöyle diyor:

Npa = 1 aracılığıyla eski "Onay aktarımı ", bir sonraki duyuruya kadar SDK'mız tarafından onurlandırılacaktır.


31 Ağu 2020

Bu yazıdaki soruyu sorduğum yeni bir sohbet başlattım , ancak herhangi bir yanıt alamıyorum.

Yanıtlar

1 Alexander Oct 07 2020 at 21:12

Yeni Birleşik Mesajlaşma Platformu ile Google, İzin Yönetim Platformu olarak çalışmaktadır . Bu CMP'ler, kullanıcı izni tercihlerini saklamak için bir TCF dizesi kullanır. Google, hangi reklamların gösterilebileceğini görmek için bu TCF dizesini kontrol eder;

Google belgelerine göre :

Google , aşağıdaki kriterlerin tümü karşılandığında kişiselleştirilmiş reklamlar sunacaktır :

  1. Son kullanıcı, Google'a bir cihazdaki bilgileri depolama ve / veya bu bilgilere erişme izni verir.
  2. Kişiselleştirilmiş bir reklam profili oluşturun
  3. Kişiselleştirilmiş reklamları seçin

Ve Google'ın aşağıdakileri yapması için meşru menfaat (veya bir yayıncının CMP'sini talep etmek üzere yapılandırdığı durumda izin) belirlenir:

  1. Temel reklamları seçin
  2. Reklam performansını ölçün
  3. Kitle içgörüleri oluşturmak için pazar araştırması uygulayın
  4. Ürünleri geliştirin ve iyileştirin

Kişiselleştirilmiş reklamlar için izin gereksinimleri karşılanmazsa, Google aşağıdaki kriterlerin tümü karşılandığında kişiselleştirilmemiş reklamlar yayınlayacaktır :

  1. Bir cihazda bilgi depolayın ve / veya bilgilere erişin

Google'ın aşağıdakileri yapması için meşru menfaat (veya bir yayıncının CMP'sini talep edecek şekilde yapılandırması durumunda izin) belirlenir:

  1. Temel reklamları seçin
  2. Reklam performansını ölçün
  3. Kitle içgörüleri oluşturmak için pazar araştırması uygulayın
  4. Ürünleri geliştirin ve iyileştirin
  5. Satıcı listesinde Google'ı etkinleştirin.

20 Ekim Güncellemesi: Görünüşe göre, bu bilgileri sağlamak için SO @Georg'da kişisel olmayan reklamları göstermek için artık 3,4,5'e gerek yok.

Yukarıdaki koşullardan hiçbiri karşılanmazsa, Google reklam göstermeyecektir ..

Umarım bu soru sorunuzu yanıtlar, ancak daha fazla bilgiye ihtiyacınız olursa lütfen bize bildirin!

Frank Nov 03 2020 at 05:44

Şu cümleleri hatırlayın:

Asla pes etmeyin ve bardağın her zaman yarısı dolu :-) -> iyimser olmak için!

Dolayısıyla, Avrupa'da geçerli olanı değiştirmek için artık bir çözüm "olmayacak". Yapabileceğimiz şey şudur:

Kullanıcı fonlama seçenekleri formunda "Kabul Ediyorum" a tıkladıktan veya "Gönder" e tıkladıktan sonra, iletişim kutusu kapatıldığında bazı parametreler android üzerindeki varsayılan paylaşılan tercihlere kaydedilecektir !! Aynı şey IOS'ta da oluyor (Böylece herkes bu çözümü hızlı bir şekilde programlayabilir.

Daha önce olduğu gibi, sınırlı bir uygulama sunma hakkımız "bizim". Bu, önceki gibi kısıtlamalara sahip hafif bir sürüm ve satın almak için tam bir sürüm sunabileceğiniz anlamına gelir.

Öyleyse yapabileceğimiz şey, pref anahtarlarını okumaktır.

Şeffaflık ve Onay Çerçevesi için tercih anahtarları burada açıklanmıştır: https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details

Okumak için aşağıdaki pref tuşlarına ihtiyacımız var (Android veya IOS):

IABTCF_PurposeLegitimateInterests

IABTCF_VendorConsents

IABTCF_PurposeConsents

Bu nedenle, bu değerlere bağlı olarak, reklamların sunulup sunulmadığını veya form kapatıldıktan sonra reklamların "sunulmadığını" kontrol edebiliriz.

Ardından, uygulamanızdaki önemli seçenekleri engelleyebilir ve belki bir iletişim kutusu gösterebilirsiniz:

"Reklamlar devre dışı bırakıldı. Şu anda uygulamanın basit sürümünü kullanıyorsunuz. Fikrinizi değiştirebilir veya profesyonel bir sürüm vb. Satın alabilirsiniz."

-> Belki "reklamları etkinleştir" açıklamasından sonra düğmeler ekleyin ve formu tekrar gösterin veya "Pro satın alın"

Burada ne yapacağınız size kalmış!

Sınıfım kotlin veya java'da!

Yapmanız gereken: UMP SDK'sını google'dan bağımlılığınıza gradle'da yerleştirin ve admob hesabınızda uygulamanız için fon seçeneklerini ayarlayın! Daha sonra fon seçimi formlarını ayarlamak için rutinlerinizi yazın.

Finansman seçeneklerine satıcı olarak yalnızca "Google" ekleyin!

https://developers.google.com/admob/ump/android/quick-start

Her şeyi çalışır durumda tutmak için yine de birçok şeyi kendi başınıza programlamanız gerekir, ancak bu sınıf en azından reklamların sunulup sunulmadığı konusunda bilgi edinmenize yardımcı olacaktır. Ayrıca, bunun derinliklerine dalmak için her şeyin nasıl çalıştığını kendi kendinize bilgilendirmelisiniz.

HATIRLAMAK !!!

Her zaman admob'da test kimlikleri ile test edin !! Asla üretim kimliklerini kullanmayın, aksi takdirde hesabınızla başınız derde girebilir! Admob'da yalnızca önce test yapmak istiyorsanız test kimlikleri ile yeni bir test uygulaması oluşturun !!!

Sınıf nasıl kullanılır:

Consentfunctions consentfunction; 


consentfunction = new Consentfunctions(this);



// Check if Ads are serving

if (consentfunction.AdsAreServing()) {

// No need to do anything because everything is fine

} else {

// Decide what to do here. Block important functions of your app
//  and open a help page with explanations etc. etc


}

Java Kodu:

public class ConsentFunctions {

private ConsentInformation consentInformation;

SharedPreferences.Editor editor;


  private Context mContext;



private String consinfosaved;

private String vendorconsent;

private SharedPreferences preferences;

private String LegitimateInterests;


public ConsentFunctions(Context context){

    mContext = context;


    preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
    



    consentInformation = UserMessagingPlatform.getConsentInformation(mContext);


}



public Boolean AdsAreServing() {

    vendorconsent = preferences.getString("IABTCF_VendorConsents", "");
    LegitimateInterests = preferences.getString("IABTCF_PurposeLegitimateInterests", "");


    // Not required = not in europe -- return true because everything is fine !
    if (consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.NOT_REQUIRED) {
        return true;
    }


    Boolean vendoractive = vendorconsent.contains("1");
    consinfosaved = preferences.getString("IABTCF_PurposeConsents", "0");

    switch (consinfosaved) {


        case "1011":    // Personal 1 - rest legitimate interest
        case "1111111011":  // Personal 2
        case "1111001011":  // Personal 3
        case "1000001011":  // Non personal ok
        case "1100001011":  // Non Peronal ok
        case "11":   // Non Personal ok - rest is legitimate interest
        case    "1111001001":
        case "1":  // Non personalized


        {

            // Check also if vendor is activated
            if (!vendoractive) {
                return false;

            }
            else {

                // Legitimate must be always =  0100111011 and vendor contains 1
                if (LegitimateInterests.equals("0100111011") || LegitimateInterests.equals("0100001011"))
                return true;
                else
                    return false;

            }

        }


        default: {


            return false;



        }



    }


}


}

Kotlin kodu:

class ConsentFunctionsKotlin(private val mContext: Context) {


private val consentInformation: ConsentInformation
var editor: SharedPreferences.Editor


private var consinfosaved: String? = null
private var vendorconsent: String? = null
private val preferences: SharedPreferences
private var LegitimateInterests: String? = null



init {
    preferences = PreferenceManager.getDefaultSharedPreferences(mContext)
   
    consentInformation = UserMessagingPlatform.getConsentInformation(mContext)
}





fun AdsAreServing(): Boolean {
    vendorconsent = preferences.getString("IABTCF_VendorConsents", "")
    LegitimateInterests = preferences.getString("IABTCF_PurposeLegitimateInterests", "")


    // Not required = not in europe -- return true because everything is fine !
    if (consentInformation.consentStatus == ConsentInformation.ConsentStatus.NOT_REQUIRED) {
        return true
    }


    val vendoractive = vendorconsent!!.contains("1")
    consinfosaved = preferences.getString("IABTCF_PurposeConsents", "0")

    return when (consinfosaved) {
        "1111001001","1011", "1111111011", "1111001011", "1000001011", "1100001011", "11", "1" -> {


            // Check also if vendor is activated
            if (!vendoractive) {
                false
            } else {

                // Legitimate must be always =  0100111011 and vendor contains 1
                if (LegitimateInterests == "0100111011" || LegitimateInterests == "0100001011") true else false
            }
        }
        else -> {
            false
        }
    }


}

}