Диалог согласия GDPR не отображается - PullRequest
0 голосов
/ 11 октября 2019

Я следовал руководству по документации для Android, но по какой-то причине ничего не отображается, когда я запускаю свое приложение. Я даже попытался зарегистрировать слушателей, но в logcat ничего не отображается.

Я также изменил технологию рекламы в настройках admob на Пользовательский набор поставщиков рекламных технологий, но все еще не работает.

Мой код

 ConsentInformation consentInformation = ConsentInformation.getInstance(getApplicationContext());
        ConsentInformation.getInstance(getApplicationContext()).addTestDevice("6AE7D8950FE9E464D988F340C0D625B0");
        ConsentInformation.getInstance(getApplicationContext()).
                setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_EEA);
        String[] publisherIds = {"pub-4427787827947251"};
        consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {
                // User's consent status successfully updated.
                Log.d(TAG,"onConsentInfoUpdated");
            }

            @Override
            public void onFailedToUpdateConsentInfo(String errorDescription) {
                // User's consent status failed to update.
                Log.d(TAG,"onFailedToUpdateConsentInfo");
            }
        });

        URL privacyUrl = null;
        try {
            // TODO: Replace with your app's privacy policy URL.
            privacyUrl = new URL("https://mp3icious.github.io/mp3icious.privacy-policy/");
        } catch (MalformedURLException e) {
            e.printStackTrace();
            // Handle error.
        }
        form = new ConsentForm.Builder(this, privacyUrl)
                .withListener(new ConsentFormListener() {
                    @Override
                    public void onConsentFormLoaded() {
                        // Consent form loaded successfully.
                        Log.d(TAG,"form loaded!");
                        form.show();
                    }

                    @Override
                    public void onConsentFormOpened() {
                        // Consent form was displayed.
                    }

                    @Override
                    public void onConsentFormClosed(
                            ConsentStatus consentStatus, Boolean userPrefersAdFree) {
                        // Consent form was closed.
                    }

                    @Override
                    public void onConsentFormError(String errorDescription) {
                        // Consent form error.
                        Log.d(TAG,"form error!");
                    }
                })
                .withPersonalizedAdsOption()
                .withNonPersonalizedAdsOption()
                .withAdFreeOption()
                .build();

        form.load();

Gradle

dependencies {
        classpath 'com.google.gms:google-services:4.3.2'
   }



implementation 'com.google.android.ads.consent:consent-library:1.0.7'
implementation 'com.google.android.gms:play-services-plus:17.0.0'
implementation 'com.google.android.gms:play-services-ads:18.2.0'

РЕДАКТИРОВАТЬ

Я попробовал его на проектекоторый был до android x и теперь он вызывает слушателя onFailedToUpdateConsentInfo.

со следующим сообщением об ошибке:

onFailedToUpdateConsentInfoCould not parse Event FE preflight response.

Немного выполнил поиск и обнаружил, что это может быть из-за неверного идентификатора публикации,но я уверен, что я использую правильный.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Я все еще использовал идентификатор тестового приложения и тестовые идентификаторы, удалите их и замените их своими идентификаторами и убедитесь, что вы используете его в качестве тестового устройства, чтобы не нарушать политики AdMob.

Как это

   adLoader.loadAd(new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build());
0 голосов
/ 11 октября 2019

1) Я думаю, вы забыли проверить isRequestLocationInEeaOrUnknown() метод. Он вернет истину, если пользователь уже согласился на это. В этом случае вам не нужно спрашивать это снова. Я думаю, что вы уже согласились дать согласие.

оберните ваш код с помощью

if(ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown()){
     //setup admob
}else{
     //Ask for consent
}

2) Вам необходимо позвонить form.show();, чтобы представить форму пользователю, отметьте Google Doc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...