In diesem Leitfaden erfahren Sie, wie Sie mit dem Add-on für native Anzeigen native Anzeigen in einer Unity-App implementieren. Außerdem werden einige wichtige Punkte erläutert, die Sie dabei beachten sollten.
Form und Funktion von nativen Anzeigen entsprechen dem Kontext, in den sie eingebettet sind. Sie passen sich auch dem visuellen Design der App an, in der sie erscheinen. Das natives Anzeigenformat von Ad Manager bietet Publishern die Möglichkeit, Anzeigen nahtlos in Inhalte einzubinden. Mit dieser Technologie können Sie vollständig benutzerdefinierten Content implementieren, der den nativen Code in Unity-Apps optimal nutzt.
Native Anzeigen werden unter Verwendung der gleichen GameObjects-Typen dargestellt, mit denen Sie bereits Ihre Apps erstellen. Außerdem können sie so formatiert werden, dass sie mit dem visuellen Design Ihrer App übereinstimmen. Wenn eine native Anzeige geladen wird, erhält Ihre App ein natives Objekt, das die Assets enthält. Diese werden dann von der Unity-App und nicht vom SDK angezeigt.
Vorbereitung
- Google Mobile Ads Unity-Plug-in: Version 7.0.0 oder höher
- Führen Sie die Schritte im Startleitfaden aus.
- 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 bei der Erstellung anzupassen. Mit der Methode ForNativeAd() wird der AdLoader 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 wird oder nicht geladen werden kann, fügen Sie der Klasse AdLoader Delegierte für die unten aufgeführten Ereignisse hinzu.
OnNativeAdLoaded
Wird aufgerufen, wenn eine native Anzeige erfolgreich geladen wurde. Für dieses Ereignis ist ein Delegate erforderlich, um auf die geladene Anzeige zuzugreifen.
OnAdFailedToLoad
Wird aufgerufen, wenn eine native Anzeige nicht geladen werden kann.
Anzeige laden
Nachdem Sie einen AdLoader erstellt haben, rufen Sie die Methode LoadAd() auf, um eine Anzeige anzufordern:
adLoader.LoadAd(new AdRequest.Builder().Build());
Anzeigenanfrage zusammenstellen
Im folgenden Code-Snippet wird gezeigt, wie Sie ein AdLoader-Objekt erstellen, das für die Anfrage nativer Anzeigen konfiguriert ist, wie Sie Delegaten für erfolgreiche und fehlgeschlagene Anzeigenladeversuche festlegen und wie Sie eine Anzeigenanfrage stellen.
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());
}
Fehler beim Laden von Anzeigen beheben
Das Ereignis OnAdFailedToLoad ist vom Typ EventHandle<AdFailedToLoadEventArgs>.
Unten sehen Sie, wie der Grund für einen Fehler beim Laden von Anzeigen aus diesem Ereignis geparst wird.
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. Ihre App ist dann für die Auslieferung der Anzeige verantwortlich, muss dies aber nicht unbedingt sofort tun.
Anzahl der Anzeigen verwalten
Das Ereignis OnNativeAdLoaded ist vom Typ EventHandler<NativeAdEventArgs>. Die Anzeige, die in einem NativeAd-Objekt gekapselt ist, kann wie folgt 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
Nachdem 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 über den Hauptthread zugegriffen werden, z. B. über die Methode Update() eines Unity-Scripts. Beachten Sie außerdem, dass die folgenden Assets nicht immer vorhanden sind und vor der Anzeige geprüft werden sollten:
GetStarRating()GetStore()GetPrice()GetAdvertiser()GetIconTexture()
Datenschutzinfo-Asset
Das Anzeigen-Asset „Datenschutzinfo“ muss als Teil der nativen Anzeige eingeblendet werden. Es ist außerdem wichtig, dass das Datenschutzinfo-Anzeigen-Asset gut zu erkennen ist. Wählen Sie daher entsprechende Hintergrundfarben und ‑bilder aus.
GameObjects für Anzeigen-Asset registrieren
Sie müssen das GameObject registrieren, damit das Anzeigen-Asset in Ihrer Unity-App angezeigt wird. Wenn die Registrierung erfolgreich ist, gibt die Methode, die zur Registrierung des GameObject verwendet wird, ein bool zurück. Bei einem List<GameObject> gibt die Methode einen int 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.
}
Das GameObject, das für ein Anzeigen-Asset registriert ist, muss eine konvexe Collider-Komponente haben, die der Größe und Form des GameObject entspricht. Wenn bei GameObject-Objekten, die für Anzeigen-Assets registriert sind, Collider-Komponenten fehlen oder falsch konfiguriert sind, funktionieren native Anzeigen nicht richtig.
Im folgenden Code-Snippet wird ein BoxCollider zu GameObject hinzugefügt, das ein TextMesh verwendet, um das Anzeigen-Asset für den Titel einer nativen Anzeige anzuzeigen. Sobald die BoxCollider an die GameObject angehängt ist, wird sie automatisch skaliert, um den Text der TextMesh-Komponente aufzunehmen.
// 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 registrieren, das zum Anzeigen des Assets verwendet werden soll. Dieser Vorgang zum Abrufen des Anzeigen-Assets und zum Registrieren bei der Klasse für native Anzeigen sollte für jedes der Assets wiederholt werden, die in der App angezeigt 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;
}