自訂原生廣告格式

Ad Manager 發布商可以透過定義自訂素材資源清單,自行建立原生廣告格式。這些稱為自訂原生廣告格式,可搭配保留廣告使用。發布商可透過自訂原生廣告,將任意圖片和字串資料傳送至應用程式。這項資料由 CustomNativeAd 物件表示。

載入自訂原生廣告

系統會使用 AdLoader 物件載入自訂原生廣告。ForCustomNativeAd() 方法會設定 AdLoader 以處理自訂原生廣告。此方法有兩個參數:

  • AdLoader 應要求的自訂廣告的 formatId。每個自訂原生廣告格式都會與格式 ID 值相關聯。這個參數會指出應用程式希望 AdLoader 要求哪種格式。
  • 使用者點選廣告時要叫用的選用 Action<CustomNativeAd, string>

自訂原生廣告會透過 AdLoader 類別載入,該類別會在建立期間使用其專屬的 AdLoader.Builder 類別進行自訂。ForCustomNativeAd() 方法會將 AdLoader 設為處理原生廣告。

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

由於單一廣告單元可設定為放送多種自訂原生廣告格式,因此可使用不同的格式 ID 多次呼叫 ForCustomNativeAd(),為多種可能的自訂原生廣告格式準備廣告載入器。

自訂原生廣告事件

AdLoader 類別會提供 EventHandler 類型的廣告事件,通知您自訂原生廣告的生命週期。以下範例說明如何在廣告載入器上註冊自訂原生廣告事件:

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

HandleCustomNativeAdLoaded() 方法包含 CustomNativeAdEventArgs 參數。您可以透過這個事件參數存取已載入的自訂原生廣告,如下所示:

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

HandleCustomNativeAdFailedToLoad() 方法包含 AdFailedToLoadEventArgs 參數。您可以呼叫 LoadAdError 欄位的 GetMessage 方法來存取錯誤訊息,如下所示:

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

顯示自訂原生廣告格式

自訂原生廣告可支援任意數量的使用者定義圖像和文字素材資源。這些資產可透過 CustomNativeAd 類別存取,該類別提供 GetTexture2D()GetText() 方法,可將格式欄位的變數 ID 做為參數。

以下是從自訂原生廣告存取素材資源的實作範例:

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;
    ...
}

處理自訂原生廣告的曝光和點擊

使用自訂原生廣告時,應用程式必須負責記錄曝光,並向 SDK 回報點擊事件。

記錄曝光

如要記錄自訂廣告的曝光次數,請在對應的 CustomNativeAd 上呼叫 RecordImpression() 方法:

customNativeAd.RecordImpression();

回報點擊

如要向 SDK 回報資產點擊事件,請在對應的 CustomNativeAd 上呼叫 PerformClick() 方法,並傳遞所點選資產的名稱。舉例來說,如果自訂格式中有名為「MainImage」的素材資源,而您想要回報對應該素材資源的紋理點擊次數,程式碼會如下所示:

customNativeAd.PerformClick("MainImage");

回應自訂點擊動作

當自訂廣告回報點擊時,SDK 會依照以下順序嘗試可能的回應:

  1. 找出廣告深層連結網址的內容解析器,並啟動第一個解析器。

  2. 開啟瀏覽器並前往廣告的傳統到達網頁網址。

如果您想自行處理自訂原生廣告格式的點擊動作,而非將使用者導向深層連結或網頁瀏覽器,請在 AdLoader.Builder.ForCustomNativeAd() 方法中提供選用的 Action<CustomNativeAd, string>。設定這個自訂點擊動作,即可覆寫 SDK 的點擊行為。以下是使用自訂點擊動作,記錄特定素材資源的點擊次數的範例:

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.");
}