自定义的原生广告格式

Google Ad Manager 发布商可以通过自行指定一系列素材资源来创建自己的原生广告格式。这些自定义的原生广告格式可以用于预定型广告。借助自定义的原生广告格式,发布商可以将任意图片和字符串数据传递到其应用。此类数据由 CustomNativeTemplateAd 对象表示。

加载自定义的原生广告格式

自定义的原生广告格式是使用 AdLoader 对象加载的。forCustomTemplateAd() 方法会将 AdLoader 配置为处理自定义的原生广告格式。每种自定义的原生广告格式都具有与其相关联的模板 ID 值。对于应用希望 AdLoader 请求的自定义原生广告格式,您必须为其指定模板 ID。在 Ad Manager 界面中搜索模板 ID,即可为您要请求的原生广告格式找到模板 ID。

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

由于单个广告单元可以设置为投放多个广告素材模板,因此可以使用不同的模板 ID 多次调用 forCustomTemplateAd(),以便为可能存在的多种自定义原生广告格式准备 Adloader。以下代码段展示了如何为多种自定义的原生广告格式模板准备 AdLoader

void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170")
        .forCustomNativeAd("10063171")
        .forCustomNativeAd("10063172")
        .Build();
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

自定义的原生广告格式的广告事件

AdLoader 类提供了类型为 EventHandler 的广告事件,以便向您发送自定义的原生广告格式的生命周期通知。以下示例展示了如何注册自定义的原生广告格式的广告事件:

adLoader.onCustomNativeTemplateAdLoaded += HandleCustomNativeAdLoaded;
adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;

HandleCustomNativeAdLoaded() 方法包含了 CustomNativeEventArgs 参数。您可以通过此事件参数访问已加载的自定义原生广告格式,如下所示:

private boolean adLoaded;
private CustomNativeTemplateAd customNativeTemplateAd;
...
void HandleCustomNativeAdLoaded(object sender, CustomNativeEventArgs args)
{
    customNativeTemplateAd = args.nativeAd;
    adLoaded = true;
}

展示自定义的原生广告格式

自定义的原生广告格式支持任意数量的用户指定的图片和文字素材资源。这些素材资源可通过 CustomNativeTemplateAd 类访问,此类提供了以模板字段的变量 ID 为参数的 GetTexture2D()GetText() 方法。

以下为从 CustomNativeTemplateAd 中提取素材资源的实现示例:

public const int NATIVE_AD_TEMPLATE_1 = 10063170;
public const int NATIVE_AD_TEMPLATE_2 = 10063171;

private boolean adLoaded;
private Texture2d mainImageTexture;
private string headline;
private CustomNativeTemplateAd customNativeTemplateAd;
...

void Update()
{
    if(adLoaded)
    {
        mainImageTexture = customNativeTemplateAd.GetTexture2D("MainImage");
        headline = customNativeTemplateAd.GetText("Headline");

        string templateId = customNativeTemplateAd.GetCustomTemplateId();
        if (templateId == NATIVE_AD_TEMPLATE_1)
        {
            ...
        }
        else if (templateId == NATIVE_AD_TEMPLATE_2)
        {
            ...
        }
        ...
        adLoaded = false;
    }
}
...

void HandleCustomNativeAdLoaded(object sender, CustomNativeEventArgs args)
{
    customNativeTemplateAd = args.nativeAd;
    adLoaded = true;
    ...
}

处理自定义的原生广告格式的点击和展示

在使用自定义的原生广告格式时,您的应用负责记录展示次数,并向 SDK 报告点击事件。

记录展示次数

要记录自定义的原生广告格式的展示,只需在相应的 CustomNativeTemplateAd 上调用 RecordImpression() 方法:

customNativeTemplateAd.RecordImpression();

报告点击

要向 SDK 报告在素材资源上发生了点击,请在相应的 CustomNativeTemplateAd 上调用 PerformClick() 方法,并传入获得点击的素材资源的名称。例如,如果您的自定义原生广告格式中有一个名为“MainImage”的素材资源,并且您希望报告与该素材资源对应的纹理上的点击,则代码大致会如下所示:

customNativeTemplateAd.PerformClick("MainImage");

当报告自定义模板广告上发生的点击时,SDK 可能会作出的响应有两种,具体尝试的响应顺序如下:

  1. 找到广告的深层链接网址的内容解析器,并启动第一个能够解析网址的内容解析器。
  2. 打开浏览器并导航到广告的传统目标网址。

自定义点击操作

有时,您可能希望自行处理自定义的原生广告格式的点击操作,而不是让用户转到深层链接或网络浏览器。为此,您可以将可选的 Action<CustomNativeTemplateAd, string> 添加到 AdLoader.Builder.forCustomTemplateAd() 方法中。通过设置此自定义点击操作,您就可以替换上述 SDK 的点击行为。以下示例展示了如何使用自定义点击操作记录给定素材资源的点击:

private void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170", HandleCustomNativeAdClicked)
        .Build();
    adLoader.onCustomNativeTemplateAdLoaded += HandleCustomNativeAdLoaded;
    adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;
    adLoader.LoadAd(createAdRequest());
}

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