In diesem Leitfaden erfahren Sie, wie Sie mit dem Add-on für native Anzeigen native AdMob-Anzeigen in einer Unity-App implementieren und was Sie dabei beachten sollten.
Native Anzeigen passen sowohl in Form als auch in Funktion zur Nutzererfahrung, in der sie platziert werden. Sie passen auch zum visuellen Design der App, in der sie ausgeliefert werden. Das AdMob-Format „native Anzeigen“ 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 mit denselben Arten von GameObjects ausgeliefert, mit denen Sie bereits Ihre Apps erstellen. Sie können so formatiert werden, dass sie zum visuellen Design der Nutzererfahrung passen, in der sie ausgeliefert werden. Wenn eine native Anzeige geladen wird, erhält Ihre App ein natives Objekt, das die Assets der Anzeige enthält. Die Unity-App (nicht das SDK) zeigt die Assets an.
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 AdLoader Klasse geladen, die eine eigene
AdLoader.Builder Klasse hat, mit der sie bei der Erstellung angepasst werden kann. Mit der Methode ForNativeAd() wird der AdLoader so konfiguriert, dass er native Anzeigen verarbeitet.
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 oder nicht erfolgreich geladen wird, fügen Sie der Klasse AdLoader Delegaten für die unten aufgeführten Ereignisse hinzu.
OnNativeAdLoaded
Wird aufgerufen, wenn eine native Anzeige erfolgreich geladen wurde. Für dieses Ereignis ist ein Delegat erforderlich, um auf die geladene Anzeige zuzugreifen.
OnAdFailedToLoad
Wird aufgerufen, wenn eine native Anzeige nicht geladen werden kann.
Anzeige laden
Wenn Sie einen AdLoader erstellt haben, rufen Sie die Methode LoadAd() auf, um eine Anzeige anzufordern:
adLoader.LoadAd(new AdRequest.Builder().Build());
Anzeigenanfrage erstellen
Das folgende Code-Snippet zeigt, wie Sie einen AdLoader erstellen, der so konfiguriert ist, dass er native Anzeigen anfordert, Delegaten für erfolgreiche und fehlgeschlagene Anzeigenladevorgänge festlegt und eine Anzeigenanfrage sendet.
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());
}
Fehlgeschlagene Anzeigenladevorgänge verarbeiten
Das OnAdFailedToLoad Ereignis hat den Typ EventHandle<AdFailedToLoadEventArgs>.
Unten sehen Sie, wie Sie den Grund für einen fehlgeschlagenen Anzeigenladevorgang aus diesem Ereignis parsen.
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
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 sofort tun.
Anzeigenladevorgang verarbeiten
Das OnNativeAdLoaded Ereignis hat den Typ EventHandler<NativeAdEventArgs>. Die
Anzeige, die in einem NativeAd Objekt gekapselt ist, kann wie unten gezeigt 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 Anzeigen geladen wurden, kann auf ihre Assets wie unten gezeigt zugegriffen werden. 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;
}
Beachten Sie, dass auf Anzeigen-Assets nur im Hauptthread zugegriffen werden sollte, z. B. über die Methode Update() eines Unity-Skripts. Außerdem sind die folgenden Assets nicht immer vorhanden und sollten vor der Auslieferung geprüft werden:
GetStarRating()GetStore()GetPrice()GetAdvertiser()GetIconTexture()
Asset „Datenschutzinfo“
Das Anzeigen-Asset „Datenschutzinfo“ muss als Teil der nativen Anzeige ausgeliefert werden. Außerdem muss das Anzeigen-Asset „Datenschutzinfo“ gut sichtbar sein. Wählen Sie daher geeignete Hintergrundfarben und ‑bilder aus.
GameObjects für Anzeigen-Assets registrieren
Sie müssen das GameObject für das Anzeigen-Asset registrieren, damit es in Ihrer Unity-App ausgeliefert werden kann. Wenn die Registrierung erfolgreich ist, gibt die Methode, mit der das GameObject registriert wurde, einen bool-Wert zurück. Für eine List<GameObject> gibt die Methode einen
int Wert zurück, der die Anzahl der erfolgreich registrierten GameObjects angibt.
Wenn die Registrierung eines Anzeigen-Assets nicht erfolgreich ist, werden Impressionen und Klicks auf die entsprechende native Anzeige nicht erfasst.
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 Größe und Form des GameObjects repräsentiert. Wenn GameObject-Objekte, die für Anzeigen-Assets registriert sind, keine Collider-Komponenten haben oder falsch konfiguriert sind, funktionieren native Anzeigen nicht richtig.
Im folgenden Code-Snippet wird GameObject ein BoxCollider hinzugefügt, das ein TextMesh verwendet, um das Headline-Anzeigen-Asset einer nativen Anzeige auszuliefern. Sobald das BoxCollider an das GameObject angehängt ist, wird es automatisch so skaliert, dass es den Text der TextMesh-Komponente aufnehmen kann.
// 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 ausliefern, indem Sie die Textur eines Quad festlegen, und das GameObject registrieren, das zum Ausliefern des Assets verwendet werden soll. Dieser Vorgang zum Abrufen des Anzeigen-Assets und zum Registrieren in der Klasse für native Anzeigen sollte für jedes der Assets wiederholt werden, die in der App ausgeliefert 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;
}