UnityでAdMobの動画リワード広告を実装しようとしたら「IsLoaded」が無いとのエラー発生

アプリ開発


公式のリファレンスを参考に、UnityでAdMobの動画リワード広告を実装しようとしたところ、「IsLoaded」が無いとのエラーが発生しました。

公式のリファレンス

リワード広告  |  Unity  |  Google for Developers

原因としては、どうも本記事執筆時点で(2023年5月上旬)、公式のリファレンスが最新のGoogle Mobile Ads Unity プラグインに対応していないようです。

そのうち対応すると思われますが、情報が少なくて困ったので、本記事に対応方法を載せておきます。

まずは、古い書き方です。現時点でWeb検索すると、こちらの書き方がわんさか出てきます。


RewardedAd rad;

//広告読み込み
rad = new RewardedAd(adUnitId);
//広告読み込みエラー発生時の処理メソッドの指定
rad.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
//報酬取得処理メソッドの指定
rad.OnUserEarnedReward += HandleUserEarnedReward;
//広告が閉じられた際の処理メソッドを指定
rad.OnAdClosed += HandleRewardedAdClosed;
//広告リクエスト作成
AdRequest request = new AdRequest.Builder().Build();
//広告読み込み開始
rad.LoadAd(request);

//広告表示
public void UserChoseToWatchAd(){
    if (rad.IsLoaded()){
        rad.Show();
    }
}

続いて、新しい書き方です。


RewardedAd rad;

//広告読み込み
//広告リクエスト作成
AdRequest request = new AdRequest.Builder().Build();
//広告読み込み開始
RewardedAd.Load(adUnitId, request, (RewardedAd ad, LoadAdError loadError) => {
    if (loadError != null){
        //広告読み込みエラー発生時の処理
        HandleRewardedAdFailedToLoad();
        return;
    }
    rad = ad;
    //広告が閉じられた際の処理メソッドを指定
    rad.OnAdFullScreenContentClosed += HandleRewardedAdClosed;
});

//広告表示
public void UserChoseToWatchAd(){
    if (rad != null){
        //報酬取得処理メソッドを引数に渡す
        rad.Show(HandleUserEarnedReward);
    }
    else{
        //広告読込中の処理
    }
}

なお、筆者は下記サイトの内容を参考にしました。

こちらは、インタースティシャル広告の新しい実装方法を掲載されていて、今回のエラー対応方法に気づくことができました。ありがとうございます。

【Unity】Google Mobile Ads Unity Plugin v7.4.0 最速チェック | くものす
はじめに AdMobのUnityプラグインv7.4.0 がリリースされました(2023.01.18) Google Mobile Ads Unity Plugin v7.4.0

 

コメント

タイトルとURLをコピーしました