Interstitials mit Prämie sind ein Anzeigenformat mit Incentives, mit dem Sie Prämien für Anzeigen anbieten können, die automatisch an natürlichen Übergangspunkten innerhalb einer App ausgeliefert werden. Anders als bei Anzeigen mit Prämie müssen Nutzer nicht zustimmen, sich Interstitials mit Prämie anzusehen.
Vorbereitung
* Google Mobile Ads SDK 19.2.0 oder höher- Führen Sie die Schritte im Startleitfaden aus.
Implementierung
So integrieren Sie Interstitials mit Prämie:
- Anzeige laden
- Für Full-Screen-Ereignis-Callbacks registrieren
- Callback zur Freigabe der Prämie verarbeiten
- Anzeige präsentieren
- [Optional] SSV-Callbacks prüfen
Anzeige laden
Zum Laden einer Anzeige wird die statische Methode load()
der Klasse RewardedInterstitialAd
verwendet. Für die Lademethode sind ein Kontext, Ihre Anzeigenblock-ID, ein AdRequest
-Objekt und ein RewardedInterstitialAdLoadCallback
erforderlich, um benachrichtigt zu werden, wenn das Laden der Anzeigen erfolgreich oder fehlgeschlagen ist. Das geladene RewardedInterstitialAd
-Objekt wird als Parameter im onRewardedInterstitialAdLoaded()
-Callback übergeben.
Das folgende Beispiel zeigt, wie Sie eine RewardedInterstitialAd
in Ihre MainActivity
laden.
Java
public class MainActivity extends AppCompatActivity {
private RewardedInterstitialAd rewardedInterstitialAd;
private String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(
() -> {
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this, initializationStatus -> {});
// Load an ad on the main thread.
runOnUiThread(
() -> {
loadAd();
});
})
.start();
}
public void loadAd() {
// Use the test ad unit ID to load an ad.
RewardedInterstitialAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379",
new AdRequest.Builder().build(), new RewardedInterstitialAdLoadCallback() {
@Override
public void onAdLoaded(RewardedInterstitialAd ad) {
Log.d(TAG, "Ad was loaded.");
rewardedInterstitialAd = ad;
}
@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
Log.d(TAG, loadAdError.toString());
rewardedInterstitialAd = null;
}
});
}
}
Kotlin
import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAd
import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAdLoadCallback
class MainActivity : AppCompactActivity() {
private var rewardedInterstitialAd? = null
private final var TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this@MainActivity) {}
// Load an ad on the main thread.
runOnUiThread {
loadAd()
}
}
}
private fun loadAd() {
RewardedInterstitialAd.load(this, "ca-app-pub-3940256099942544/5354046379",
AdRequest.Builder().build(), object : RewardedInterstitialAdLoadCallback() {
override fun onAdLoaded(ad: RewardedInterstitialAd) {
Log.d(TAG, "Ad was loaded.")
rewardedInterstitialAd = ad
}
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, adError?.toString())
rewardedInterstitialAd = null
}
})
}
}
Für Callbacks registrieren
Damit Sie Benachrichtigungen zu Präsentationsereignissen erhalten, müssen Sie dem Setter Ihrer Anzeige ein FullScreenContentCallback
-Objekt übergeben. Das FullScreenContentCallback
-Objekt verarbeitet Callbacks für den erfolgreichen oder fehlgeschlagenen Anzeigenbereitstellungsvorgang und für das Schließen der Anzeige. Im folgenden Code wird gezeigt, wie Sie ein anonymes FullScreenContentCallback
-Objekt in Ihrem RewardedInterstitialAdLoadCallback
festlegen:
Java
public void loadAd(){
RewardedInterstitialAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379",
new AdRequest.Builder().build(), new RewardedInterstitialAdLoadCallback() {
@Override
public void onAdLoaded(RewardedInterstitialAd ad) {
rewardedInterstitialAd = ad;
rewardedInterstitialAd.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.");
rewardedInterstitialAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.");
rewardedInterstitialAd = 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.");
}
});
}
@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
Log.d(TAG, loadAdError.toString());
rewardedInterstitialAd = null;
}
});
}
Kotlin
private fun loadAd() {
RewardedInterstitialAd.load(this, "ca-app-pub-3940256099942544/5354046379",
AdRequest.Builder().build(), object : RewardedInterstitialAdLoadCallback() {
override fun onAdLoaded(ad: RewardedInterstitialAd) {
rewardedInterstitialAd = ad
rewardedInterstitialAd?.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.")
rewardedInterstitialAd = null
}
override fun onAdFailedToShowFullScreenContent(adError: AdError) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.")
rewardedInterstitialAd = 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.")
}
}
}
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, adError?.toString())
rewardedInterstitialAd = null
}
})
}
Prämien verarbeiten
Wenn Sie eine Interstitial-Anzeige mit Prämie präsentieren möchten, implementieren Sie die OnUserEarnedRewardListener
-Benutzeroberfläche in Ihrer MainActivity
, um benachrichtigt zu werden, wenn der Nutzer eine Prämie erhält.
Java
public class MainActivity extends AppCompatActivity implements OnUserEarnedRewardListener {
...
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
Log.i(TAG, "User earned reward.");
// TODO: Reward the user!
}
}
Kotlin
class MainActivity : AppCompatActivity(), OnUserEarnedRewardListener {
...
override fun onUserEarnedReward(rewardItem: RewardItem) {
Log.d(TAG, "User earned reward.")
// TODO: Reward the user!
}
}
Anzeige ausliefern
Nachdem Sie die OnUserEarnedRewardListener
-Oberfläche implementiert haben, können Sie die Anzeige mit der show()
-Methode der Anzeige so präsentieren:
Java
rewardedInterstitialAd.show(/* Activity */ MainActivity.this,/*
OnUserEarnedRewardListener */ MainActivity.this);
Kotlin
rewardedInterstitialAd?.show(/* Activity */ this, /*
OnUserEarnedRewardListener */ this)
[Optional] Callbacks für die serverseitige Überprüfung (SSV) validieren
Für Apps, die in Callbacks für die serverseitige Überprüfung zusätzliche Daten benötigen, sollte die Funktion für benutzerdefinierte Daten von Anzeigen mit Prämie verwendet werden. Alle Stringwerte, die für ein Objekt mit Anzeigen mit Prämie festgelegt sind, werden an den Abfrageparameter custom_data
des SSV-Callbacks übergeben. Wenn kein benutzerdefinierter Datenwert festgelegt ist, ist der Wert des Abfrageparameters custom_data
nicht im SSV-Callback enthalten.
Im folgenden Codebeispiel wird gezeigt, wie Sie benutzerdefinierte Daten für ein Interstitial-Anzeigenobjekt mit Prämie festlegen, bevor Sie eine Anzeige anfordern.
Java
RewardedInterstitialAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379",
new AdRequest.Builder().build(), new RewardedInterstitialAdLoadCallback() {
@Override
public void onAdLoaded(RewardedInterstitialAd ad) {
Log.d(TAG, "Ad was loaded.");
rewardedInterstitialAd = ad;
ServerSideVerificationOptions options = new ServerSideVerificationOptions
.Builder()
.setCustomData("SAMPLE_CUSTOM_DATA_STRING")
.build();
rewardedInterstitialAd.setServerSideVerificationOptions(options);
}
@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
Log.d(TAG, loadAdError.toString());
rewardedInterstitialAd = null;
}
});
Kotlin
RewardedInterstitialAd.load(this, "ca-app-pub-3940256099942544/5354046379",
AdRequest.Builder().build(), object : RewardedInterstitialAdLoadCallback() {
override fun onAdLoaded(ad: RewardedInterstitialAd) {
Log.d(TAG, "Ad was loaded.")
rewardedInterstitialAd = ad
val options = ServerSideVerificationOptions.Builder()
.setCustomData("SAMPLE_CUSTOM_DATA_STRING")
.build()
rewardedInterstitialAd.setServerSideVerificationOptions(options)
}
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, adError?.toString())
rewardedInterstitialAd = null
}
})
Wenn Sie den benutzerdefinierten Prämienstring festlegen möchten, müssen Sie dies vor dem Ausliefern der Anzeige tun.
Beispiele auf GitHub
Nächste Schritte
Sehen Sie sich die folgenden Themen an: