Jetzt starten

In diesem Leitfaden erfahren Sie, wie Sie das Add-on für native Anzeigen verwenden, um native AdMob-Anzeigen zu implementieren. Anzeigen in einer Unity-App sowie einige wichtige Punkte, die Sie dabei berücksichtigen sollten.

Form und Funktion von nativen Anzeigen entsprechen dem Kontext, in dem sie ausgeliefert werden. wo sie platziert werden. Sie passen auch zum visuellen Design der App, in der sie enthalten sind. Mit nativen AdMob-Anzeigen können Publisher Anzeigen nahtlos rendern, mit Inhalten. Mit dieser Technologie können Sie stark angepasste Renderings implementieren. die den nativen Code in Unity-Apps optimal nutzen.

Native Anzeigen werden unter Verwendung der gleichen GameObjects 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 mit den zugehörigen Assets. Diese werden dann nicht vom SDK, sondern von der Unity-App angezeigt.

Vorbereitung

Native Anzeigenformate laden

Native Anzeigen werden über die Klasse AdLoader geladen, die eine eigene AdLoader.Builder, 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-Werbeereignisse registrieren

Um benachrichtigt zu werden, wenn eine native Anzeige erfolgreich oder nicht geladen werden kann, fügen Sie delegierte Delegierte für die unten aufgeführten Ereignisse an die Klasse AdLoader.

OnNativeAdLoaded

Wird aufgerufen, wenn eine native Anzeige erfolgreich geladen wurde. Für dieses Ereignis ist ein delegierter Code erforderlich, um auf die geladene Anzeige zuzugreifen.

OnAdFailedToLoad

Wird aufgerufen, wenn beim Laden einer nativen Anzeige ein Fehler auftritt.

Anzeige laden

Wenn Sie einen AdLoader erstellt haben, rufen Sie seine LoadAd()-Methode auf, Anzeige anfordern:

adLoader.LoadAd(new AdRequest.Builder().Build());

Anzeigenanfrage zusammenstellen

Das Code-Snippet unten zeigt, wie ein AdLoader erstellt wird, das die zum Anfordern nativer Anzeigen konfiguriert sind, und legt Bevollmächtigte für erfolgreiche und fehlgeschlagene Anzeigen fest. lädt und stellt eine Anzeigenanfrage.

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 verarbeiten

Das OnAdFailedToLoad-Ereignis hat den Typ EventHandle<AdFailedToLoadEventArgs>. Unten wird gezeigt, wie der Grund für ein fehlgeschlagenes Anzeigenladen aus diesem Ereignis ermittelt 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 ausliefern

Wenn eine native Anzeige geladen wird, wird das Anzeigenereignis für das entsprechende Anzeigenformat aufgerufen. Ihre App ist dann für die Schaltung der Anzeige verantwortlich, obwohl sie unbedingt sofort tun müssen.

Anzahl der Anzeigen verwalten

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, können Sie wie unten gezeigt auf ihre Assets zugreifen. Grafik-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;
}

Der Zugriff auf Anzeigen-Assets sollte nur über den Hauptthread erfolgen, z. B. über die Update()-Methode eines Unity-Scripts. Die folgenden Assets sind nicht immer vorhanden und sollten vor der Anzeige geprüft werden:

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

Datenschutzinfo-Asset

Das Datenschutzinfo-Asset muss als Teil der nativen Anzeige präsentiert werden. Außerdem muss das AdChoices-Anzeigen-Asset gut zu erkennen sein. Wählen Sie daher entsprechende Hintergrundfarben und ‑bilder aus.

GameObjects für Anzeigen-Assets registrieren

Sie müssen die GameObject registrieren, damit das Anzeigen-Asset in Ihrem Unity App. Wenn die Registrierung erfolgreich ist, wird die zur Registrierung GameObject gibt bool zurück. Bei einer List<GameObject> gibt die Methode eine int zurück, die 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 ist, muss einen konvexen Collider haben Komponente, die für die Größe und Form von GameObject repräsentativ ist. Wenn 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 GameObject ein BoxCollider hinzugefügt, das ein TextMesh verwendet, um das Anzeigen-Asset für den Anzeigentitel 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 das Symbol-Asset eines erfolgreich abgerufen wird. native Anzeige geladen wurde, können Sie das Symbol-Anzeigen-Asset darstellen, indem Sie die Textur eines Quad festlegen, und registrieren Sie die GameObject, die zum Anzeigen des Assets verwendet werden soll. Das Abrufen des Anzeigen-Assets und die Registrierung bei der nativen Anzeigenklasse sollte für jedes Asset wiederholt werden, das in der App angezeigt wird.

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;
}