Ad Manager-Publisher haben die Möglichkeit, eigene native Anzeigenformate zu erstellen, indem sie benutzerdefinierte Listen von 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 AdLoader
für die Verarbeitung benutzerdefinierter nativer Anzeigen konfiguriert. Diese Methode hat zwei Parameter:
- Die
formatId
der benutzerdefinierten Anzeige, die vonAdLoader
angefordert werden soll. Jedem benutzerdefinierten nativen Anzeigenformat ist ein Format-ID-Wert zugeordnet. Dieser Parameter gibt an, in welchem Format Ihre App dieAdLoader
anfordern möchte. - Ein optionales
Action<CustomNativeAd, string>
, das aufgerufen werden soll, wenn der Nutzer auf die Anzeige klickt.
Benutzerdefinierte native Anzeigen werden über die Klasse AdLoader
geladen. Diese Klasse hat eine eigene Klasse AdLoader.Builder
, mit der sie bei der Erstellung angepasst werden kann. Mit der Methode
ForCustomNativeAd()
wird 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 für einen einzelnen Anzeigenblock mehr als ein benutzerdefiniertes natives Anzeigenformat eingerichtet werden kann, kann ForCustomNativeAd()
mit verschiedenen Format-IDs mehrmals aufgerufen werden, um den Anzeigen-Loader für mehr als ein mögliches benutzerdefiniertes natives Anzeigenformat vorzubereiten.
Benutzerdefinierte native Anzeigenereignisse
Die Klasse AdLoader
stellt Anzeigenereignisse vom Typ EventHandler
bereit, um Sie über den Lebenszyklus einer benutzerdefinierten nativen Anzeige zu informieren. Im folgenden Beispiel sehen Sie, wie Sie benutzerdefinierte Ereignisse für native Anzeigen in einem Anzeigen-Loader registrieren:
private AdLoader adLoader;
adLoader.OnCustomNativeAdLoaded += HandleCustomNativeAdLoaded;
adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;
Die Methode HandleCustomNativeAdLoaded()
enthält einen CustomNativeAdEventArgs
-Parameter. Über diesen Ereignisparameter kann auf die geladene benutzerdefinierte native Anzeige zugegriffen werden, wie unten gezeigt:
void HandleCustomNativeAdLoaded(object sender, CustomNativeAdEventArgs args)
{
this.customNativeAd = args.nativeAd;
}
Die Methode HandleCustomNativeAdFailedToLoad()
enthält einen AdFailedToLoadEventArgs
-Parameter. Die Fehlermeldung kann durch Aufrufen der Methode GetMessage
für das Feld LoadAdError
abgerufen werden, 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 präsentieren
Benutzerdefinierte native Anzeigen unterstützen eine beliebige Anzahl von benutzerdefinierten Bild- und Text-Assets. Auf diese Assets wird über die Klasse CustomNativeAd
zugegriffen, die die Methoden GetTexture2D()
und GetText()
bereitstellt, die die Variablen-ID eines Formatfelds als Parameter verwenden.
Hier ist ein Beispiel für eine Implementierung, mit 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 für benutzerdefinierte native Anzeigen verarbeiten
Bei benutzerdefinierten nativen Anzeigen ist Ihre App für das Erfassen von Impressionen und das Melden von 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 das entsprechende CustomNativeAd
auf:
customNativeAd.RecordImpression();
Klicks melden
Wenn Sie dem SDK melden möchten, dass auf ein Asset geklickt wurde, rufen Sie die Methode PerformClick()
für das entsprechende CustomNativeAd
auf und übergeben Sie den Namen des Assets, auf das geklickt wurde. Wenn Sie beispielsweise ein Asset in Ihrem benutzerdefinierten Format mit dem Namen „MainImage“ haben und einen Klick auf die Textur melden möchten, die diesem Asset entspricht, sieht Ihr Code so aus:
customNativeAd.PerformClick("MainImage");
Auf benutzerdefinierte Klickaktionen reagieren
Wenn ein Klick auf eine benutzerdefinierte Anzeige gemeldet wird, werden die möglichen Antworten des SDK in dieser Reihenfolge versucht:
Suchen Sie einen Content-Resolver für die Deeplink-URL der Anzeige und starten Sie den ersten, der aufgelöst wird.
Ö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 verarbeiten möchten, anstatt den Nutzer zu einem Deeplink oder Webbrowser weiterzuleiten, geben Sie in der Methode AdLoader.Builder.ForCustomNativeAd()
ein optionales Action<CustomNativeAd, string>
an. Wenn Sie diese benutzerdefinierte Klickaktion festlegen, überschreiben Sie das Klickverhalten des SDK. Hier ist ein Beispiel, in dem eine benutzerdefinierte Klickaktion verwendet wird, um einen Klick für ein bestimmtes Asset zu erfassen:
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.");
}