webentwicklung-frage-antwort-db.com.de

AdMob RewardedVideoAd.loadAd gibt immer "Fehler beim Laden von Anzeigen, Fehlercode: 0" zurück.

Ich verwende firebase-ads: 9.2.0 mit API Level 24.

Das Unity-Ads-aar-Modul wird importiert, indem compile (Name: 'unity-ads', ext: 'aar') zu meinem build.gradle hinzugefügt wird.

Alles läuft gut, wenn ich mich für die direkte Verwendung der UnityAds API entschieden habe.

Aber wenn ich versuche, Unity-Anzeigen wie folgt in AdMob zu integrieren:

    mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance( this );

    mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
        @Override
        public void onRewardedVideoAdLoaded() {
            logger.debug("onRewardedVideoAdLoaded");
        }

        @Override
        public void onRewardedVideoAdOpened() {
            logger.debug("onRewardedVideoAdOpened");
        }

        @Override
        public void onRewardedVideoStarted() {
            logger.debug("onRewardedVideoStarted");
        }

        @Override
        public void onRewardedVideoAdClosed() {
            logger.debug("onRewardedVideoAdClosed");
        }

        @Override
        public void onRewarded(RewardItem rewardItem) {
            logger.debug("onRewarded");
        }

        @Override
        public void onRewardedVideoAdLeftApplication() {
            logger.debug("onRewardedVideoAdLeftApplication");
        }

        @Override
        public void onRewardedVideoAdFailedToLoad(int i) {
            Toast.makeText( 
                getApplicationContext(), 
                "onRewardedVideoAdFailedToLoad", 
                Toast.LENGTH_SHORT ).show();
        }
    });

    AdRequest adRewardRequest = new AdRequest.Builder()
        .addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")
        .build();

    mRewardedVideoAd.loadAd( 
        getResources().getString(R.string.reward_ad_unit_id), 
        adRewardRequest );

Es kommt immer zurück

Es gab ein Problem bei der Anzeigenantwort. Fehlercode: 0
Fehler beim Laden der Anzeige: 0.

Gibt es etwas, was ich falsch gemacht habe?

Oder ich habe nur ein paar Schritte verpasst?

Hier ist mein AdMob-Seiten-Screenshot:

 AdMob page

8
Kimi Chiu

Okay, ich habe Lösungen gefunden.

Die erste Sache ist, dass ich keine Adapter in mein Projekt aufgenommen habe.

Ich muss die Adpater hier herunterladen: Netzwerkadapter von Drittanbietern

Und legen Sie es in den libs-Ordner. Diese Adapter sind nicht in den SDKs enthalten (wenn Sie sie von github herunterladen).

Zweitens muss ich diese Zeile aus meinem Code entfernen.

.addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")

Wenn der AdMob dieses Gerät als Testgerät behandelt, scheint keine Videoanzeige (zumindest in meinem Fall) herunterzuladen.

Dasselbe passiert, wenn ich mich für die Verwendung des AVD entschieden habe. Sie erzwingen die Anzeige von Testanzeigen auf diesen Emulatoren.

Also wechsle ich zu Genymotion, entferne das addTestDevice () und dann funktioniert es.

6
Kimi Chiu

Normalerweise geschieht dies für neu erstellte Anzeigen. Warten Sie also eine Stunde und versuchen Sie es erneut.

public static final int ERROR_CODE_INTERNAL_ERROR

Etwas ist intern passiert. Beispielsweise wurde vom Anzeigenserver eine ungültige Antwort empfangen.

Konstanter Wert: 0

Quelle: Google-Entwickler

4
PSN

Ich verwende Interstitial-Anzeigen, aber ich glaube, dass es das gleiche Problem ist. Google gibt manchmal Code, der nicht funktioniert. Fragen Sie mich nicht, warum das so ist.

Fügen Sie dies nach Ihrer mRewardedVideoAd.loadAd()-Methode hinzu:

mRewardedVideoAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            //your code when Ad is loaded
            //you can show your ad immediately, but I don't suggest it
            if (mRewardedVideoAd.isLoaded()) {
                mRewardedVideoAd.show(); //this shows ad immediately
            }
        }

        @Override
        public void onAdClosed() {
        }
    });

Oder Sie können den AdListener festlegen, ihn nicht sofort anzeigen, sondern eine neue Methode erstellen:

public static void displayAd() {
    if (mRewardedVideoAd.isLoaded()) {
        mRewardedVideoAd.show();
    }
}

Auf diese Weise können Sie diese Methode von jeder Aktivität aus aufrufen, die die Anzeige fast sofort anzeigt (weil sie bereits geladen wurde), ohne dass sie erneut geladen werden muss.

1
leonz