In diesem Leitfaden erfahren Sie, wie Sie mit dem Add-on für native Anzeigen native AdMob-Anzeigen in einer Unity-App implementieren und welche Punkte Sie beachten sollten.
Native Anzeigen entsprechen der Form und Funktion der Umgebung, in der sie platziert werden. Sie sind außerdem 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. Mit dieser Technologie können Sie stark angepasste Renderings implementieren, die den nativen Code in Unity-Apps vollständig nutzen.
Native Anzeigen werden unter Verwendung derselben GameObjects
-Typen ausgeliefert, mit denen Sie bereits Ihre Apps erstellen. Außerdem können sie so formatiert werden, dass sie mit dem visuellen Design der App übereinstimmen. Wenn eine native Anzeige geladen wird, empfängt Ihre App ein natives Objekt, das seine Assets enthält, und die Unity-App (anstatt das SDK) zeigt diese an.
Voraussetzungen
- Version 7.0.0 oder höher des Google Mobile Ads Unity-Plug-ins.
- Folgen Sie der Anleitung im Startleitfaden.
- Laden Sie das native Anzeigen-Add-on 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 AdLoad für die Verarbeitung nativer Anzeigen konfiguriert.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Für Adloader-Anzeigenereignisse registrieren
Wenn Sie benachrichtigt werden möchten, wenn eine native Anzeige erfolgreich geladen wurde oder nicht geladen werden kann, fügen Sie der Klasse AdLoader
Bevollmächtigte für die unten aufgeführten Ereignisse hinzu.
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 werden kann
Anzeige laden
Sobald Sie die AdLoader
-Erstellung abgeschlossen haben, rufen Sie die zugehörige LoadAd()
-Methode auf, um eine Anzeige anzufordern:
adLoader.LoadAd(new AdRequest.Builder().Build());
Anzeigenanfrage kombinieren
Im folgenden Code-Snippet sehen Sie, wie ein AdLoader
erstellt wird, mit dem native Anzeigen angefordert, Bevollmächtigte für erfolgreiche und fehlgeschlagene Anzeigenladevorgänge festgelegt und eine Anzeigenanfrage gesendet werden.
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 Anzeigenaufrufen
Das Ereignis OnAdFailedToLoad
hat den Typ EventHandle<AdFailedToLoadEventArgs>
.
Der Grund für das Fehlschlagen des Ladens einer Anzeige aus diesem Ereignis wird unten dargestellt.
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 präsentieren
Wenn eine native Anzeige geladen wird, wird das Anzeigenereignis für das entsprechende Anzeigenformat aufgerufen. Die App ist dann für die Auslieferung der Anzeige verantwortlich, muss dies jedoch nicht sofort tun.
Anzeigenlast verarbeiten
Das Ereignis OnNativeAdLoaded
hat den Typ EventHandler<NativeAdEventArgs>
. Die in einem NativeAd
-Objekt gekapselte Anzeige 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 gezeigt 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, z. B. über die Methode Update()
eines Unity-Skripts. Beachten Sie auch, dass die folgenden Assets nicht immer vorhanden sind und geprüft werden sollten, 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 gut zu sehen ist. Wählen Sie daher die entsprechenden Hintergrundfarben und Bilder aus.
GameObjects für Anzeigen-Asset registrieren
Sie müssen GameObject
für das Anzeigen-Asset registrieren, das in Ihrer Unity-App angezeigt werden soll. Wenn die Registrierung erfolgreich war, gibt die Methode, die zum Registrieren von GameObject
verwendet wird, einen bool
zurück. Bei einem List<GameObject>
gibt die Methode einen int
-Wert zurück, der die Anzahl der erfolgreich registrierten GameObject
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 repräsentativ für die Größe und Form der GameObject
ist. Wenn in für Anzeigen-Assets registrierten GameObject
-Objekten Collider
-Komponenten fehlen oder eine falsch konfigurierte Komponente vorhanden ist, 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 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 das Symbol-Asset einer erfolgreich geladenen nativen Anzeige abgerufen wird, das Symbol eines Anzeigen-Assets angezeigt wird, indem die Textur von Quad
festgelegt wird und das GameObject
registriert wird, um das Asset anzuzeigen. Dieser Vorgang, bei dem das Anzeigen-Asset abgerufen und bei der nativen Anzeigenklasse registriert wird, sollte 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;
}