🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1379閲覧

GameObjectに貼り付けても実機で広告が出ない件の解決(AdMobのインタースティシャルとリワードの広告の実装)

hiroxtuchi

総合スコア7

AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/01/23 13:19

編集2021/01/23 22:29

ボタンに対してスクリプトをアタッチした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がリワード広告

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

クリックで関数を呼び出すように実装したら、Unity上で動きました。

投稿2021/01/24 12:51

hiroxtuchi

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問