Anzeigen mit Prämie sind Anzeigen, mit denen Nutzer interagieren können, um In-App-Prämien zu erhalten. In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie aus AdMob in eine Unity-App einbinden.
Lesen Sie einige Erfolgsgeschichten von Kunden: Fallstudie 1, Fallstudie 2.In diesem Leitfaden erfahren Sie, wie Sie Anzeigen mit Prämie in eine Unity-App einbinden.
Vorbereitung
- Arbeiten Sie den Startleitfaden durch.
Verwenden Sie immer Testanzeigen
Der folgende Beispielcode enthält eine Anzeigenblock-ID, mit der Sie Testanzeigen anfordern können. Er wurde speziell so konfiguriert, dass bei jeder Anfrage Testanzeigen statt Produktionsanzeigen zurückgegeben werden.
Nachdem du jedoch eine App auf der AdMob-Weboberfläche registriert und eigene Anzeigenblock-IDs zur Verwendung in deiner App erstellt hast, konfiguriere dein Gerät während der Entwicklung explizit als Testgerät.
Android
ca-app-pub-3940256099942544/5224354917
iOS
ca-app-pub-3940256099942544/1712485313
Mobile Ads SDK initialisieren
Bevor Anzeigen geladen werden, muss Ihre App das Mobile Ads SDK initialisieren, indem MobileAds.Initialize()
aufgerufen wird. Dies muss nur einmal erfolgen, idealerweise beim Starten der App.
using GoogleMobileAds;
using GoogleMobileAds.Api;
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
}
Wenn Sie die Vermittlung verwenden, warten Sie, bis der Callback erfolgt, bevor Sie Anzeigen laden. So wird sichergestellt, dass alle Vermittlungsadapter initialisiert werden.
Implementierung
Die wichtigsten Schritte zur Integration von Anzeigen mit Prämie:
- Anzeige mit Prämie laden
- [Optional] Callbacks der serverseitigen Überprüfung (SSV) validieren
- Anzeige mit Prämie mit Prämien-Callback einblenden
- Auf Ereignisse für Anzeigen mit Prämie warten
- Anzeige mit Prämie bereinigen
- Nächste Anzeige mit Prämie vorab laden
Anzeige mit Prämie laden
Zum Laden einer Anzeige mit Prämie wird die statische Methode Load()
der Klasse RewardedAd
verwendet. Das geladene RewardedAd
-Objekt wird als Parameter im Abschluss-Handler bereitgestellt. Das folgende Beispiel zeigt, wie eine RewardedAd
geladen wird.
// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
private string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
private string _adUnitId = "unused";
#endif
private RewardedAd _rewardedAd;
/// <summary>
/// Loads the rewarded ad.
/// </summary>
public void LoadRewardedAd()
{
// Clean up the old ad before loading a new one.
if (_rewardedAd != null)
{
_rewardedAd.Destroy();
_rewardedAd = null;
}
Debug.Log("Loading the rewarded ad.");
// create our request used to load the ad.
var adRequest = new AdRequest();
// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest,
(RewardedAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad " +
"with error : " + error);
return;
}
Debug.Log("Rewarded ad loaded with response : "
+ ad.GetResponseInfo());
_rewardedAd = ad;
});
}
[Optional] Callbacks für die serverseitige Überprüfung validieren
Für Apps, bei denen in Callbacks für die serverseitige Überprüfung zusätzliche Daten erforderlich sind, 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
im SSV-Callback nicht vorhanden.
Im folgenden Codebeispiel wird gezeigt, wie die SSV-Optionen festgelegt werden, nachdem die Anzeige mit Prämie geladen wurde.
// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest, (RewardedAd ad, LoadAdError error) =>
{
// If the operation failed, an error is returned.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
return;
}
// If the operation completed successfully, no error is returned.
Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());
// Create and pass the SSV options to the rewarded ad.
var options = new ServerSideVerificationOptions
.Builder()
.SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
.Build()
ad.SetServerSideVerificationOptions(options);
});
Wenn Sie den benutzerdefinierten Prämienstring festlegen möchten, müssen Sie dies vor dem Ausliefern der Anzeige tun.
Anzeige mit Prämie mit Prämien-Callback einblenden
Wenn Sie Ihre Anzeige präsentieren, müssen Sie einen Callback angeben, um die Prämie für den Nutzer zu verarbeiten. Anzeigen können nur einmal pro Ladevorgang ausgeliefert werden. Verwenden Sie die Methode CanShowAd()
, um zu prüfen, ob die Anzeige ausgeliefert werden kann.
Im folgenden Code wird die beste Methode zum Präsentieren einer Anzeige mit Prämie dargestellt.
public void ShowRewardedAd()
{
const string rewardMsg =
"Rewarded ad rewarded the user. Type: {0}, amount: {1}.";
if (rewardedAd != null && rewardedAd.CanShowAd())
{
rewardedAd.Show((Reward reward) =>
{
// TODO: Reward the user.
Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
});
}
}
Auf Ereignisse für Anzeigen mit Prämie warten
Wenn Sie das Verhalten Ihrer Anzeige weiter anpassen möchten, können Sie eine Reihe von Ereignissen im Lebenszyklus der Anzeige verknüpfen, z. B. das Öffnen oder Schließen. Sie können diese Ereignisse überwachen, indem Sie wie unten gezeigt einen Delegaten registrieren.
private void RegisterEventHandlers(RewardedAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("Rewarded ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("Rewarded ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Rewarded ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded ad full screen content closed.");
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " +
"with error : " + error);
};
}
Anzeige mit Prämie bereinigen
Wenn Sie mit einem RewardedAd
fertig sind, müssen Sie die Methode Destroy()
aufrufen, bevor Sie den Verweis darauf löschen:
_rewardedAd.Destroy();
Dadurch wird das Plug-in darüber informiert, dass das Objekt nicht mehr verwendet wird und der belegte Arbeitsspeicher freigegeben werden kann. Wenn diese Methode nicht aufgerufen wird, kommt es zu Speicherlecks.
Nächste Anzeige mit Prämie vorab laden
RewardedAd
ist ein Einmalobjekt. Das bedeutet, dass das Objekt nach der Auslieferung einer Anzeige mit Prämie nicht mehr verwendet werden kann. Wenn Sie eine weitere Anzeige mit Prämie anfordern möchten, müssen Sie ein neues RewardedAd
-Objekt erstellen.
Wenn Sie eine Anzeige mit Prämie für die nächste Impressionschance vorbereiten möchten, laden Sie die Anzeige mit Prämie vor, sobald das Anzeigenereignis OnAdFullScreenContentClosed
oder OnAdFullScreenContentFailed
ausgelöst wird.
private void RegisterReloadHandler(RewardedAd ad)
{
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded Ad full screen content closed.");
// Reload the ad so that we can show another as soon as possible.
LoadRewardedAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " +
"with error : " + error);
// Reload the ad so that we can show another as soon as possible.
LoadRewardedAd();
};
}
Zusätzliche Ressourcen
- HelloWorld-Beispiel: minimale Implementierung aller Anzeigenformate