Реклама AdMob работает в моем приложении, и я хочу, чтобы при открытии приложения появлялась форма согласия, где пользователь из Европы выберет персонализированную или не персонализированную рекламу, а другие пользователи не увидят эту форму.Мой код работает нормально на всех протестированных устройствах, но проблема в том, что на некоторых устройствах код работает, но диалоговое окно не отображается.
Кроме того, я попробовал этот код на компьютере моего друга, и его форма называетсяна всех устройствах.
Ниже я покажу код:
private ConsentForm form;
@Override
protected void onCreate(Bundle savedInstanceState) {
ConsentInformation consentInformation = ConsentInformation.getInstance(getApplicationContext());
String[] publisherIds = {getString(R.string.app_id)};
consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
@Override
public void onConsentInfoUpdated(ConsentStatus consentStatus) {
// User's consent status successfully updated.
boolean inEEA = ConsentInformation.getInstance(getApplicationContext()).isRequestLocationInEeaOrUnknown();
if (inEEA){
Toast.makeText(MainActivity.this, consentStatus.toString(), Toast.LENGTH_SHORT).show();
if(consentStatus == consentStatus.PERSONALIZED){
}else if(consentStatus == consentStatus.NON_PERSONALIZED){
Bundle extras = new Bundle();
extras.putString("npa", "1");
AdRequest request = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
}else{ //here code form
URL privacyUrl = null;
try {
// TODO: Replace with your app's privacy policy URL.
privacyUrl = new URL(getString(R.string.privacy));
} catch (MalformedURLException e) {
e.printStackTrace();
// Handle error.
}
form = new ConsentForm.Builder(MainActivity.this, privacyUrl)
.withListener(new ConsentFormListener() {
@Override
public void onConsentFormLoaded() {
// Consent form loaded successfully.
form.show();
}
@Override
public void onConsentFormOpened() {
// Consent form was displayed.
}
@Override
public void onConsentFormClosed(
ConsentStatus consentStatus, Boolean userPrefersAdFree) {
// Consent form was closed.
if (consentStatus == consentStatus.NON_PERSONALIZED){
Bundle extras = new Bundle();
extras.putString("npa", "1");
AdRequest request = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
}
}
@Override
public void onConsentFormError(String errorDescription) {
// Consent form error.
}
})
.withPersonalizedAdsOption()
.withNonPersonalizedAdsOption()
//.withAdFreeOption()
.build();
form.load();
}//here end code form
}else{
//Not Europe
}//end inEEA
}
@Override
public void onFailedToUpdateConsentInfo(String errorDescription) {
// User's consent status failed to update.
}
});}