Loslegen

In diesem Leitfaden erfahren Sie, wie Sie mit dem Add-on native Anzeigen 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 sich auch dem Design der App an, in der sie erscheinen. Mit dem nativen Anzeigenformat von Ad Manager können Publisher Anzeigen rendern, die nahtlos in den Inhalt ein. Mit dieser Technologie lassen sich stark benutzerdefinierte Renderings, die den nativen Code in Unity-Apps optimal nutzen.

Native Anzeigen werden mit denselben GameObjects-Typen ausgeliefert, die Sie bereits verwenden und können so formatiert werden, dass sie dem Design die User Experience, in der sie leben. Wenn eine native Anzeige geladen wird, erhält Ihre App ein natives Objekt mit den zugehörigen Assets. Diese werden nicht vom SDK, sondern von der Unity-App angezeigt.

Vorbereitung

  • Google Mobile Ads Unity-Plug-in Version 7.0.0 oder höher
  • Arbeiten Sie den Startleitfaden durch.
  • Herunterladen und installieren Sie das Add-on für native Anzeigen.

Native Anzeigenformate laden

Native Anzeigen werden über die Klasse AdLoader geladen, die eine eigene AdLoader.Builder, um sie bei der Erstellung anzupassen. Das ForNativeAd() konfiguriert das AdLoader für die Verarbeitung nativer Anzeigen.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

Für AdLoader-Anzeigenereignisse 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. Es ist erforderlich, dass für dieses Ereignis für den Zugriff auf die geladene Anzeige.

OnAdFailedToLoad

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

Anzeige laden

Wenn Sie eine AdLoader erstellt haben, rufen Sie die LoadAd()-Methode auf, um eine Anzeige anzufordern:

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

Anzeigenanfrage zusammenstellen

Das folgende Code-Snippet 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

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 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, abgerufen werden soll NativeAdEventArgs wie gezeigt:

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

Nachdem die Anzeigen geladen wurden, können Sie wie unten gezeigt auf ihre Assets zugreifen. Grafisch Assets werden als Texture2D-Objekte zurückgegeben, Text-Assets als string-Objekte.

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. Beachten Sie außerdem, dass die folgenden Assets sind nicht immer vorhanden und sollten vor der angezeigt:

  • 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 Hintergrundfarben und Bilder angemessen.

GameObjects für Anzeigen-Asset 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. Für einen List<GameObject> gibt die Methode ein int gibt die Anzahl der erfolgreich registrierten GameObject an.

Wenn die Registrierung eines Anzeigen-Assets fehlschlägt, wird die zugehörige native Anzeige nicht erkannt.

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 die Größe und Form des GameObject repräsentiert. Wenn Bei GameObject Objekten, die für Anzeigen-Assets registriert sind, fehlen Collider-Komponenten oder falsch konfiguriert ist, funktionieren native Anzeigen nicht richtig.

Im folgenden Code-Snippet wird ein BoxCollider zu GameObject hinzugefügt, das einen TextMesh, um das Anzeigentitel-Asset einer nativen Anzeige einzublenden. Sobald die BoxCollider ist an GameObject angehängt und wird automatisch auf den Text der Komponente TextMesh ein.

// 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. Dieser Prozess das Abrufen des Anzeigen-Assets und das Registrieren mit der Klasse für native Anzeigen erfolgen sollte. für jedes der in der App angezeigten Assets wiederholt 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;
}