-
Notifications
You must be signed in to change notification settings - Fork 5
ネイティブ広告V2
まだ広告枠作成、SDKダウンロードを行っていない場合、下記リンク先を参照してください。
プロジェクトにUnityパッケージをインポートしていない場合は、下記手順でインポートを行ってください。
v2.1.0 のUnityプラグインより、ネイティブ広告の各フィールドをアプリ側から取得できるようになりました。
これにより、uGUI以外のオブジェクトにもネイティブ広告を表示させることが可能となります。
※ネイティブ広告はこちらのガイドラインに沿って表示させてください。
-
NativeAdClientFactory
のNewClient
メソッドでINativeAdClient
のインスタンスを取得します(NewClient
メソッドはUnityのメインスレッドから呼び出してください) -
INativeAdClient
のLoadNativeAd
メソッドで広告のロードを行います。コールバックで受け取ったINativeAd
インスタンスからネイティブ広告の各フィールドを取得し、任意のオブジェクトを使って表示させます -
INativeAd
のActivate
メソッドでインプレッションの計測および広告クリック処理の登録を行います
using System;
using UnityEngine;
using NendUnityPlugin.AD.Native;
...
public class NativeAdObject : MonoBehaviour {
private INativeAdClient m_AdClient;
// ここではTextMeshとSpriteを使用しています
public TextMesh prText;
public TextMesh shortText;
public SpriteRenderer adImage;
...
void Start () {
...
#if UNITY_EDITOR
// UnityEditorの場合は、広告枠のタイプを指定しテスト用の広告を使って表示の確認が行えます。
m_AdClient = NativeAdClientFactory.NewClient (NativeAdClientFactory.NativeAdType.SmallSquare);
#elif UNITY_IOS
m_AdClient = NativeAdClientFactory.NewClient (ios_spotid, "ios_apikey");
#elif UNITY_ANDROID
m_AdClient = NativeAdClientFactory.NewClient (android_spotid, "android_apikey");
#endif
m_AdClient.LoadNativeAd ((INativeAd ad, int code, string message) => {
if (null != ad) {
// 広告明示のテキストを取得します
prText.text = ad.GetAdvertisingExplicitlyText (AdvertisingExplicitly.AD);
// 広告見出しを取得します
shortText.text = ad.ShortText;
// 広告画像のTextureをダウンロードします
StartCoroutine (ad.LoadAdImage ((Texture2D texture) => {
adImage.sprite = Sprite.Create (texture, new Rect (0, 0, texture.width, texture.height), new Vector2 (0.5f, 0.5f));
}));
// インプレッションの計測とクリック処理の登録を行います
ad.Activate (gameObject, prText.gameObject);
} else {
Debug.LogFormat ("Failed to load ad. code = {0}, message = {1}", code, message);
}
});
}
}
以下のIFをアプリ側から利用できます。
ネイティブ広告のロードを行います。
ロード失敗時はコールバックの第二引数にエラーコード、第三引数にエラーメッセージが渡されます。
指定した間隔(ミリ秒)で広告の自動リロードを行います。
リロード間隔は30秒以上としてください。
コールバックの内容はLoadNativeAd
と同様です。
広告の自動リロードを停止します。
using UnityEngine;
using NendUnityPlugin.AD.Native;
...
public class YourScene : MonoBehaviour {
private INativeAdClient m_Client = ...;
void OnApplicationPause (bool pauseStatus) {
if (pauseStatus) {
m_Client.DisableAutoReload ();
} else {
// e.g. 1分間隔でリロード
m_Client.EnableAutoReload (60000.0, ReloadCallback);
}
}
private void ReloadCallback (INativeAd ad, int code, string message) {
// do something.
}
}
以下のIFをアプリ側から利用できます。
広告見出しを取得します。
広告文を取得します。
表示プロモーションURLを取得します。
表示プロモーション名を取得します。
アクションボタンを取得します(e.g.インストール)。
広告画像のURLを取得します。
アプリ側で画像のダウンロードを行いたい場合などにお使いいただけます。
広告画像のない広告タイプの場合は空文字が返ります。
ロゴ画像のURLを取得します。
アプリ側で画像のダウンロードを行いたい場合などにお使いいただけます。
ロゴ画像のない広告タイプの場合は空文字が返ります。
広告明示のテキストを取得します。
引数の詳細はこちら
をご参照ください。
広告画像のTexture2D
を取得します。
広告画像のない広告タイプの場合はnull
が返ります。
ロゴ画像のTexture2D
を取得します。
ロゴ画像のない広告タイプの場合はnull
が返ります。
広告のインプレッション計測およびクリック処理の登録を行います。
第一引数のGameObject
が広告クリックおよびインプレッション計測対象のGameObject
となります。
第二引数のGameObject
には広告明示を表示しているGameObject
を指定し、クリック時にオプトアウトページに遷移できるようにします。
なお、uGUI以外のGameObject
を指定する場合は、それぞれのGameObject
にCollider
がアタッチされている必要があります。
NendAdNativeView
に広告情報を描画します。
using System;
using NendUnityPlugin.AD.Native;
...
INativeAdClient client = ...;
client.LoadNativeAd ((INativeAd ad, int code, string message) => {
if (null != ad) {
// ここではNendAdNativeViewをアタッチしたGameObjectからインスタンスを取得しています
var adView = gameObject.GetComponet <NendAdNativeView> ();
ad.Into (adView);
}
});
広告クリック時に呼び出されるイベントを登録します。
using System;
using NendUnityPlugin.AD.Native;
...
INativeAdClient client = ...;
client.LoadNativeAd ((INativeAd ad, int code, string message) => {
if (null != ad) {
ad.AdClicked += (sender, e) => {
UnityEngine.Debug.Log ("Ad Clicked.");
};
}
});