GDPR同意对话框不会显示

时间:2018-05-27 03:28:29

标签: java android admob cookieconsent

我正在尝试使用Google新的Consent SDK将 GDPR同意 dialog添加到我的应用程序中(我不住在欧盟),但我不能这是我的代码,当我运行它时,对话框无法打开,我尝试使用VPN,但仍然没有出现相同的对话框

/*GDRP*/
        ConsentInformation consentInformation = ConsentInformation.getInstance(this);
        String[] publisherIds = {"pub-xxxxx...."};
        consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {
            }
            @Override
            public void onFailedToUpdateConsentInfo(String errorDescription) {

            }
        });
        URL privacyUrl = null;
        try {
            // TODO: Replace with your app's privacy policy URL.
            privacyUrl = new URL("URL");
        } catch (MalformedURLException e) {
            e.printStackTrace();
            // Handle error.
        }
        form = new ConsentForm.Builder(this, privacyUrl)
                .withListener(new ConsentFormListener() {
                    @Override
                    public void onConsentFormLoaded(){
                        showForm();
                    }

                    @Override
                    public void onConsentFormOpened() {
                    }

                    @Override
                    public void onConsentFormClosed(
                            ConsentStatus consentStatus, Boolean userPrefersAdFree) {
                    }

                    @Override
                    public void onConsentFormError(String errorDescription) {
                    }
                })
                .withPersonalizedAdsOption()
                .withNonPersonalizedAdsOption()
                .withAdFreeOption()
                .build();

        form.load();

 private void showForm() {
        form.show();
    }

4 个答案:

答案 0 :(得分:2)

我有完全相同的问题。问题是,由于SDK中的错误,当您尝试显示表单时,表单未完全加载。

这应解决它:

 // declare your form up
 ConsentForm form;

 // declare this function that will show the form
 protected void showConsentForm(){
     form.show();
 }


 // on the onCreate 
 form = new ConsentForm.Builder(context, privacyUrl)
            .withListener(new ConsentFormListener() {
                @Override
                public void onConsentFormLoaded() {
                    // Consent form loaded successfully.
                    Log.d("SplashScreen", "Consent form Loaded ");
                    showConsentForm();
                }

                @Override
                public void onConsentFormOpened() {
                    // Consent form was displayed.
                    Log.d("SplashScreen", "Consent form opened ");
                }

                @Override
                public void onConsentFormClosed(
                        ConsentStatus consentStatus, Boolean userPrefersAdFree) {
                    // Consent form was closed.
                    Log.d("SplashScreen", "Consent form Closed ");
                }

                @Override
                public void onConsentFormError(String errorDescription) {
                    // Consent form error.
                    Log.d("SplashScreen", "Consent form error " + errorDescription);
                }
            })
            .withPersonalizedAdsOption()
            .withNonPersonalizedAdsOption()
            .build();
// load the form so we can call .show on it after
form.load();

答案 1 :(得分:0)

确保添加此行以在非欧盟地区进行测试。

@Repository
public interface AbcRepository extends GenericRepository<Abc>{

}

答案 2 :(得分:0)

Alexandru Topală所述,您不能在show()之后立即致电load()

非常差的文献记载...

我用kotlin和late init来实现它:

lateinit var form: ConsentForm
form = ConsentForm.Builder(this@HomeActivity, privacyUrl)
        .withListener(object : ConsentFormListener() {
            override fun onConsentFormLoaded() {
                form.show()
            }

            override fun onConsentFormOpened() {}

            override fun onConsentFormClosed(consentStatus: ConsentStatus, userPrefersAdFree: Boolean) {
                viewModel.consentUpdate(consentStatus)
                if (userPrefersAdFree) {
                    PurchaseActivity.startActivity(this@HomeActivity)
                }
            }

            override fun onConsentFormError(errorDescription: String) {
                Timber.e(RuntimeException(errorDescription), "Failed to open consent form.")
            }
        })
        .withPersonalizedAdsOption()
        .withNonPersonalizedAdsOption()
        .withAdFreeOption()
        .build()
form.load()

答案 3 :(得分:-1)

感谢您的光临:ConsentInformation.getInstance(context)。     setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_EEA);

但如果打开应用,GDPR总是打开