• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
144 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ź 1,134 wizyt
pytanie zadane 29 stycznia 2019 w Offtop przez fipooo Bywalec (2,880 p.)
0 głosów
1 odpowiedź 194 wizyt
0 głosów
1 odpowiedź 296 wizyt

93,334 zapytań

142,328 odpowiedzi

322,406 komentarzy

62,670 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...