Benutzerdefinierte native Anzeigenformate

Ad Manager-Publisher können eigene native Anzeigenformate 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 mithilfe von AdLoader-Objekten geladen. Mit der Methode ForCustomNativeAd() wird AdLoader so konfiguriert, dass benutzerdefinierte native Anzeigen verarbeitet werden. Für diese Methode gibt es zwei Parameter:

  • Die formatId der benutzerdefinierten Anzeige, die AdLoader anfordern soll. Jedem benutzerdefinierten nativen Anzeigenformat ist ein Format-ID-Wert zugeordnet. Dieser Parameter gibt an, welches Format von der App angefordert werden soll.
  • Ein optionales Action<CustomNativeAd, string>, das aufgerufen wird, wenn der Nutzer auf die Anzeige klickt.

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

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

Da ein einzelner Anzeigenblock so eingerichtet werden kann, dass er mehr als ein benutzerdefiniertes natives Anzeigenformat bereitstellt, kann ForCustomNativeAd() mehrmals mit unterschiedlichen Format-IDs aufgerufen werden, um den Adloader für mehr als ein benutzerdefiniertes natives Anzeigenformat vorzubereiten.

Benutzerdefinierte Ereignisse für native Anzeigen

Die Klasse AdLoader enthält Anzeigenereignisse vom Typ EventHandler, mit denen Sie über den Lebenszyklus einer benutzerdefinierten nativen Anzeige informiert werden. Im folgenden Beispiel sehen Sie, wie Sie sich in einem Adloader für benutzerdefinierte native Anzeigenereignisse registrieren:

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

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

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

Die Methode HandleCustomNativeAdFailedToLoad() enthält den Parameter AdFailedToLoadEventArgs. Die Fehlermeldung kann abgerufen werden, indem die Methode GetMessage im Feld LoadAdError aufgerufen wird:

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

Benutzerdefinierte native Anzeigenformate präsentieren

Benutzerdefinierte native Anzeigen können beliebig viele benutzerdefinierte Bild- und Text-Assets verwendet werden. Der Zugriff auf diese Assets erfolgt über die Klasse CustomNativeAd mit den Methoden GetTexture2D() und GetText(), die die Variablen-ID eines Formatfelds als Parameter verwenden.

Hier eine Beispielimplementierung, die auf Assets über eine benutzerdefinierte native Anzeige zugreift:

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 für benutzerdefinierte native Anzeigen verarbeiten

Bei benutzerdefinierten nativen Anzeigen muss Ihre App Impressionen erfassen und Klickereignisse an das SDK melden.

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

Um dem SDK zu melden, dass auf ein Asset geklickt wurde, rufen Sie die Methode PerformClick() für die entsprechende CustomNativeAd auf und übergeben Sie den Namen des Assets, auf das geklickt wurde. Wenn beispielsweise in Ihrem benutzerdefinierten Format ein Asset mit dem Namen "MainImage" vorhanden ist und Sie einen Klick auf die Textur melden möchten, der diesem Asset entspricht, würde der Code so aussehen:

customNativeAd.PerformClick("MainImage");

Auf benutzerdefinierte Klickaktionen reagieren

Wenn ein Klick auf eine benutzerdefinierte Anzeige erfasst wird, werden die möglichen SDK-Antworten in dieser Reihenfolge verwendet:

  1. Suchen Sie nach einem Content-Resolver für die Deeplink-URL der Anzeige und starten Sie den ersten, der aufgelöst wird.

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

Wenn Sie die Klickaktion für Ihre benutzerdefinierten nativen Anzeigenformate selbst ausführen möchten, anstatt den Nutzer zu einem Deeplink oder einem Webbrowser zu leiten, geben Sie in der Methode AdLoader.Builder.ForCustomNativeAd() ein optionales Action<CustomNativeAd, string> an. Wenn Sie diese benutzerdefinierte Klickaktion festlegen, wird das Klickverhalten des SDK überschrieben. Hier ist ein Beispiel, bei dem ein Klick für ein bestimmtes Asset mit einer benutzerdefinierten Klickaktion erfasst wird:

private void LoadCustomNativeAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/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.");
}