Anzeigen mit Prämie

Vorbereitung

  • Das Google Mobile Ads SDK 19.7.0 oder höher
  • Folge dem Startleitfaden, um das Google Mobile Ads SDK zu importieren und dein Android-Manifest zu aktualisieren.

Immer mit Testanzeigen testen

Verwenden Sie beim Erstellen und Testen Ihrer Apps keine Testanzeigen, sondern Testanzeigen. Fehlen sie, kann Ihr Konto gesperrt werden.

Dies lässt sich am einfachsten mit der Testanzeigenblock-ID für Android-Anzeigen mit Prämie laden:

ca-app-pub-3940256099942544/5224354917

Sie wurde speziell dafür entwickelt, für jede Anfrage Testanzeigen zurückzugeben. Außerdem kannst du es beim Programmieren, Testen und Debuggen in deinen eigenen Apps verwenden. Ersetzen Sie ihn vor der Veröffentlichung durch Ihre eigene Anzeigenblock-ID.

Weitere Informationen zur Funktionsweise von Testanzeigen des Mobile Ads SDKs finden Sie unter Testanzeigen.

Anzeigenobjekt mit Prämie laden

Anzeigen mit Prämie werden geladen, indem die statische Methode load() für die Klasse RewardedAd aufgerufen und ein RewardedAdLoadCallback übergeben wird. Dies wird normalerweise in der onCreate()-Methode von Activity ausgeführt. Wie bei anderen Callbacks beim Formatformat wird für RewardedAdLoadCallback LoadAdError-Fehler verwendet.

Java

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

public class MainActivity extends Activity {
  private RewardedAd mRewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",
      adRequest, new RewardedAdLoadCallback() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
          // Handle the error.
          Log.d(TAG, loadAdError.toString());
          mRewardedAd = null;
        }

        @Override
        public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
          mRewardedAd = rewardedAd;
          Log.d(TAG, "Ad was loaded.");
        }
    });
  }
}

Kotlin

class MainActivity : AppCompatActivity() {

  private var mRewardedAd: RewardedAd? = null
  private final var TAG = "MainActivity"

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    var adRequest = AdRequest.Builder().build()

    RewardedAd.load(this,"ca-app-pub-3940256099942544/5224354917", adRequest, object : RewardedAdLoadCallback() {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, adError?.toString())
        mRewardedAd = null
      }

      override fun onAdLoaded(rewardedAd: RewardedAd) {
        Log.d(TAG, "Ad was loaded.")
        mRewardedAd = rewardedAd
       }
    })
  }
}

FullscreenContentCallback festlegen

Das FullScreenContentCallback verarbeitet Ereignisse, die mit der Anzeige deines RewardedAd zusammenhängen. Damit du die RewardedAd siehst, musst du den Callback so festlegen:

Java

mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
  @Override
  public void onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.");
  }

   @Override
  public void onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad dismissed fullscreen content.");
    mRewardedAd = null;
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.");
    mRewardedAd = null;
  }

  @Override
  public void onAdImpression() {
    // Called when an impression is recorded for an ad.
    Log.d(TAG, "Ad recorded an impression.");
  }

  @Override
  public void onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad showed fullscreen content.");
  }
});

Kotlin

mRewardedAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
  override fun onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.")
  }

  override fun onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad dismissed fullscreen content.")
    mRewardedAd = null
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.")
    mRewardedAd = null
  }

  override fun onAdImpression() {
    // Called when an impression is recorded for an ad.
    Log.d(TAG, "Ad recorded an impression.")
  }

  override fun onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad showed fullscreen content.")
  }
}

Anzeige einblenden

Wenn Sie eine Anzeige mit Prämie ausliefern, verwenden Sie ein OnUserEarnedRewardListener-Objekt, um Prämienereignisse zu verarbeiten.

Java

if (mRewardedAd != null) {
  Activity activityContext = MainActivity.this;
  mRewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
    @Override
    public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
      // Handle the reward.
      Log.d(TAG, "The user earned the reward.");
      int rewardAmount = rewardItem.getAmount();
      String rewardType = rewardItem.getType();
    }
  });
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.");
}

Kotlin

if (mRewardedAd != null) {
  mRewardedAd?.show(this, OnUserEarnedRewardListener() {
    fun onUserEarnedReward(rewardItem: RewardItem) {
      var rewardAmount = rewardItem.amount
      var rewardType = rewardItem.type
      Log.d(TAG, "User earned the reward.")
    }
  })
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.")
}

FAQ

Gibt es eine Zeitüberschreitung für den Initialisierungsaufruf?
Nach 10 Sekunden wird das OnInitializationCompleteListener durch das Google Mobile Ads SDK aufgerufen, auch wenn ein Vermittlungsnetzwerk die Initialisierung noch nicht abgeschlossen hat.
Was ist, wenn einige Vermittlungsnetzwerke nicht bereit sind, wenn ich den Initialisierungs-Callback erhalte?

Es hat sich bewährt, eine Anzeige innerhalb des Callbacks von OnInitializationCompleteListener zu laden. Selbst wenn ein Vermittlungsnetzwerk nicht bereit ist, wird es vom Google Mobile Ads SDK nach einer Anzeige gefragt. Wenn ein Vermittlungsnetzwerk die Initialisierung nach dem Zeitlimit beendet hat, kann es in dieser Sitzung weiterhin zukünftige Anzeigenanfragen verarbeiten.

Du kannst den Initialisierungsstatus aller Adapter während der gesamten App-Sitzung abfragen, indem du MobileAds.getInitializationStatus() aufrufst.

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

AdapterStatus.getDescription() beschreibt, warum ein Adapter nicht für Anzeigenanfragen bereit ist.

Beispiele auf GitHub

  • Beispiel für Anzeigen mit Prämie: Java | Kotlin