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

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

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

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

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

設定によっては 1 つの広告ユニットで複数のクリエイティブ テンプレートを配信することも可能なため、表示候補の複数のカスタム ネイティブ広告フォーマットに Adloader を用意するために、forCustomTemplateAd() を異なるテンプレート ID で複数回呼び出せます。以下のコード スニペットは、複数のカスタム ネイティブ広告フォーマットのテンプレートに対して AdLoader を用意する方法を示しています。

void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/21775744923/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 に報告する必要があります。

インプレッションを記録する

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

customNativeTemplateAd.RecordImpression();

クリックを報告する

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

customNativeTemplateAd.PerformClick("MainImage");

カスタム テンプレート広告でクリックの発生が報告されると、SDK から次の 2 つのレスポンスがこの順番で発生する可能性があります。

  1. その広告のディープリンク URL に対応するコンテンツ リゾルバを特定し、対応可能な最初のリゾルバを開始する。
  2. ブラウザを開き、広告の従来のリンク先 URL に移動する。

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

カスタム ネイティブ広告フォーマットのクリック アクションに対し、ディープリンクやウェブブラウザをユーザーに表示する代わりに、別の処理を行うように決めることもできます。それには、AdLoader.Builder.forCustomTemplateAd() メソッドでオプションの Action<CustomNativeTemplateAd, string> を指定します。カスタム クリック アクションを設定することで、上述の SDK のクリック動作をオーバーライドすることになります。次の例は、カスタム クリック アクションを使って任意のアセットのクリックを記録しています。

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