In diesem Leitfaden erfahren Sie, wie Sie das AdMob-Add-on für native Anzeigen verwenden können, um native AdMob-Anzeigen in einer Unity-App zu implementieren, und erhalten nützliche Tipps dazu.
Form und Funktion von nativen Anzeigen entsprechen dem Kontext, in den sie eingebettet sind. Sie sind außerdem optisch an das Design der jeweiligen App angepasst. Mit dem nativen AdMob-Anzeigenformat können Publisher Anzeigen rendern, die sich optimal in den übrigen Content einfügen. Sie können diese Technologie nutzen, um stark benutzerdefinierte Renderings zu implementieren, die den nativen Code in Unity-Apps in vollem Umfang nutzen.
Native Anzeigen werden mit denselben GameObjects
-Typen ausgeliefert, mit denen Sie bereits Ihre Apps erstellen, und können so formatiert werden, dass sie mit dem visuellen Design der jeweiligen Umgebung übereinstimmen. Wenn eine native Anzeige geladen wird, empfängt Ihre App ein natives Objekt, das seine Assets enthält, und die Unity-App (nicht das SDK) zeigt diese an.
Voraussetzungen
- Google Mobile Ads Unity-Plug-in Version 7.0.0 oder höher.
- Arbeiten Sie den Startleitfaden durch.
- Laden Sie das Add-on für native Anzeigen herunter und installieren Sie es.
Native Anzeigenformate laden
Native Anzeigen werden über die Klasse AdLoader
geladen, die eine eigene Klasse AdLoader.Builder
hat, um sie beim Erstellen anzupassen. Mit der Methode ForNativeAd()
wird AdLoader so konfiguriert, dass native Anzeigen verarbeitet werden.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Für AdLoader-Anzeigenereignisse registrieren
Fügen Sie der Klasse AdLoader
Bevollmächtigte für die unten aufgeführten Ereignisse hinzu, um benachrichtigt zu werden, wenn eine native Anzeige entweder erfolgreich geladen wird oder nicht geladen werden kann.
OnNativeAdLoaded
Wird aufgerufen, wenn eine native Anzeige geladen wurde. Für den Zugriff auf die geladene Anzeige ist ein Bevollmächtigter erforderlich.
OnAdFailedToLoad
Wird aufgerufen, wenn eine native Anzeige nicht geladen wird
Anzeige laden
Nachdem Sie ein AdLoader
-Objekt erstellt haben, rufen Sie seine LoadAd()
-Methode auf, um eine Anzeige anzufordern:
adLoader.LoadAd(new AdRequest.Builder().Build());
Anzeigenanfrage zusammenführen
Das Code-Snippet unten zeigt, wie ein AdLoader
-Element erstellt wird, das so konfiguriert ist, dass native Anzeigen angefordert, Bevollmächtigte für erfolgreiche und fehlgeschlagene Ladevorgänge festgelegt und eine Anzeigenanfrage gesendet wird.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Umgang mit fehlgeschlagenen Anzeigenladevorgängen
Das OnAdFailedToLoad
-Ereignis ist vom Typ EventHandle<AdFailedToLoadEventArgs>
.
Unten sehen Sie, wie Sie den Grund für das Fehlschlagen des Ladens dieses Ereignisses erkennen.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
Native Anzeige ausliefern
Beim Laden einer nativen Anzeige wird das Anzeigenereignis für das entsprechende Anzeigenformat aufgerufen. Die App ist dann für die Auslieferung der Anzeige verantwortlich, muss dies aber nicht sofort tun.
Anzeigenlast verarbeiten
Das OnNativeAdLoaded
-Ereignis ist vom Typ EventHandler<NativeAdEventArgs>
. Die Anzeige, die in einem NativeAd
-Objekt gekapselt ist, kann aus NativeAdEventArgs
abgerufen werden:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Assets für native Anzeigen abrufen
Sobald die Anzeigen geladen sind, können Sie wie unten dargestellt auf ihre Assets zugreifen. Grafische Assets werden als Texture2D
-Objekte und Text-Assets als string
-Objekte zurückgegeben.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
Anzeigen-Assets sollten nur im Hauptthread aufgerufen werden, beispielsweise über die Methode Update()
eines Unity-Skripts. Die folgenden Assets sind aber nicht immer vorhanden und sollten überprüft werden, bevor sie angezeigt werden:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Datenschutzinfo-Asset
Das Datenschutzinfo-Asset muss als Teil der nativen Anzeige eingeblendet werden. Außerdem ist es wichtig, dass das Datenschutzinfo-Asset leicht zu sehen ist. Wählen Sie daher entsprechende Hintergrundfarben und -bilder aus.
GameObjects für Anzeigen-Asset registrieren
Sie müssen die GameObject
registrieren, damit das Anzeigen-Asset in der Unity-App angezeigt wird. Wenn die Registrierung erfolgreich ist, gibt die Methode, die zum Registrieren von GameObject
verwendet wird, eine bool
zurück. Bei List<GameObject>
gibt die Methode eine int
zurück, die die erfolgreich registrierte GameObject
-Anzahl angibt.
Wenn die Registrierung eines Anzeigen-Assets fehlschlägt, werden Impressionen und Klicks auf die entsprechende native Anzeige nicht erkannt.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
Die GameObject
, die für ein Anzeigen-Asset registriert wird, muss eine konvexe Collider-Komponente haben, die für die Größe und die Form von GameObject
repräsentativ ist. Wenn in GameObject
-Objekten, die für Anzeigen-Assets registriert sind, Collider
-Komponenten fehlen oder sie falsch konfiguriert sind, funktionieren native Anzeigen nicht richtig.
Im Code-Snippet unten wird ein BoxCollider
zu GameObject
hinzugefügt, das ein TextMesh
verwendet, um das Anzeigentitel-Anzeigen-Asset einer nativen Anzeige darzustellen. Sobald BoxCollider
an GameObject
angehängt ist, wird es automatisch skaliert, um den Text der TextMesh
-Komponente zu berücksichtigen.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
Demo
Der folgende Code zeigt, wie Sie das Symbol-Asset einer erfolgreich geladenen nativen Anzeige abrufen, das Symbol-Anzeigen-Asset aufrufen, indem Sie die Textur eines Quad
-Elements festlegen und das GameObject
-Objekt für die Darstellung des Assets registrieren. Dieser Vorgang, bei dem das Anzeigen-Asset abgerufen und in der nativen Anzeigenklasse registriert wird, muss für jedes Asset in der App wiederholt werden.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}