我正在尝试使用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();
}
答案 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总是打开