動画リワード広告の詳細設定(Admob)

2021/03/23

Android Unity

 Admobの動画広告に関して少し踏み込んだ設定です。

全般的なAdmobの広告設定に関しては以下にまとめています。

スマホ用アプリ 広告設定 (Admob)


動画やバナー広告も共通ですが、以下で特定のイベント時の設定ができます。
        // Load成功時に実行する関数の登録
        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        // Load失敗時に実行する関数の登録
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        // 表示時に実行する関数の登録
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
        // 表示失敗時に実行する関数の登録
        //this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
        // 広告を閉じる時に実行する関数の登録
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;


個人的に使っているのは、Load失敗時の関数と広告を閉じる時の関数です。

広告の取得を失敗したときにお知らせするのと、

再度押したときに表示できるようにする用途で使っています。

    private void RequestReward() //動画

    {

        adUnitId = "ca-app-pub-3940256099942544/5224354917";  //テスト

        this.rewardedAd = new RewardedAd(adUnitId);

        //動画の視聴完了後の関数の登録

        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;


        // Load失敗時に実行する関数の登録

        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;

        // 広告を閉じる時に実行する関数の登録

        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;


        AdRequest request = new AdRequest.Builder().Build();

        this.rewardedAd.LoadAd(request);

    }

広告を閉じる時に再度動画を読み込みます。

    //広告を閉じる

    public void HandleRewardedAdClosed(object sender, EventArgs args) 

    {

        RequestReward();

    }


ロード失敗時は最初に失敗回数を設定、すぐ読み込んでも
再度失敗する可能性があるので回数によって読み込み時間を増やす。

    int failedToLoadCount = 0; //ロード失敗回数

    protected float[] delayedCallTimeTable = new float[] {

        30.0f,80.0f,300.0f,

    };

~~~~~~~略~~~~~~~~

    //ロード失敗

    public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args)

    {

        StartCoroutine(_waitConnectReward

                (delayedCallTimeTable[failedToLoadCount]));

        if(failedToLoadCount < delayedCallTimeTable.Length) 

        {

              failedToLoadCount++;

        }

    }


    // ロード失敗した時、指定秒待ってから再ロード

    private System.Collections.IEnumerator _waitConnectReward(float time)

    {

        yield return new WaitForSeconds(time);


        // 通信ができない場合は、リロードしない

        if (Application.internetReachability != NetworkReachability.NotReachable)

        {

            RequestReward();

            //break;

        }

    }


ロード成功時は広告表示、失敗時は取得失敗のお知らせなど

public void ShowReawrd() //動画広告の表示

{

    if (this.rewardedAd.IsLoaded())

    {

        failedToLoadCount = 0; //失敗回数初期化

        this.rewardedAd.Show();

    }

    else //取得失敗時

    {

        //失敗時の処理

    }

}


最適なやり方はそれぞれ違うので
他サイトも参照した方が良いかと思います。