ボタンに対してスクリプトをアタッチしたGameObjectを配置しているため、
ボタンをタッチしたときに広告が出るように想定しているのですが、実機で確認したところ、広告が出ませんでした。
現状では、ソースの内容が、アタッチしただけではダメな仕様となっているか、もしくはButtonのonclickから関数を呼び出して広告を出すかなどがあるのではないかと考えておりますが、実装の仕方がわかりません。
もしくは代替案でも良いです。
ご教授いただけますと幸いです。
スクリプトはこちらの内容を使用しています。
【Unity 収益化】Admobのインタースティシャル広告の実装(Android)
https://simanezumi1989.hatenablog.com/entry/2020/05/26/072115
using UnityEngine; using GoogleMobileAds.Api; using System; using UnityEngine.Events; public class GoogleAdsInter : MonoBehaviour { // 関数を登録するもの:広告表示をしたときに実行する(Unityエディタから設定) public UnityEvent OnOpeningAd; // 関数を登録するもの:広告表示を閉じたときに実行する(Unityエディタから設定) public UnityEvent OnClosedAd; private InterstitialAd interstitial; private void Start() { RequestInterstitial(); } // 広告読み込み:次の広告表示の前に実行しておく必要あり public void RequestInterstitial() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/1033173712"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/4411468910"; #else string adUnitId = "unexpected_platform"; #endif // Initialize an InterstitialAd. this.interstitial = new InterstitialAd(adUnitId); DestroyInterstitialAd(); this.interstitial.OnAdLoaded += HandleOnAdLoaded; this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad; this.interstitial.OnAdOpening += HandleOnAdOpened; this.interstitial.OnAdClosed += HandleOnAdClosed; this.interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication; // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the interstitial with the request. this.interstitial.LoadAd(request); } // OnAdLoaded イベントは、広告の読み込みが完了すると実行されます。 public void HandleOnAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLoaded event received"); } // OnAdFailedToLoad イベントは、広告の読み込みに失敗すると呼び出されます。Message パラメータは、発生した障害のタイプを示します。 public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { MonoBehaviour.print("HandleFailedToReceiveAd event received with message: " + args.Message); } // このメソッドは、広告がデバイスの画面いっぱいに表示されたときに呼び出されます。 public void HandleOnAdOpened(object sender, EventArgs args) { MonoBehaviour.print("HandleAdOpened event received"); OnOpeningAd.Invoke(); } // このメソッドは、ユーザーが「閉じる」アイコンまたは「戻る」ボタンをタップしてインタースティシャル広告を閉じたときに呼び出されます。音声出力やゲームループを一時停止するアプリの場合は、ここで再開すると効果的です。 public void HandleOnAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleAdClosed event received"); OnClosedAd.Invoke(); RequestInterstitial(); } //OnAdOpened の後にユーザーが別のアプリ(Google Play ストアなど)を起動し、現在のアプリがバックグラウンドに移動すると、このメソッドが呼び出されます。 public void HandleOnAdLeavingApplication(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLeavingApplication event received"); } public void ShowInterstitialAd() { if (this.interstitial.IsLoaded()) { this.interstitial.Show(); } else { Debug.Log("まだ読み込みができていない"); } } // 一度リセット:次の広告表示の前に実行しておく必要あり public void DestroyInterstitialAd() { interstitial.Destroy(); } }
【Unity 収益化】Admobのリワード広告の実装(Android)
https://simanezumi1989.hatenablog.com/entry/2020/03/22/104215
using System; using UnityEngine; using GoogleMobileAds; using GoogleMobileAds.Api; using UnityEngine.UI; public class GoogleAdsReward : MonoBehaviour { private RewardedAd rewardedAd; public Text messageText; int count = 0; bool isRewarded; // Use this for initialization void Start() { #if UNITY_ANDROID string appId = "ca-app-pub-3940256099942544~3347511713"; #elif UNITY_IPHONE string appId = "ca-app-pub-3940256099942544~1458002511"; #else string appId = "unexpected_platform"; #endif // Initialize the Google Mobile Ads SDK. MobileAds.Initialize(appId); RequestRewardAd(); } private void Update() { if (isRewarded) { isRewarded = false; ShowRewardResult(); } } public void UserChoseToWatchAd() { if (this.rewardedAd.IsLoaded()) { this.rewardedAd.Show(); } } void RequestRewardAd() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/5224354917"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/2934735716"; #else string adUnitId = "unexpected_platform"; #endif this.rewardedAd = new RewardedAd(adUnitId); // Load成功時に実行する関数の登録 this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded; // Load失敗時に実行する関数の登録 this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad; // 表示時に実行する関数の登録 this.rewardedAd.OnAdOpening += HandleRewardedAdOpening; // 表示失敗時に実行する関数の登録 this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow; // 報酬受け取り時に実行する関数の登録 this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward; // 広告を閉じる時に実行する関数の登録 this.rewardedAd.OnAdClosed += HandleRewardedAdClosed; AdRequest request = new AdRequest.Builder().Build(); this.rewardedAd.LoadAd(request); } public void ShowRewardResult() { count++; messageText.text = count.ToString(); } public void CreateAndLoadRewardedAd() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/5224354917"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/1712485313"; #else string adUnitId = "unexpected_platform"; #endif this.rewardedAd = new RewardedAd(adUnitId); this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded; this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward; this.rewardedAd.OnAdClosed += HandleRewardedAdClosed; AdRequest request = new AdRequest.Builder().Build(); this.rewardedAd.LoadAd(request); } public void HandleRewardedAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardedAdLoaded event received"); } public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args) { MonoBehaviour.print( "HandleRewardedAdFailedToLoad event received with message: " + args.Message); } public void HandleRewardedAdOpening(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardedAdOpening event received"); } public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args) { MonoBehaviour.print( "HandleRewardedAdFailedToShow event received with message: " + args.Message); } public void HandleRewardedAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardedAdClosed event received"); CreateAndLoadRewardedAd(); } public void HandleUserEarnedReward(object sender, Reward args) { string type = args.Type; double amount = args.Amount; MonoBehaviour.print( "HandleRewardedAdRewarded event received for " + amount.ToString() + " " + type); isRewarded = true; } }
これらをそれぞれボタンの内にゲームオブジェクトを置いてアタッチしています。
下記の通りです。
GameAdsInterがインタースティシャル広告
GameAdsRewardがリワード広告
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。