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 wichtigen Punkte Sie dabei beachten sollten.
Form und Funktion nativer Anzeigen entsprechen dem Kontext, in den sie eingebettet sind. Außerdem passen sie zum Design der App. Mit dem AdMob-Format für native Anzeigen können Publisher Anzeigen rendern, die sich optimal in den übrigen Content einfügen lassen. Sie können diese Technologie verwenden, um stark benutzerdefinierte Renderings zu implementieren, die die Vorteile des nativen Codes in Unity-Anwendungen nutzen.
Native Anzeigen werden mit denselben GameObjects
-Typen ausgeliefert, mit denen Sie bereits Ihre Apps erstellen, und können so formatiert werden, dass sie dem Design der Umgebung entsprechen, in der sie ausgeführt werden. Wenn eine native Anzeige geladen wird, erhält Ihre App ein natives Objekt, das ihre Assets enthält. In der Unity App werden diese dann statt im SDK angezeigt.
Vorbereitung
- Laden Sie das Google Mobile Ads Unity-Plug-in Version 7.0.0 oder höher herunter und installieren Sie es.
- Laden Sie das Add-on für native Anzeigen herunter und installieren Sie es.
- Folgen Sie der Anleitung im Startleitfaden, wie Sie das Mobile Ads Unity-Plug-in importieren und das Mobile Ads SDK einbinden.
Native Anzeigenformate laden
Native Anzeigen werden über die Klasse AdLoader
geladen, die eine eigene Klasse AdLoader.Builder
hat, um sie während der Erstellung 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
Wenn Sie benachrichtigt werden möchten, wenn eine native Anzeige geladen wird oder nicht geladen werden kann, fügen Sie zur Klasse AdLoader
Delegierte für die unten aufgeführten Ereignisse hinzu.
OnNativeAdLoaded
Wird aufgerufen, wenn eine native Anzeige erfolgreich geladen wurde. Es muss ein Delegierter für dieses Ereignis erforderlich sein, um auf die geladene Anzeige zuzugreifen.
OnAdFailedToLoad
Wird aufgerufen, wenn eine native Anzeige nicht geladen werden kann.
Anzeige laden
Nachdem Sie eine AdLoader
erstellt haben, rufen Sie ihre LoadAd()
-Methode auf, um eine Anzeige anzufordern:
adLoader.LoadAd(new AdRequest.Builder().Build());
Anzeigenanfragen zusammenfassen
Das Code-Snippet unten zeigt, wie ein AdLoader
erstellt wird, der für die Anfrage nativer Anzeigen konfiguriert ist, Zugriffsrechte für erfolgreiche und fehlgeschlagene Anzeigenaufrufe festlegt und eine Anzeigenanfrage stellt.
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 Ereignis OnAdFailedToLoad
ist vom Typ EventHandle<AdFailedToLoadEventArgs>
.
Im Folgenden wird der Grund für den Fehler beim Laden einer Anzeige durch dieses Ereignis geparst.
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
Wird eine native Anzeige geladen, wird das Anzeigenereignis für das entsprechende Anzeigenformat aufgerufen. Ihre App ist dann für die Auslieferung der Anzeige zuständig, obwohl dies nicht unbedingt sofort erforderlich sein muss.
Anzeigenlast verarbeiten
Das Ereignis OnNativeAdLoaded
ist vom Typ EventHandler<NativeAdEventArgs>
. Die in einem NativeAd
-Objekt gekapselte Anzeige kann wie hier dargestellt von NativeAdEventArgs
abgerufen werden:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Native Anzeigenassets abrufen
Sobald die Anzeigen geladen wurden, 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;
}
Auf Anzeigen-Assets sollte nur im Hauptthread zugegriffen werden, z. B. über die Methode Update()
eines Unity-Skripts. Die folgenden Assets sind nicht immer vorhanden und sollten vor der Anzeige überprüft werden:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Datenschutzinfo-Asset
Das Datenschutzinfo-Anzeigen-Asset muss als Teil der nativen Anzeige präsentiert werden. Außerdem ist es wichtig, dass das Datenschutzinfo-Anzeigenelement leicht erkennbar ist. Wählen Sie also Hintergrundfarben und Bilder aus.
GameObjects für Anzeigen-Asset registrieren
Damit jedes Anzeigenasset angezeigt werden kann, müssen Sie die GameObject
registrieren, damit das Asset in der Unity App angezeigt werden kann. Jede Methode zum Registrieren einer GameObject
für ein Anzeigenasset gibt einen booleschen Wert zurück, der angibt, ob die Registrierung erfolgreich war. Wenn die Registrierung eines Anzeigen-Assets nicht erfolgreich ist, werden die 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 ist, muss eine konvexe Collider-Komponente haben, die für die Größe und Form der GameObject
repräsentativ ist. Wenn bei GameObject
-Objekten, die für Anzeigen-Assets registriert wurden, Collider
-Komponenten fehlen oder diese falsch konfiguriert sind, funktionieren native Anzeigen nicht richtig.
Im folgenden Code-Snippet wird eine BoxCollider
zu GameObject
hinzugefügt, die ein TextMesh
verwendet, um das Anzeigentitel-Asset einer nativen Anzeige einzublenden. Sobald die BoxCollider
an die GameObject
angehängt ist, wird sie automatisch skaliert, um den Text der Komponente TextMesh
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 durch Festlegen der Textur eines Quad
anzeigen und das GameObject
für die Anzeige registrieren. das Asset. Der Vorgang zum Abrufen des Anzeigen-Assets und zum Registrieren bei der nativen Anzeigenklasse sollte für jedes von der App angezeigte Asset 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;
}