このガイドでは、ネイティブ広告アドオンを使って Unity アプリで AdMob ネイティブ広告を実装する方法と、その際の重要な留意事項を解説します。
ネイティブ広告は、広告が掲載される場所のユーザー エクスペリエンスに、形式と機能の両面でマッチするフォーマットです。使用するアプリのビジュアル デザインともマッチしている。 AdMob のネイティブ広告フォーマットでは、パブリッシャー様はシームレスな広告を配信できます 説明します。このテクノロジーを使用すると、高度にカスタマイズされたレンダリングを実装できます。 Unity アプリのネイティブ コードを最大限に活用できます。
ネイティブ広告は、お客様が使用しているものと同じタイプのGameObjects
を使用して表示されます
アプリのビジュアル デザインに合わせてフォーマットできます。
ユーザーエクスペリエンスを損ねますネイティブ広告の読み込み時には、アプリが広告のアセットを含むネイティブ広告オブジェクトを受け取り、SDK ではなく Unity アプリ側で広告表示の処理が行われます。
前提条件
ネイティブ広告フォーマットを読み込む
ネイティブ広告は、独自の AdLoader
クラスを介して読み込まれます。
AdLoader.Builder
クラスを使用して、作成時にカスタマイズすることもできます。AdLoader を ForNativeAd()
メソッドで設定することにより、ネイティブ広告を扱う仕組みです。
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
AdLoader 広告イベントに登録する
ネイティブ広告の読み込み成否通知を受け取るには、下記のイベントの AdLoader
クラスにデリゲートを追加します。
OnNativeAdLoaded
ネイティブ コンテンツ広告が正常に読み込まれたときに呼び出されます。ファイアウォール ルールを 読み込まれた広告にアクセスするための、このイベントのデリゲート。
OnAdFailedToLoad
ネイティブ広告の読み込みに失敗したときに呼び出されます。
広告を読み込む
AdLoader
の作成が完了したら、その LoadAd()
メソッドを呼び出して、
広告をリクエストします。
adLoader.LoadAd(new AdRequest.Builder().Build());
広告リクエストを 1 つにまとめる
以下のコード スニペットは、AdLoader
をビルドする方法を示しています。
ネイティブ広告をリクエストするように設定します。成功した広告と失敗した広告の代理人を設定します
広告がリクエストされます
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
失敗した広告の読み込みを処理する
OnAdFailedToLoad
イベントのタイプは EventHandle<AdFailedToLoadEventArgs>
です。
このイベントから広告の読み込みが失敗した理由を解析する方法は以下のとおりです。
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
ネイティブ広告を表示する
ネイティブ広告が読み込まれると、対応する広告フォーマットの広告イベントが呼び出されます。広告を表示するのはアプリの役割ですが、表示されるのはアプリではありません。 すぐに行う必要があります。
広告読み込みを処理する
OnNativeAdLoaded
は、EventHandler<NativeAdEventArgs>
タイプのイベントです。次に示すように、広告は NativeAd
オブジェクトにカプセル化され、NativeAdEventArgs
から取得できます。
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
ネイティブ広告アセットを取得する
広告が読み込まれると、以下のようにアセットにアクセスできるようになります。グラフィカル
アセットは Texture2D
オブジェクトとして返され、テキスト アセットは
string
オブジェクト。
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
広告アセットには、たとえば Unity スクリプトの Update()
メソッドなど、メインスレッドでのみアクセスします。また、以下のアセットは
常に存在するとは限らないため、検出する前に確認する必要がある
表示:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
AdChoices アセット
AdChoices 広告アセットはネイティブ広告の一部として表示することが必須。 また、AdChoices 広告アセットは見やすいことも重要です。 適切な背景色と画像を使用します。
広告アセットの GameObjects を登録する
Unity アプリに表示する広告アセットの GameObject
を登録する必要があります。登録が成功すると、GameObject
の登録に使用したメソッドが bool
を返します。List<GameObject>
の場合、メソッドは
int
は、正常に登録された GameObject
の数を示します。
広告アセットの登録に失敗した場合、 対応するネイティブ広告は認識されません
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
広告アセットに登録される GameObject
には、GameObject
のサイズと形状を表すコンベックス型コライダー コンポーネントが必要です。条件
広告アセットに登録されている GameObject
個のオブジェクトに Collider
個のコンポーネントがありません
正しく設定されていない場合、ネイティブ広告は正しく動作しません。
以下のコード スニペットでは、BoxCollider
が GameObject
に追加されています。
TextMesh
: ネイティブ広告の広告見出しアセットを表示します。完了後
BoxCollider
は GameObject
に接続されており、自動スケーリングされます。
TextMesh
コンポーネントのテキストに対応します。
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
デモ
以下のコードは、問題なく読み込まれたネイティブ広告のアイコン アセットを取得し、Quad
のテクスチャを設定してアイコン広告アセットを表示し、アセットの表示に使用する GameObject
を登録する方法を示しています。広告アセットを取得してネイティブ広告クラスに登録するこのプロセスは、アプリが表示するアセットごとに繰り返す必要があります。
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}