Skip to content
This repository has been archived by the owner on Apr 5, 2024. It is now read-only.

ネイティブ広告V2

funakoshi-dev edited this page May 23, 2023 · 5 revisions

事前準備

まだ広告枠作成、SDKダウンロードを行っていない場合、下記リンク先を参照してください。

SDKの組み込み

プロジェクトにUnityパッケージをインポートしていない場合は、下記手順でインポートを行ってください。


ネイティブ広告の表示

v2.1.0 のUnityプラグインより、ネイティブ広告の各フィールドをアプリ側から取得できるようになりました。
これにより、uGUI以外のオブジェクトにもネイティブ広告を表示させることが可能となります。

※ネイティブ広告はこちらのガイドラインに沿って表示させてください。

実装手順

  1. NativeAdClientFactoryNewClientメソッドでINativeAdClientのインスタンスを取得します(NewClientメソッドはUnityのメインスレッドから呼び出してください
  2. INativeAdClientLoadNativeAdメソッドで広告のロードを行います。コールバックで受け取ったINativeAdインスタンスからネイティブ広告の各フィールドを取得し、任意のオブジェクトを使って表示させます
  3. INativeAdActivateメソッドでインプレッションの計測および広告クリック処理の登録を行います
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);
            }
        });
    }
}

INativeAdClientのIFについて

以下のIFをアプリ側から利用できます。

public void LoadNativeAd (System.Action<INativeAd, int, string> callback)

ネイティブ広告のロードを行います。
ロード失敗時はコールバックの第二引数にエラーコード、第三引数にエラーメッセージが渡されます。

public void EnableAutoReload (double interval, System.Action<INativeAd, int, string> callback)

指定した間隔(ミリ秒)で広告の自動リロードを行います。
リロード間隔は30秒以上としてください。
コールバックの内容はLoadNativeAdと同様です。

public void DisableAutoReload ()

広告の自動リロードを停止します。

バックグラウンドへの移行と復帰で自動リロードを再開or停止するコードサンプル
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.
    }
}

INativeAdのIFについて

以下のIFをアプリ側から利用できます。

public string ShortText { get; }

広告見出しを取得します。

public string LongText { get; }

広告文を取得します。

public string PromotionUrl { get; }

表示プロモーションURLを取得します。

public string PromotionName { get; }

表示プロモーション名を取得します。

public string ActionButtonText { get; }

アクションボタンを取得します(e.g.インストール)。

public string AdImageUrl { get; }

広告画像のURLを取得します。
アプリ側で画像のダウンロードを行いたい場合などにお使いいただけます。
広告画像のない広告タイプの場合は空文字が返ります。

public string LogoImageUrl { get; }

ロゴ画像のURLを取得します。
アプリ側で画像のダウンロードを行いたい場合などにお使いいただけます。
ロゴ画像のない広告タイプの場合は空文字が返ります。

public string GetAdvertisingExplicitlyText (AdvertisingExplicitly advertisingExplicitly)

広告明示のテキストを取得します。 引数の詳細はこちらをご参照ください。

public System.Collections.IEnumerator LoadAdImage(System.Action<UnityEngine.Texture2D> callback)

広告画像のTexture2Dを取得します。
広告画像のない広告タイプの場合はnullが返ります。

public System.Collections.IEnumerator LoadLogoImage(System.Action<UnityEngine.Texture2D> callback)

ロゴ画像のTexture2Dを取得します。
ロゴ画像のない広告タイプの場合はnullが返ります。

public void Activate (UnityEngine.GameObject adGameObject, UnityEngine.GameObject prGameObject)

広告のインプレッション計測およびクリック処理の登録を行います。
第一引数のGameObjectが広告クリックおよびインプレッション計測対象のGameObjectとなります。
第二引数のGameObjectには広告明示を表示しているGameObjectを指定し、クリック時にオプトアウトページに遷移できるようにします。
なお、uGUI以外のGameObjectを指定する場合は、それぞれのGameObjectColliderがアタッチされている必要があります。

public void Into (NendUnityPlugin.AD.Native.NendAdNativeView adView)

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);
    }
});

public event System.EventHandler AdClicked

広告クリック時に呼び出されるイベントを登録します。

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.");
        };
    }
});
Clone this wiki locally