公式のリファレンスを参考に、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
コメント