Jetzt starten

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

Form und Funktion von nativen Anzeigen entsprechen dem Kontext, in dem sie eingebettet sind. Sie passen auch zum visuellen Design der App, in der sie enthalten sind. Mit nativen AdMob-Anzeigen können Publisher Anzeigen rendern, die sich optimal in den Content einfügen. Mit dieser Technologie können Sie hochgradig benutzerdefinierte Renderings implementieren, die den nativen Code in Unity-Apps optimal nutzen.

Native Anzeigen werden mit denselben GameObjects-Typen ausgeliefert, mit denen Sie bereits Ihre Apps erstellen. Sie können so formatiert werden, dass sie dem visuellen Design der Nutzererfahrung entsprechen. Wenn eine native Anzeige geladen wird, erhält Ihre App ein natives Objekt, das seine Assets enthält. Diese werden dann in der Unity App (und nicht im SDK) angezeigt.

Voraussetzungen

Native Anzeigenformate laden

Native Anzeigen werden über die Klasse AdLoader geladen. Diese hat eine eigene AdLoader.Builder-Klasse, mit der sie beim Erstellen angepasst werden kann. Mit der Methode ForNativeAd() wird 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 oder nicht geladen werden kann, fügen Sie der Klasse AdLoader für die unten aufgeführten Ereignisse Bevollmächtigte hinzu.

OnNativeAdLoaded

Wird aufgerufen, wenn eine native Anzeige erfolgreich geladen wurde. Für dieses Ereignis ist ein Bevollmächtigter 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, um eine Anzeige anzufordern:

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

Anzeigenanfrage zusammenstellen

Das folgende Code-Snippet zeigt, wie Sie eine AdLoader erstellen, die für die Anforderung nativer Anzeigen konfiguriert ist, Bevollmächtigte für erfolgreiche und fehlgeschlagene Anzeigenladevorgänge 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());
}

Fehler beim Laden von Anzeigen

Das OnAdFailedToLoad-Ereignis hat den Typ EventHandle<AdFailedToLoadEventArgs>. Das Parsen des Grundes für einen Fehler beim Laden der Anzeige bei diesem Ereignis ist unten zu sehen.

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, obwohl dies nicht unbedingt sofort geschehen muss.

Anzahl der Anzeigen verwalten

Das OnNativeAdLoaded-Ereignis hat den Typ EventHandler<NativeAdEventArgs>. Die in einem NativeAd-Objekt gekapselte Anzeige kann folgendermaßen 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 die Anzeigen geladen wurden, können Sie wie unten gezeigt auf ihre Assets zugreifen. Grafische Elemente 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;
}

Anzeigen-Assets sollten nur über den Hauptthread aufgerufen werden, z. B. über die Methode Update() eines Unity-Skripts. Die folgenden Assets sind nicht immer vorhanden und sollten daher vor der Anzeige geprüft werden:

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

Datenschutzinfo-Asset

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

GameObjects für Anzeigen-Asset registrieren

Du musst GameObject registrieren, damit das Anzeigen-Asset in deiner Unity-App erscheint. Wenn die Registrierung erfolgreich ist, gibt die zum Registrieren von GameObject verwendete Methode den Fehler bool zurück. Für eine List<GameObject> gibt die Methode einen int-Wert zurück, der die erfolgreich registrierte Anzahl von 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 für ein Anzeigen-Asset registrierte GameObject muss eine konvexe Collider-Komponente haben, die für die Größe und Form von GameObject repräsentativ ist. Wenn bei GameObject-Objekten, die für Anzeigen-Assets registriert sind, Collider-Komponenten fehlen oder eine falsch konfigurierte ist, funktionieren native Anzeigen nicht richtig.

Im Code-Snippet unten wird ein BoxCollider zu GameObject hinzugefügt, das ein TextMesh verwendet, um das Anzeigentitel-Asset einer nativen Anzeige auszuliefern. Sobald BoxCollider an GameObject angehängt wurde, wird es automatisch für den Text der TextMesh-Komponente skaliert.

// 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

Im folgenden Codebeispiel wird gezeigt, wie Sie das Symbol-Asset einer erfolgreich geladenen nativen Anzeige abrufen, das Symbolanzeigen-Asset einblenden, indem Sie die Textur eines Quad festlegen, und das GameObject-Element registrieren, das zum Anzeigen des Assets verwendet werden soll. Dieser Vorgang zum Abrufen des Anzeigen-Assets und Registrieren für die native Anzeigenklasse sollte für jedes Asset wiederholt werden, das in der App zu sehen ist.

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