Unity

【Unity】admob動画リワード広告の実装

2020-11-03

バージョン

Unity:2020.1.4f1

Google Mobile Ads Unity Plugin:v5.3.0

 

動画リワード広告実装の流れ

※UnityにGoogle Mobile Ads Unity Pluginをインポートしている前提

終わっていない方はこちらの記事を参考にしてください

【Unity】admobプラグインのインポート

続きを見る

 

1:広告ユニットの作成

2:動画リワード広告表示の実装

といった感じです、では早速広告ユニットの作成からやっていきましょう

 

1:広告ユニットの作成

まずは、admobにログインしてください!

ログインが完了したら「アプリ > 広告ユニット」をクリックしてください

広告ユニットの作成

まだ広告ユニットを作成していなかったら「広告を表示する広告ユニットの作成」と表示されると思うので「スタート」をクリックして「リワード」を選択してください

適当に広告ユニット名を付けて「広告ユニットを作成」をクリックしてください(報酬の設定は適当に付けちゃってください)

下画像のようになっていれば成功です!

リワード広告ユニット作成

緑枠内に、コード実装時に必要となる広告ユニットIDが表示されています

 

2:動画リワード広告表示の実装

お待たせしました、コーディングの時間です

リワード広告のAPIが変わったらしく「新しいAPI」と「従来のAPI」の2種類ありますが、本記事では「新しいAPI」の実装方法を紹介します

とりあえず必要最低限のコードを記載しておきます

using UnityEngine;
using GoogleMobileAds.Api;

public class RewardAdTest : MonoBehaviour
{
    private string adUnitId;
    private RewardedAd rewardedAd;

    // Use this for initialization
    void Start()
    {
        //アプリ起動時に一度必ず実行(他のスクリプトで実行していたら不要)
        MobileAds.Initialize(initStatus => { });
        //広告をロード
        RequestReward();
    }

    private void RequestReward()
    {
#if UNITY_ANDROID
        //adUnitId = "広告ユニットIDをコピペ(Android)";  //本番
        adUnitId = "ca-app-pub-3940256099942544/5224354917";  //テスト
#elif UNITY_IOS
        //adUnitId = "広告ユニットIDをコピペ(iOS)";  //本番
        adUnitId = "ca-app-pub-3940256099942544/1712485313";  //テスト
#endif

        this.rewardedAd = new RewardedAd(adUnitId);
        AdRequest request = new AdRequest.Builder().Build();
        this.rewardedAd.LoadAd(request);
    }

    //これを呼べば動画が流れる(例えばボタン押下時など)
    public void ShowReawrd()
    {
        if (this.rewardedAd.IsLoaded())
        {
            this.rewardedAd.Show();
        }
    }
}

 

このスクリプトを何かのオブジェクトにアタッチしてボタン押下時などに「ShowReward()」メソッド、を呼べばテスト広告が表示されると思います!

※iOSでテスト広告が表示されない場合、iOS端末の「設定 > プライバシー > 広告 > 追跡型広告を制限」をオフにすれば表示されるようになると思います。

 

では、コードについて少し解説していきます

2行目:using GoogleMobileAds.Api;

これを記載しないとエラーのオンパレードになるので必ず追加してください!

 

13行目:MobileAds.Initialize(initStatus => { })

このコードはアプリ起動時に一度だけ呼ばれていればいいので、もし他のスクリプトで実行されていれば省略することができます

※インタースティシャル広告やバナー広告も表示するからといって、2回も3回も実行する必要はありません!

 

20~26行目:adUnitId = "広告ユニットIDをコピペ"

ここには、手順1で作成した広告ユニットIDをそれぞれコピペしてください!

※テスト表示する際は必ずテスト広告IDを使用してください!(テスト広告ID一覧

 

28~30行目

28行目:this.rewardedAd = new RewardedAd(adUnitId);

広告ユニットIDを指定してrewardedAdをインスタンス化します

広告ユニットIDは20~26行目で変数に代入しているのでこのままで大丈夫です!

29行目:AdRequest request = new AdRequest.Builder().Build();

空のrequestを作成します

30行目:this.rewardedAd.LoadAd(request);

動画リワード広告をロードします

 

36行目: if (this.rewardedAd.IsLoaded()){ }

ここは、もし動画がロードされていたら{ }内の処理をします

動画がロードされていなければ、いくら動画を再生しようとしてもできません

 

38行目:this.rewardedAd.Show();

ここで、動画を再生します!

 

 

 

以上で動画リワード広告の実装完了です、ただし実機じゃないと広告(テスト広告も含め)は表示されません!

 

動画リワードでは必須となる「広告イベント」の使い方説明します

広告イベント(動画を見たかどうかなど)使わないと報酬とか渡せないのでね笑

スポンサーリンク

広告イベントについて

一番大事なのは、動画の視聴を完了した時に呼ばれるイベントですね!

実装したコードは以下のようになっています

using UnityEngine;
using GoogleMobileAds.Api;

public class RewardAdTest : MonoBehaviour
{
    private string adUnitId;
    private RewardedAd rewardedAd;

    // Use this for initialization
    void Start()
    {
        //アプリ起動時に一度必ず実行(他のスクリプトで実行していたら不要)
        MobileAds.Initialize(initStatus => { });
        //広告を表示
        RequestReward();
    }

    private void RequestReward()
    {
#if UNITY_ANDROID
        adUnitId = "広告ユニットIDをコピペ(Android)";  //本番
        //adUnitId = "ca-app-pub-3940256099942544/5224354917";  //テスト
#elif UNITY_IOS
        //adUnitId = "広告ユニットIDをコピペ(iOS)";  //本番
        adUnitId = "ca-app-pub-3940256099942544/1712485313";  //テスト
#endif

        this.rewardedAd = new RewardedAd(adUnitId);
        //動画の視聴が完了したら「HandleUserEarnedReward」を呼ぶ
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        AdRequest request = new AdRequest.Builder().Build();
        this.rewardedAd.LoadAd(request); 
    }

    //動画の視聴が完了したら実行される(途中で閉じられた場合は呼ばれない)
    public void HandleUserEarnedReward(object sender, Reward args)
    {
        Debug.Log("報酬獲得!");
    }

    public void ShowReawrd()
    {
        if (this.rewardedAd.IsLoaded())
        {
            this.rewardedAd.Show();
        }
    }
}

 

30行目と36~39行目を追加!

30行目:rewardedAdインスタンスに「動画視聴完了時に呼ばれるイベント」を登録します

38行目:ここに、動画視聴完了時に実行したい処理を書いていきます

以上です!

 

ちなみに他のイベントはこちら(AdMob-動画リワード広告-広告イベント)からどうぞ!

 

他の広告実装方法

バナー広告

【Unity】admobバナー広告の実装

続きを見る

 

インタースティシャル広告

【Unity】admobインタースティシャル広告の実装

続きを見る

参考URL

AdMob(Unity)-動画リワード広告実装

-Unity

© 2024 ITime