google admob RGPD

Récemment, j'ai reçu une demande d'accès aux exigences de Google Admob (RGPD).

1. Qu'est-ce que le RGPD ?                                                                                                                         

                   Le Règlement Général sur la Protection des Données (RGPD) est une nouvelle loi européenne sur la protection des données entrée en vigueur en mai 2018. Bien que le RGPD soit un règlement européen, de nombreuses entités non européennes qui utilisent des services de publicité en ligne seront également concernées. Selon la politique de consentement des utilisateurs de l'UE de Google , certaines informations doivent être divulguées aux utilisateurs de l'Espace économique européen (EEE) et du Royaume-Uni, ainsi que l'utilisation de données personnelles (telles que AdID) pour diffuser des annonces. Cette politique reflète les exigences de la directive européenne ePrivacy et du règlement général sur la protection des données (RGPD). Afin que les fournisseurs se conforment à cette politique, le SDK User Messaging Platform (UMP) est fourni pour prendre en charge les normes IAB. Interactive Advertising Bureau, en abrégé IAB. 

2. Étapes d'utilisation

 1.Introduisez la bibliothèque

dependencies {
  implementation 'com.google.android.ump:user-messaging-platform:2.1.0'
  implementation 'com.google.android.gms:play-services-ads:22.2.0'
}

2. Configuration Build.gradle dans le répertoire racine du projet

buildscript {
    repositories {
        google()
        mavenCentral()
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

3. Ajoutez l'ID de l'application Admob à l'  AndroidManifest.xml ID du fichier du projet et obtenez le propre ID de l'application dans la console Google.

<manifest>
    <application>
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

4.  Si votre application utilise le SDK Google Mobile Ads  20.4.0 ou supérieur, vous pouvez ignorer cette étape, car le SDK déclarera automatiquement l'autorisation  com.google.android.gms.permission.AD_IDet pourra y accéder lorsque l'identifiant publicitaire sera disponible.

Pour les applications utilisant le SDK Google Mobile Ads version  20.3.0  ou antérieure et ciblant Android 13, vous devez  ajouter l'accès au SDK Google Mobile Ads à l'identifiant publicitaire dans votre com.google.android.gms.permission.AD_ID fichier. AndroidManifest.xml

        <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

5. Le code demande d'obtenir les dernières informations de sollicitation d'avis des utilisateurs, vérifie si le formulaire est disponible et, si tel est le cas, charge le formulaire.

    // UMP 接入 实例化 ConsentForm 和 ConsentInformation
    private static ConsentForm mConsentForm;
    private static ConsentInformation mConsentInformation;

 ConsentRequestParameters params = new ConsentRequestParameters
        .Builder()
        .setTagForUnderAgeOfConsent(false)
        .build();
 mConsentInformation = UserMessagingPlatform.getConsentInformation(mContext);
        //requestConsentInfoUpdate 请求最新的同意信息
        mConsentInformation.requestConsentInfoUpdate((Activity) mContext, params, new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
            @Override
            public void onConsentInfoUpdateSuccess() {
                // 同意信息更新成功,isConsentFormAvailable 检测表单是否可用
                if(mConsentInformation.isConsentFormAvailable()){
                    LogD(" ~ 表单可用加载并展示 ~ ");
                    //loadAndShowConsentFormIfRequired 加载用户意见征求表单并展示
                    UserMessagingPlatform.loadAndShowConsentFormIfRequired((Activity) mContext, new ConsentForm.OnConsentFormDismissedListener() {
                        @Override
                        public void onConsentFormDismissed(@Nullable FormError formError) {
                            if (null != formError) {
                                // 表单加载失败或者无法显示
                                Log.w(LOG_TAG, "loadAndShowError" + String.format("%s: %s",
                                        formError.getErrorCode(),
                                        formError.getMessage()));
                            }
                            // canRequestAds 检查是否已征得用户同意
                            Log.e(LOG_TAG, "征得同意" + mConsentInformation.canRequestAds());
                        }
                    });
                }
            }
        }, new ConsentInformation.OnConsentInfoUpdateFailureListener() {
            @Override
            public void onConsentInfoUpdateFailure(@NonNull FormError formError) {
                // 当同意信息更新失败时调用。
                if(null != formError){
                    Log.w(LOG_TAG, "presentForm requestConsentInfoUpdate--->"+String.format("%s: %s",
                            formError.getErrorCode(),
                            formError.getMessage()));
                }
            }
        });

6. Créez un message RGPD pour l'application  (admob le crée en arrière-plan, notre éditeur se charge de le créer)

7. Le retrait des avis des utilisateurs est une exigence du plan de sollicitation d'avis des utilisateurs « Confidentialité et messagerie ». Vous devez donc fournir un bouton dans le menu de l'application et leur réafficher le message de consentement de l'utilisateur.

  UserMessagingPlatform.loadConsentForm((Activity) mContext, new UserMessagingPlatform.OnConsentFormLoadSuccessListener() {
            @Override
            public void onConsentFormLoadSuccess(@NonNull ConsentForm consentForm) {
                Log.d(LOG_TAG, "onConsentFormLoadSuccess: " + mConsentInformation.getConsentStatus());
                mConsentForm = consentForm;
                mConsentForm.show((Activity) mContext, new ConsentForm.OnConsentFormDismissedListener() {
                    @Override
                    public void onConsentFormDismissed(@Nullable FormError formError) {
                        if (null != formError) {
                            Log.d(LOG_TAG, "onConsentFormDismissed: " + formError.getErrorCode() + "--->" + formError.getMessage());
                        }
                    }
                });
            }
        }, new UserMessagingPlatform.OnConsentFormLoadFailureListener() {
            @Override
            public void onConsentFormLoadFailure(@NonNull FormError formError) {
                // Handle the error.
                if (null != formError) {
                    Log.w(LOG_TAG, "loadForm onConsentFormLoadFailure--->" + String.format("%s: %s",
                            formError.getErrorCode(),
                            formError.getMessage()));
                }
            }
        });

Résumer

     

  • ① Chargez le formulaire  à chaque fois que l'utilisateur démarre l'application afin qu'il puisse être affiché lorsque l'utilisateur souhaite modifier ses paramètres de consentement.
  • ② Affichez le formulaire lorsque l'utilisateur sélectionne le lien correspondant dans le menu de l'application.

  • Remarque : étant donné que nous sommes connectés à la plate-forme d'agrégation tierce Applovin, il n'y a pas de publicité initiale dans l'application.

  Testé :

             S'il appartient à l'Union européenne, le premier package d'installation affichera le formulaire, puis cliquera sur le bouton pour afficher le formulaire à chaque fois ;

             S'il n'appartient pas à l'Union européenne, le package d'installation initiale n'affichera pas le formulaire et le bouton du formulaire n'a pas besoin d'être affiché. Le bouton détermine s'il faut afficher en fonction de ConsentStatus.NOT_REQUIRED ;

  if (null == mConsentInformation) {
            mConsentInformation = UserMessagingPlatform.getConsentInformation(mContext);
        }
        Log.d(LOG_TAG, " isSupportGDPR ConsentStatus: " + mConsentInformation.getConsentStatus());
        /**
         * 表单四种状态:
         * ①ConsentStatus.UNKNOWN 未知的同意状态
         * ②ConsentStatus.REQUIRED 需要但尚未获得用户同意
         * ③ConsentStatus.NOT_REQUIRED:不需要用户同意。例如,用户不在欧洲经济区或英国
         * ④ConsentStatus.OBTAINED:已获得用户同意。个性化未定义。
         */
        if (mConsentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.NOT_REQUIRED) {
          //不展示按钮
        } else {
          //展示按钮
        }


Guess you like

Origin blog.csdn.net/u010207898/article/details/132181803