Benutzerdefinierte native Anzeigenformate

Ad Manager-Publisher haben die Möglichkeit, eigene native Anzeigenformate zu erstellen, indem sie benutzerdefinierte Listen mit Assets definieren. Diese werden als benutzerdefinierte native Anzeigenformate bezeichnet und können mit reservierten Anzeigen verwendet werden. Mit benutzerdefinierten nativen Anzeigen können Publisher beliebige Bild- und Stringdaten an ihre Apps übergeben. Diese Daten werden durch ein CustomNativeAd-Objekt dargestellt.

Benutzerdefinierte native Anzeige laden

Benutzerdefinierte native Anzeigen werden mit AdLoader-Objekten geladen. Mit der Methode ForCustomNativeAd() wird die AdLoader für die Verarbeitung benutzerdefinierter nativer Anzeigen konfiguriert. Für diese Methode gibt es zwei Parameter:

  • Die formatId der benutzerdefinierten Anzeige, die die AdLoader anfordern soll. Jedem benutzerdefinierten nativen Anzeigenformat ist eine Format-ID zugeordnet. Dieser Parameter gibt an, in welchem Format die AdLoader von Ihrer App angefordert werden soll.
  • Optionale Action<CustomNativeAd, string>, die aufgerufen wird, wenn der Nutzer auf die Anzeige klickt.

Benutzerdefinierte native Anzeigen werden über die AdLoader-Klasse geladen, die eine eigene AdLoader.Builder-Klasse hat, um sie beim Erstellen anzupassen. Mit der Methode ForCustomNativeAd() wird die AdLoader für die Verarbeitung nativer Anzeigen konfiguriert.

void LoadCustomNativeAd()
{
    AdLoader adLoader = new AdLoader.Builder("/21775744923/example/native")
            .ForCustomNativeAd("10063170")
            .Build();
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

Da ein einzelner Anzeigenblock so eingerichtet werden kann, dass mehrere benutzerdefinierte native Anzeigenformate ausgeliefert werden, kann ForCustomNativeAd() mehrmals mit verschiedenen Format-IDs aufgerufen werden, um den Anzeigen-Lademechanismus auf mehrere mögliche benutzerdefinierte native Anzeigenformate vorzubereiten.

Ereignisse für benutzerdefinierte native Anzeigen

Die AdLoader-Klasse bietet Anzeigenereignisse vom Typ EventHandler, mit denen Sie über den Lebenszyklus einer benutzerdefinierten nativen Anzeige informiert werden. Im folgenden Beispiel wird gezeigt, wie Sie sich für benutzerdefinierte Ereignisse für native Anzeigen in einem Anzeigen-Ladeprogramm registrieren:

private AdLoader adLoader;
adLoader.OnCustomNativeAdLoaded += HandleCustomNativeAdLoaded;
adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;

Die Methode HandleCustomNativeAdLoaded() enthält einen Parameter CustomNativeAdEventArgs. Über diesen Ereignisparameter kann auf die geladene benutzerdefinierte native Anzeige zugegriffen werden, wie unten dargestellt:

void HandleCustomNativeAdLoaded(object sender, CustomNativeAdEventArgs args)
{
    this.customNativeAd = args.nativeAd;
}

Die Methode HandleCustomNativeAdFailedToLoad() enthält einen Parameter AdFailedToLoadEventArgs. Sie können auf die Fehlermeldung zugreifen, indem Sie die Methode GetMessage für das Feld LoadAdError aufrufen, wie unten gezeigt:

void HandleCustomNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    string message = args.LoadAdError.GetMessage();
    Debug.Log("Ad Loader fail event received with message: " + message);
}

Benutzerdefinierte native Anzeigenformate ausliefern

Bei benutzerdefinierten nativen Anzeigen können beliebig viele benutzerdefinierte Bild- und Text-Assets verwendet werden. Der Zugriff auf diese Assets erfolgt über die Klasse CustomNativeAd, die die Methoden GetTexture2D() und GetText() bereitstellt, die die Variablen-ID eines Formatfelds als Parameter annehmen.

Hier ein Beispiel für eine Implementierung, bei der auf Assets aus einer benutzerdefinierten nativen Anzeige zugegriffen wird:

private bool adLoaded;
private Texture2D mainImageTexture;
private string headline;
private CustomNativeAd customNativeAd;
...

void Update()
{
    if(adLoaded)
    {
        mainImageTexture = customNativeAd.GetTexture2D("MainImage");
        headline = customNativeAd.GetText("Headline");
        adLoaded = false;
    }
}
...
void HandleCustomNativeAdLoaded(object sender, CustomNativeAdEventArgs args)
{
    customNativeAd = args.nativeAd;
    adLoaded = true;
    ...
}

Impressionen und Klicks von benutzerdefinierten nativen Anzeigen verarbeiten

Bei benutzerdefinierten nativen Anzeigen ist Ihre App für die Erfassung von Impressionen und die Berichterstellung zu Klickereignissen an das SDK verantwortlich.

Impressionen erfassen

Wenn Sie eine Impression für eine benutzerdefinierte Anzeige erfassen möchten, rufen Sie die Methode RecordImpression() für die entsprechende CustomNativeAd auf:

customNativeAd.RecordImpression();

Klicks melden

Wenn du dem SDK mitteilen möchtest, dass ein Klick auf ein Asset erfolgt ist, rufe die Methode PerformClick() für die entsprechende CustomNativeAd auf und übergebe den Namen des Assets, auf das geklickt wurde. Wenn Sie beispielsweise ein Asset in Ihrem benutzerdefinierten Format namens „MainImage“ haben und einen Klick auf die Textur erfassen möchten, die diesem Asset entspricht, würde Ihr Code so aussehen:

customNativeAd.PerformClick("MainImage");

Auf benutzerdefinierte Klickaktionen reagieren

Wenn ein Klick auf eine benutzerdefinierte Anzeige gemeldet wird, werden die möglichen Antworten des SDKs in dieser Reihenfolge versucht:

  1. Suchen Sie einen Content-Resolver für die Deeplink-URL der Anzeige und starten Sie den ersten, der eine Auflösung liefert.

  2. Öffnen Sie einen Browser und rufen Sie die traditionelle Ziel-URL der Anzeige auf.

Wenn Sie die Klickaktion für Ihre benutzerdefinierten nativen Anzeigenformate selbst verwalten möchten, anstatt den Nutzer zu einem Deeplink oder Webbrowser weiterzuleiten, geben Sie in der Methode AdLoader.Builder.ForCustomNativeAd() eine optionale Action<CustomNativeAd, string> an. Wenn Sie diese benutzerdefinierte Klickaktion festlegen, überschreiben Sie das Klickverhalten des SDKs. Im folgenden Beispiel wird mit einer benutzerdefinierten Klickaktion ein Klick für ein bestimmtes Asset protokolliert:

private void LoadCustomNativeAd()
{
    AdLoader adLoader = new AdLoader.Builder("/21775744923/example/native")
            .ForCustomNativeAd("10063170", HandleCustomNativeAdClicked)
            .Build();
    adLoader.OnCustomNativeAdLoaded += HandleCustomNativeAdLoaded;
    adLoader.LoadAd(createAdRequest());
}

private void HandleCustomNativeAdClicked(CustomNativeAd customNativeAd, string assetName)
{
    Debug.Log("Custom Native ad asset with name " + assetName + " was clicked.");
}