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ügtRewardedAd
über einegetRewardItem()
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.