Anzeigen mit Prämie (alte API)

Voraussetzungen

  • Google Mobile Ads SDK 17.2.0 oder höher.
  • Folgen Sie dem Leitfaden „Erste Schritte“, um das Google Mobile Ads SDK zu importieren und Ihr Android-Manifest zu aktualisieren.

Erstellen Sie ein Anzeigenobjekt mit Prämie

Belohnte Anzeigen werden von RewardedAd -Objekten angefordert und angezeigt. Der erste Schritt besteht darin, eine RewardedAd zu instanziieren. Dies geschieht in der Methode onCreate() einer Activity im folgenden Code-Snippet:

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {

    private RewardedAd rewardedAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        rewardedAd = new RewardedAd(this,
            "ca-app-pub-3940256099942544/5224354917");
    }

}

Kotlin

import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity : Activity() {

  private lateinit var rewardedAd: RewardedAd

  override fun onCreate(savedInstanceState:Bundle) {
    ...
    rewardedAd = RewardedAd(this,
        "ca-app-pub-3940256099942544/5224354917")
  }
}

Der Konstruktor benötigt die folgenden Argumente:

  • Ein Activity
  • Die Anzeigenblock-ID , die zum Laden der Anzeige mit Prämie verwendet werden soll

Testen Sie immer mit Testanzeigen

Stellen Sie beim Erstellen und Testen Ihrer Apps sicher, dass Sie Testanzeigen anstelle von Live-Produktionsanzeigen verwenden. Andernfalls kann Ihr Konto gesperrt werden.

Der einfachste Weg, Testanzeigen zu laden, ist die Verwendung unserer dedizierten Testanzeigenblock-ID für Android-Anzeigen mit Prämie:

ca-app-pub-3940256099942544/5224354917

Es wurde speziell so konfiguriert, dass es für jede Anfrage Testanzeigen zurückgibt, und Sie können es beim Codieren, Testen und Debuggen in Ihren eigenen Apps verwenden. Stellen Sie nur sicher, dass Sie es durch Ihre eigene Anzeigenblock-ID ersetzen, bevor Sie Ihre App veröffentlichen.

Weitere Informationen zur Funktionsweise der Testanzeigen des Mobile Ads SDK finden Sie unter Testanzeigen .

Laden Sie eine Anzeige

Um eine Anzeige mit Prämie zu laden, rufen Sie die Methode loadAd() des RewardedAd -Objekts auf. Diese Methode erfordert Instanzen von AdRequest und RewardedAdLoadCallback als Argumente.

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {

    private RewardedAd rewardedAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        rewardedAd = new RewardedAd(this,
            "ca-app-pub-3940256099942544/5224354917");

        RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
            @Override
            public void onRewardedAdLoaded() {
                // Ad successfully loaded.
            }

           @Override
            public void onRewardedAdFailedToLoad(LoadAdError adError) {
                // Ad failed to load.
            }
        };
        rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
    }
}

Kotlin

import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity : Activity() {

  private lateinit var rewardedAd: RewardedAd

  override fun onCreate(savedInstanceState:Bundle) {
    rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917")
    val adLoadCallback = object: RewardedAdLoadCallback() {
      fun onRewardedAdLoaded() {
        // Ad successfully loaded.
      }
      fun onRewardedAdFailedToLoad(adError: LoadAdError) {
        // Ad failed to load.
      }
    }
    rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
  }
}

Die onRewardedAdLoaded() und onRewardedAdFailedToLoad() des RewardedAdLoadCallback liefern das Ergebnis des Anzeigenladevorgangs.

Überschreibbare Methoden
onRewardedAdLoaded() Diese Methode wird ausgeführt, wenn eine Anzeige vollständig geladen ist.
onRewardedAdFailedToLoad() Diese Methode wird aufgerufen, wenn eine Anzeige nicht geladen werden kann. Es enthält einen Fehlerparameter vom Typ LoadAdError , der angibt, welche Art von Fehler aufgetreten ist. Weitere Informationen finden Sie in der Dokumentation zum Debuggen von Anzeigenladefehlern .

Zeigen Sie die Anzeige

Bevor Sie Nutzern eine Anzeige mit Prämie anzeigen, müssen Sie dem Nutzer ausdrücklich die Möglichkeit bieten, den Inhalt der Anzeige mit Prämie im Austausch gegen eine Prämie anzuzeigen. Anzeigen mit Prämie müssen immer ein Opt-in-Erlebnis sein.

Um eine RewardedAd anzuzeigen, verwenden Sie die isLoaded() -Methode, um zu überprüfen, ob der Ladevorgang abgeschlossen ist, und rufen Sie dann show() . Die show() Methode erfordert Activity und RewardedAdCallback -Instanzen als Argumente. Die Activity sollte die Aktivität sein, von der die Anzeige mit Prämie präsentiert wird.

Die Anzeige mit Prämie aus dem vorherigen Codebeispiel könnte wie folgt im OnClickListener einer Schaltfläche angezeigt werden:

Java

myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (rewardedAd.isLoaded()) {
            Activity activityContext = MainActivity.this
            RewardedAdCallback adCallback = new RewardedAdCallback() {
                @Override
                public void onRewardedAdOpened() {
                    // Ad opened.
                }

                @Override
                public void onRewardedAdClosed() {
                    // Ad closed.
                }

                @Override
                public void onUserEarnedReward(@NonNull RewardItem reward) {
                    // User earned reward.
                }

                @Override
                public void onRewardedAdFailedToShow(AdError adError) {
                    // Ad failed to display.
                }
            };
            rewardedAd.show(activityContext, adCallback);
        } else {
            Log.d("TAG", "The rewarded ad wasn't loaded yet.");
        }
    }
});

Kotlin

myButton.setOnClickListener {
  if (rewardedAd.isLoaded) {
    val activityContext: Activity = this@MainActivity
    val adCallback = object: RewardedAdCallback() {
      override fun onRewardedAdOpened() {
        // Ad opened.
      }
      override fun onRewardedAdClosed() {
        // Ad closed.
      }
      override fun onUserEarnedReward(@NonNull reward: RewardItem) {
        // User earned reward.
      }
      override fun onRewardedAdFailedToShow(adError: AdError) {
        // Ad failed to display.
      }
    }
    rewardedAd.show(activityContext, adCallback)
  }
  else {
    Log.d("TAG", "The rewarded ad wasn't loaded yet.")
  }
}

Erhalten Sie Benachrichtigungen zu Anzeigenereignissen

Der für die Methode show() bereitgestellte RewardedAdCallback erhält Benachrichtigungen über Anzeigenereignisse mit Prämie. Jede der überschreibbaren Methoden in RewardedAdCallback entspricht einem Ereignis im Lebenszyklus einer Anzeige mit Prämie. Beispielsweise ist die Methode onUserEarnedReward() der perfekte Ort, um dem Benutzer seine Belohnung zukommen zu lassen. Weitere Details zu jeder Werbeereignismethode finden Sie unten.

Überschreibbare Methoden
onRewardedAdOpened() Diese Methode wird aufgerufen, wenn die Anzeige angezeigt wird und den Bildschirm des Geräts bedeckt.
onRewardedAdClosed() Diese Methode wird aufgerufen, wenn die Anzeige mit Prämie geschlossen wird, weil der Benutzer auf das Schließen-Symbol tippt oder die Zurück-Schaltfläche verwendet. Wenn Ihre App die Audioausgabe oder Spielschleife angehalten hat, ist dies ein großartiger Ort, um sie fortzusetzen.
onUserEarnedReward() Die Methode wird aufgerufen, wenn der Benutzer für die Interaktion mit der Anzeige belohnt werden soll. Auf Prämiendetails, die für Ihren Anzeigenblock konfiguriert wurden, kann über die getType() und getAmount() des RewardItem Parameters zugegriffen werden.
onRewardedAdFailedToShow() Diese Methode wird aufgerufen, wenn eine Anzeige nicht angezeigt wird. Es enthält einen adError -Parameter, der angibt, welche Art von Fehler aufgetreten ist. Die möglichen Werte des Fehlercodes ( adError.getCode() ) sind als Konstanten in der Klasse RewardedAdCallback definiert.

Verwenden von RewardedAdCallback, um die nächste Anzeige mit Prämie vorab zu laden

RewardedAd ist ein Objekt zur einmaligen Verwendung. Das bedeutet, sobald eine Anzeige mit Prämie gezeigt wird, kann das Objekt nicht zum Laden einer anderen Anzeige verwendet werden. Um eine weitere Anzeige mit Prämie anzufordern, müssen Sie ein neues RewardedAd -Objekt erstellen.

Eine bewährte Vorgehensweise besteht darin, eine weitere Anzeige mit Prämie in der Methode onRewardedAdClosed() auf RewardedAdCallback zu laden, sodass die nächste Anzeige mit Prämie geladen wird, sobald die vorherige geschlossen wird:

Java

public RewardedAd createAndLoadRewardedAd() {
        RewardedAd rewardedAd = new RewardedAd(this,
                "ca-app-pub-3940256099942544/5224354917");
        RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
            @Override
            public void onRewardedAdLoaded() {
                // Ad successfully loaded.
            }

            @Override
            public void onRewardedAdFailedToLoad(LoadAdError adError) {
                // Ad failed to load.
            }
        };
        rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
        return rewardedAd;
}

@Override
public void onRewardedAdClosed() {
    this.rewardedAd = createAndLoadRewardedAd();
}

Kotlin

fun createAndLoadRewardedAd(): RewardedAd {
  val rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917")
  val adLoadCallback = object: RewardedAdLoadCallback() {
    override fun onRewardedAdLoaded() {
      // Ad successfully loaded.
    }
    override fun onRewardedAdFailedToLoad(adError: LoadAdError) {
      // Ad failed to load.
    }
  }
  rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
  return rewardedAd
}
fun onRewardedAdClosed() {
  this.rewardedAd = createAndLoadRewardedAd()
}

Laden mehrerer Anzeigen mit Prämie

Um mehrere Anzeigen mit Prämie zu laden, befolgen Sie die im Objekt „Erstellen einer Anzeige mit Prämie“ beschriebenen Schritte und laden Sie einen Anzeigenabschnitt für jede Anzeige, die Sie laden möchten. Das folgende Code-Snippet zeigt, wie zwei Anzeigen mit Prämie für zwei unterschiedliche Anzeigenplatzierungen geladen werden.

Java

package ...

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {

    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        gameOverRewardedAd = createAndLoadRewardedAd(
          "ca-app-pub-3940256099942544/5224354917");
        extraCoinsRewardedAd = createAndLoadRewardedAd(
          "ca-app-pub-3940256099942544/5224354917");
    }

    public RewardedAd createAndLoadRewardedAd(String adUnitId) {
        RewardedAd rewardedAd = new RewardedAd(this, adUnitId);
        RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
            @Override
            public void onRewardedAdLoaded() {
                // Ad successfully loaded.
            }

            @Override
            public void onRewardedAdFailedToLoad(LoadAdError adError) {
                // Ad failed to load.
            }
        };
        rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
        return rewardedAd;
    }
}

Kotlin

import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity: Activity() {

  private lateinit var gameOverRewardedAd: RewardedAd
  private lateinit var extraCoinsRewardedAd: RewardedAd

  override fun onCreate(savedInstanceState:Bundle) {
    ...
    gameOverRewardedAd = createAndLoadRewardedAd(
      "ca-app-pub-3940256099942544/5224354917")
    extraCoinsRewardedAd = createAndLoadRewardedAd(
      "ca-app-pub-3940256099942544/5224354917")
  }

  fun createAndLoadRewardedAd(adUnitId:String): RewardedAd {
    val rewardedAd = RewardedAd(this, adUnitId)
    val adLoadCallback = object: RewardedAdLoadCallback() {
      override fun onRewardedAdLoaded() {
        // Ad successfully loaded.
      }
      override fun onRewardedAdFailedToLoad(adError: LoadAdError) {
        // Ad failed to load.
      }
    }
    rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
    return rewardedAd
  }
}

FAQ

Kann ich die Prämiendetails für die RewardedAd erhalten?
Ja, wenn Sie den Belohnungsbetrag benötigen, bevor der onUserEarnedReward() Callback ausgelöst wird, verfügt RewardedAd über eine getRewardItem() Methode, die Sie überprüfen können, um den Belohnungsbetrag nach dem Laden der Anzeige zu überprüfen.
Gibt es ein Timeout für den Initialisierungsaufruf?
Nach 10 Sekunden ruft das Google Mobile Ads SDK den OnInitializationCompleteListener auf, selbst wenn ein Vermittlungsnetzwerk die Initialisierung noch nicht abgeschlossen hat.
Was passiert, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungsrückruf erhalte?

Es hat sich bewährt, eine Anzeige innerhalb des Callbacks von OnInitializationCompleteListener zu laden. Auch wenn ein Vermittlungsnetzwerk noch nicht bereit ist, fragt das Google Mobile Ads SDK dieses Netzwerk dennoch nach einer Anzeige. Wenn also ein Vermittlungsnetzwerk die Initialisierung nach der Zeitüberschreitung abschließt, kann es zukünftige Anzeigenanfragen in dieser Sitzung weiterhin bedienen.

Sie können während Ihrer App-Sitzung weiterhin den Initialisierungsstatus aller Adapter abfragen, indem MobileAds.getInitializationStatus() aufrufen.

Wie finde ich heraus, warum ein bestimmtes Vermittlungsnetzwerk nicht bereit ist?

AdapterStatus.getDescription() beschreibt, warum ein Adapter nicht bereit ist, Anzeigenanfragen zu bedienen.