Einstieg

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

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