• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niepowodzenie przy próbie zaktualizowania zgody na spersonalizowane reklamy android

Object Storage Arubacloud
0 głosów
119 wizyt
pytanie zadane 26 lutego 2019 w Java przez kvbq Obywatel (1,490 p.)

Witam,

Niedawno moja aplikacja została wyrzucona ze sklepu Play, ponieważ nie wiedziałem, że aby używać Admob muszę zapytać użytkowników o zgodę na spersonalizowane reklamy i dodać politykę prywatności. Wzorując się na dokumentacji i gotowym rozwiązaniu napisałem zapytanie o zgodę. Problem polega na tym, że zawsze otrzymuje niepowodzenie gdy próbuje zaktualizować informację na temat czy użytkownik udzielił zgody. Próbowałem z testowymi identyfikatorami i własnymi. Przy własnych nawet nie dostaję informacji do logów, ale to może być jakiś problem z komputerem lub android studiem. 

Tu kod nie aplikacji oryginalnej a tylko aplikacji robionej na potrzeby testowania reklam i zgody, ale jak tu zadziała to wszędzie powinno.

package com.example.pc.adsdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.google.ads.consent.ConsentForm;
import com.google.ads.consent.ConsentFormListener;
import com.google.ads.consent.ConsentInfoUpdateListener;
import com.google.ads.consent.ConsentInformation;
import com.google.ads.consent.ConsentStatus;
import com.google.ads.mediation.admob.AdMobAdapter;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.MobileAds;

import java.net.URL;

public class MainActivity extends AppCompatActivity {

    private InterstitialAd interstitialAd;
    AdRequest adRequest;


    public void onClick (View view)
    {
        if(interstitialAd.isLoaded())
            interstitialAd.show();
        else
            Toast.makeText(this, "not loaded", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");


        interstitialAd = new InterstitialAd(getApplicationContext());
        interstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        //Te funckje dane tutaj działają
        //personalizedAds();
        //showAds();



        final ConsentInformation consentInformation = ConsentInformation.getInstance(getBaseContext());
        String[] publisherIDs = {"pub-0123456789012345"};
        consentInformation.requestConsentInfoUpdate(publisherIDs, new ConsentInfoUpdateListener() {

            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {

                if(!ConsentInformation.getInstance(getBaseContext()).isRequestLocationInEeaOrUnknown())
                {

                    personalizedAds();

                }else
                {
                    switch (consentStatus)
                    {
                        case PERSONALIZED:
                            personalizedAds();
                            break;
                        case NON_PERSONALIZED:
                            nonPersonalizedAds();
                            break;
                        case UNKNOWN:
                            try {
                                URL url = new URL("https://www.google.pl/");
                                ConsentForm form = new ConsentForm.Builder(getBaseContext(),url)
                                        .withListener(new ConsentFormListener() {
                                            @Override
                                            public void onConsentFormClosed(ConsentStatus consentStatus, Boolean userPrefersAdFree) {
                                                super.onConsentFormClosed(consentStatus, userPrefersAdFree);

                                                switch (consentStatus)
                                                {
                                                    case PERSONALIZED:
                                                        personalizedAds();
                                                        break;
                                                    case NON_PERSONALIZED:
                                                        nonPersonalizedAds();
                                                        break;
                                                    default:
                                                        nonPersonalizedAds();
                                                        break;
                                                }
                                            }
                                        })
                                        .withNonPersonalizedAdsOption()
                                        .withPersonalizedAdsOption()
                                        .build();

                                form.load();
                                form.show();

                            }catch (Exception e)
                            {
                                Log.i("aaaa","Failed new consent");
                            }

                            break;
                        default:
                            break;

                    }
                }

            }

            @Override
            public void onFailedToUpdateConsentInfo(String reason) {
                Log.i("aaaa","Failed to update");
            }
        });







    }

    public void personalizedAds()
    {
        adRequest= new AdRequest.Builder().build();

        showAds();

    }

    public void nonPersonalizedAds()
    {

        Bundle extras = new Bundle();
        extras.putString("npa", "1");

        adRequest= new AdRequest.Builder()
                .addNetworkExtrasBundle(AdMobAdapter.class,extras).build();

        showAds();

    }

    public void showAds() {

        AdView mAdView = findViewById(R.id.adView);

        Log.i("aaaa","cosniedziala");




        try {
            mAdView.loadAd(adRequest);
            mAdView = findViewById(R.id.adView1);
            mAdView.loadAd(adRequest);


            interstitialAd.loadAd(adRequest);

            interstitialAd.setAdListener(new AdListener() {

                @Override
                public void onAdClosed() {
                    interstitialAd.loadAd(adRequest);
                }
            });




        } catch (Exception e) {
            Log.i("aaaa", "No ads");
        }
    }

}

PS czytałem jeszcze o wymaganiu dotyczącym posiadania 13 lat, ale nie wiem jak to dodać to tego formularza. Czy napisanie po prostu w polityce prywatności zapisu, że użytkownik musi mieć powyżej 13 lat wystarczy?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 972 wizyt
pytanie zadane 29 stycznia 2019 w Offtop przez fipooo Bywalec (2,880 p.)
0 głosów
1 odpowiedź 159 wizyt
0 głosów
1 odpowiedź 268 wizyt

92,632 zapytań

141,502 odpowiedzi

319,882 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...