アマゾンバナーリンク

ディスプレイ広告

スポンサーリンク

【Unity】Monetization SDK(旧UnityAds)で動画広告で収益化しよう【簡単です】

こんにちは!ジェイです。今回はUnity標準で内蔵されているUnityAdsを使って、動画広告を実装します。

Unity2020.3.4f1

記事内広告

内臓のAdsがOFFであることを確認する

最初から入っているAdsをOFFにして起きます。メニュー>window>General>Servisを選択します。

次にAdsのOFFであることを確認します。

Monetization SDKのインポート

Unity2020.3.4f1ではデフォルトではインポートされているので必要ありせんが、もし入っていないバージョンを使っている場合パッケージマネージャー(windowからインポートする必要があります。

次にOrganizationsでproject IDを選択肢して、Create projectIDをクリックします。

このアプリは13歳未満をターゲットにしたアプリですか?と聞かれるので答えてSaveします。

次にAdsのOFFをクリックしONの状態にします。

AdsとAnalyticsがONになっていることを確認して、Dashboardをクリックします。

OperateにあるProject SettingsのGame IDsで確認できます。ちなみにゲームIDとはゲームやプラットフォームごとに違うAdsのIDの事で、ServicesのウィンドウでAdsを有効にするだけで生成されます。

実際のコードは以下のような感じで、ゲームIDを渡してAdvertisement.Initializeを実行するだけです。

using UnityEngine;
using UnityEngine.Advertisements;//Advertisementクラスを使うのに必要

public class NewBehaviourScript : MonoBehaviour
{    
    private void Start()
    {
        //ゲームIDをAndroidとそれ以外(iOS)で分ける
        #if UNITY_ANDROID
        string gameID = "3395904";
        #else
        string gameID = "3395905";
        #endif
    
        //広告の初期化
        Advertisement.Initialize(gameID);
    }

    private void Update()
    {
        //広告が使えるようになったかの確認
        Debug.Log(Advertisement.IsReady());
    }
}

動画広告の表示

動画広告の表示するには、Placement IDを渡してAdvertisement.showを実行するだけです。

//動画広告の表示("video"がPlacement ID)
Advertisement.Show("video");

ちなみにPlacement IDの確認や追加もOperateから行えます。なお、デフォルトでvideoとrewardedVideoが設定されているようです。

なお、IsReady(isInitializedではなく)がtrueになっていなければ表示出来ませんし、表示したい広告自体の準備が出来ている必要もあるので、以下のような確認をいれた方が良いです。

//動画広告のPlacementID
private static readonly string VIDEO_PLACEMENT_ID = "video";

public void ShowMovieAd()
{
    //広告全体の準備が出来ているかチェック
    if (!Advertisement.IsReady()) 
    {
        Debug.LogWarning("動画広告の準備が出来ていません");
        return;
    }

    //表示したい広告の準備が出来ているかチェック
    var state = Advertisement.GetPlacementState(VIDEO_PLACEMENT_ID);
    if (state != PlacementState.Ready) 
    {
        Debug.LogWarning($"{VIDEO_PLACEMENT_ID}の準備が出来ていません。現在の状態 : {state}");
        return;;
    }
  
    //広告表示
    Advertisement.Show(VIDEO_PLACEMENT_ID);
}

動画広告の再生後の判定

リワード広告を実装したい場合、動画が正常に再生されたかを判定する必要があります。そんな時は以下のような感じでIUnityAdsListenerを実装します。(動画再生部分は上記と変わらず)

using UnityEngine;
using UnityEngine.Advertisements;//Advertisementクラスを使うのに必要

public class NewBehaviourScript : MonoBehaviour, IUnityAdsListener //IUnityAdsListenerを実装
{
    private void Start()
    {
        //ゲームIDをAndroidとそれ以外(iOS)で分ける
        #if UNITY_ANDROID
        string gameID = "3395904";
        #else
        string gameID = "3395905";
        #endif
    
        //広告の初期化
        Advertisement.Initialize(gameID);

        //広告関連のイベントが発生するように登録
        Advertisement.AddListener(this);
    }
 
   //広告の準備完了
    public void OnUnityAdsReady (string placementId)
    {
        Debug.Log($"{placementId}の準備が完了");
    }
 
    //広告でエラーが発生
    public void OnUnityAdsDidError (string message) 
    {
        Debug.Log($"広告でエラー発生 : {message}");
    }
 
    //広告開始
    public void OnUnityAdsDidStart (string placementId) 
    {
        Debug.Log($"{placementId}の広告が開始");
    }
  
    //広告の表示終了
    public void OnUnityAdsDidFinish (string placementId, ShowResult showResult) 
    {
        Debug.Log($"{placementId}の表示終了");
        switch (showResult)
        {
          //最後まで視聴完了(リワード広告ならここでリワード付与する感じ)
          case ShowResult.Finished:
            Debug.Log("広告の表示成功");
            break;
          //スキップされた
          case ShowResult.Skipped:
            Debug.Log("広告スキップ");
            break;
          //表示自体が失敗した
          case ShowResult.Failed:
            Debug.LogWarning("広告の表示失敗");
            break;
        }
    }
}

すると、広告が最後まで見られた、スキップされた、表示が失敗した、のどれか分かるようになり、さらに広告の準備が完了したタイミング、開始されたタイミングも分かるようになります。

アイコンはゆづあさんからお借りしました

+2

:)