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 に報告する必要があります。
インプレッションを記録する
カスタム ネイティブ広告フォーマットのインプレッションを記録するには、対応する CustomNativeTemplateAd
で RecordImpression()
メソッドを呼び出します。
customNativeTemplateAd.RecordImpression();
クリックを報告する
アセットでクリックが発生したことを SDK に報告するには、対応する CustomNativeTemplateAd
で PerformClick()
メソッドを呼び出し、クリックされたアセットの名前を渡します。たとえば、カスタム ネイティブ広告フォーマットに「MainImag」というアセットが存在し、そのアセットに対応するテクスチャでのクリックを報告する場合、コードは次のようになります。
customNativeTemplateAd.PerformClick("MainImage");
カスタム テンプレート広告でクリックの発生が報告されると、SDK から次の 2 つのレスポンスがこの順番で発生する可能性があります。
- その広告のディープリンク URL に対応するコンテンツ リゾルバを特定し、対応可能な最初のリゾルバを開始する。
- ブラウザを開き、広告の従来のリンク先 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.");
}