Mit Ihrem Feedback können Sie die Google Mobile Ads SDK-Roadmap mitgestalten. Nehmen Sie an der jährlichen Umfrage zum Google Mobile Ads SDK für 2023 teil, die bis zum 5. Mai 2023 endet.

Jetzt starten

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

In diesem Leitfaden erfahren Sie, wie Sie das AdMob-Add-on für native Anzeigen verwenden können, um native AdMob-Anzeigen in einer Unity-App zu implementieren, und erhalten nützliche Tipps dazu.

Form und Funktion von nativen Anzeigen entsprechen dem Kontext, in den sie eingebettet sind. Sie sind außerdem optisch an das Design der jeweiligen App angepasst. Mit dem nativen AdMob-Anzeigenformat können Publisher Anzeigen rendern, die sich optimal in den übrigen Content einfügen. Sie können diese Technologie nutzen, um stark benutzerdefinierte Renderings zu implementieren, die den nativen Code in Unity-Apps in vollem Umfang nutzen.

Native Anzeigen werden mit denselben GameObjects-Typen ausgeliefert, mit denen Sie bereits Ihre Apps erstellen, und können so formatiert werden, dass sie mit dem visuellen Design der jeweiligen Umgebung übereinstimmen. Wenn eine native Anzeige geladen wird, empfängt Ihre App ein natives Objekt, das seine Assets enthält, und die Unity-App (nicht das SDK) zeigt diese an.

Voraussetzungen

Native Anzeigenformate laden

Native Anzeigen werden über die Klasse AdLoader geladen, die eine eigene Klasse AdLoader.Builder hat, um sie beim Erstellen 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

Fügen Sie der Klasse AdLoader Bevollmächtigte für die unten aufgeführten Ereignisse hinzu, um benachrichtigt zu werden, wenn eine native Anzeige entweder erfolgreich geladen wird oder nicht geladen werden kann.

OnNativeAdLoaded

Wird aufgerufen, wenn eine native Anzeige geladen wurde. Für den Zugriff auf die geladene Anzeige ist ein Bevollmächtigter erforderlich.

OnAdFailedToLoad

Wird aufgerufen, wenn eine native Anzeige nicht geladen wird

Anzeige laden

Nachdem Sie ein AdLoader-Objekt erstellt haben, rufen Sie seine LoadAd()-Methode auf, um eine Anzeige anzufordern:

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

Anzeigenanfrage zusammenführen

Das Code-Snippet unten zeigt, wie ein AdLoader-Element erstellt wird, das so konfiguriert ist, dass native Anzeigen angefordert, Bevollmächtigte für erfolgreiche und fehlgeschlagene Ladevorgänge festgelegt und eine Anzeigenanfrage gesendet wird.

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 OnAdFailedToLoad-Ereignis ist vom Typ EventHandle<AdFailedToLoadEventArgs>. Unten sehen Sie, wie Sie den Grund für das Fehlschlagen des Ladens dieses Ereignisses erkennen.

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

Beim Laden einer nativen Anzeige wird das Anzeigenereignis für das entsprechende Anzeigenformat aufgerufen. Die App ist dann für die Auslieferung der Anzeige verantwortlich, muss dies aber nicht sofort tun.

Anzeigenlast verarbeiten

Das OnNativeAdLoaded-Ereignis ist vom Typ EventHandler<NativeAdEventArgs>. Die Anzeige, die in einem NativeAd-Objekt gekapselt ist, kann 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 sind, können Sie wie unten dargestellt 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;
}

Anzeigen-Assets sollten nur im Hauptthread aufgerufen werden, beispielsweise über die Methode Update() eines Unity-Skripts. Die folgenden Assets sind aber nicht immer vorhanden und sollten überprüft werden, bevor sie angezeigt werden:

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

Datenschutzinfo-Asset

Das Datenschutzinfo-Asset muss als Teil der nativen Anzeige eingeblendet werden. Außerdem ist es wichtig, dass das Datenschutzinfo-Asset leicht zu sehen ist. Wählen Sie daher entsprechende Hintergrundfarben und -bilder aus.

GameObjects für Anzeigen-Asset registrieren

Sie müssen die GameObject registrieren, damit das Anzeigen-Asset in der Unity-App angezeigt wird. Wenn die Registrierung erfolgreich ist, gibt die Methode, die zum Registrieren von GameObject verwendet wird, eine bool zurück. Bei List<GameObject> gibt die Methode eine int zurück, die die erfolgreich registrierte GameObject-Anzahl 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 wird, muss eine konvexe Collider-Komponente haben, die für die Größe und die Form von GameObject repräsentativ ist. Wenn in GameObject-Objekten, die für Anzeigen-Assets registriert sind, Collider-Komponenten fehlen oder sie falsch konfiguriert sind, funktionieren native Anzeigen nicht richtig.

Im Code-Snippet unten wird ein BoxCollider zu GameObject hinzugefügt, das ein TextMesh verwendet, um das Anzeigentitel-Anzeigen-Asset einer nativen Anzeige darzustellen. Sobald BoxCollider an GameObject angehängt ist, wird es automatisch skaliert, um den Text der TextMesh-Komponente 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 aufrufen, indem Sie die Textur eines Quad-Elements festlegen und das GameObject-Objekt für die Darstellung des Assets registrieren. Dieser Vorgang, bei dem das Anzeigen-Asset abgerufen und in der nativen Anzeigenklasse registriert wird, muss für jedes Asset in der App 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;
}