カスタム ネイティブ広告フォーマット

Google アド マネージャーをご利用のパブリッシャー様は、アセットのカスタムリストを定義して独自のネイティブ広告フォーマットを作成することができます。このようなカスタムのネイティブ広告フォーマットは、作成済みの広告とともに使用することができます。カスタム ネイティブ広告フォーマットを使うと、アプリに任意の画像や文字列データを渡すことができます。このデータは、CustomNativeTemplateAd オブジェクトで表されます。

カスタム ネイティブ広告フォーマットの読み込み

カスタムのネイティブ広告フォーマットは、AdLoader オブジェクトを使用して読み込みます。forCustomTemplateAd() メソッドでカスタムのネイティブ広告フォーマットを処理するように AdLoader を設定します。各カスタム ネイティブ広告フォーマットにはテンプレート ID 値が関連付けられているため、AdLoader がリクエストするカスタム ネイティブ広告フォーマットのテンプレート ID を指定しておく必要があります。テンプレート ID は、アド マネージャーの管理画面で検索できます。

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

1 つの広告ユニットを設定すれば、複数のクリエイティブ テンプレートで利用できるため、表示される可能性がある複数のカスタム ネイティブ広告フォーマットに Adloader を用意するため、異なるテンプレート ID で forCustomTemplateAd() を複数回呼び出すことができます。以下のコード スニペットは、複数のカスタム ネイティブ広告フォーマット テンプレートに対して 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 クラスを介してアクセスします。GetTexture2D() メソッドおよび GetText() メソッドが提供され、テンプレート フィールドの変数 ID をパラメータとして取得します。

次の実装サンプルでは、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 にインプレッションが記録され、クリック イベントがレポートされます。

インプレッションの記録

カスタム ネイティブ広告フォーマットのインプレッションを記録するには、対応する CustomNativeTemplateAdRecordImpression() メソッドを呼び出します。

customNativeTemplateAd.RecordImpression();

クリックの報告

アセットでクリックが発生したことを SDK にレポートするには、対応する CustomNativeTemplateAdPerformClick() メソッドを呼び出し、クリックされたアセットの名前を渡す必要があります。たとえば、「MainImag」というカスタムのネイティブ広告フォーマットにアセットが存在し、そのアセットに対応するテクスチャへのクリックをレポートする場合、コードは次のようになります。

customNativeTemplateAd.PerformClick("MainImage");

カスタム テンプレート広告へのクリックがレポートされると、SDK によって 2 つのレスポンスが(次の順番で)実行される可能性があります。

  1. 広告のディープリンクの URL でコンテンツ リゾルバの特定を試み、最初に特定したリゾルバを開始する。
  2. ブラウザを開き、広告の従来のリンク先 URL を開く。

カスタムのクリック アクション

ユーザーにディープリンクやウェブブラウザを表示する代わりに、カスタム ネイティブ広告フォーマットでクリック アクションを自身で処理するようにすることもできます。これを行うには、オプションの 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.");
}