質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
AdMob

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

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

Q&A

解決済

2回答

1387閲覧

Unity : AndroidアプリでGoogleAdmobのリワード広告が表示されない

BloodX

総合スコア9

AdMob

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

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

1グッド

0クリップ

投稿2018/06/12 21:00

前提・実現したいこと

Unityで開発中のAndroidアプリ内にリワード広告を実装したいと考えています。

ユーザーに動画視聴の有無確認 → YESなら動画視聴 → 視聴後に体力回復のアイテム支給
といった流れを作成しています。

テスト用の UnitIDを使用して確認する分には問題なく表示され、問題なくアイテムも支給出来ます。
テスト用のID( ca-app-pub-3940256099942544/5224354917 )

この状態で上記テストID から AdMobで取得したUnitIDのみ変更してビルド→確認すると
動画が表示されなくなります。

ADMOBサポートに問い合わせてみた所、
広告リクエストが出てから、広告が反映されるまでに十分な時間がない

1.広告リクエストのタイミング
2.プレキャッシング導入
3.広告の配置場所

の見直しを検討してくれとの回答をいただきました。

こちらについて、リクエストタイミング(動画のロード)
AdMobReward.instance.RequestRewardBasedVideo();
は、タイトル画面、最初にゲームプレイ画面に入った時、動画視聴後にあらかじめしています。

さっぱり原因がわからず途方に暮れております。
よろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

using UnityEngine; using System.Collections; using GoogleMobileAds.Api; using DG.Tweening; public class AdMobReward : MonoBehaviour { static public AdMobReward instance; public string ios_Reward; public string Android_Reward; private RewardBasedVideoAd rewardBasedVideo; bool rewardBasedEventHandlersSet = false; bool IsReworded; bool IsClosed; void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(this.gameObject); } else { Destroy(this.gameObject); } #if UNITY_ANDROID AppLovin.SetSdkKey("********************"); AppLovin.InitializeSdk(); #elif UNITY_IPHONE AppLovin.SetSdkKey("*************************"); AppLovin.InitializeSdk(); #endif RequestRewardBasedVideo(); } void Start() { } void Update() { if (IsReworded && IsClosed) { IsReworded = false; IsClosed = false; //報酬支給 Instantiate(Resources.Load<GameObject>("Prefabs/Item/Item_Power2"), new Vector3(14.02f, 0.16f, -6.4f), Quaternion.Euler(0, 0, 0)); SoundManager.Instance.PlaySE(10); } } public void RequestRewardBasedVideo() { string adUnitId; #if UNITY_EDITOR adUnitId = "unused"; #elif UNITY_ANDROID adUnitId = Android_Reward; #elif UNITY_IPHONE adUnitId = ios_Reward; #else adUnitId = "unexpected_platform"; #endif rewardBasedVideo = RewardBasedVideoAd.Instance; AdRequest request = new AdRequest.Builder().Build(); rewardBasedVideo.LoadAd(request, adUnitId); if (rewardBasedEventHandlersSet == false) { // has rewarded the user. rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoRewardedClosed; rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoRewardedFailed; rewardBasedEventHandlersSet = true; } } // 動画再生 public void pushAds() { if ( rewardBasedVideo.IsLoaded() ) { rewardBasedVideo.Show(); } else { GameManager.Instance._reward = false; } } //void HandleRewardBasedVideoOpened(object sender, EventArgs args) //{ // Time.timeScale = 0; //} public void HandleRewardBasedVideoRewarded(object sender, Reward args) { IsReworded = true; } public void HandleRewardBasedVideoRewardedClosed(object sender, System.EventArgs args) { RequestRewardBasedVideo(); IsClosed = true; //Time.timeScale = 1; } public void HandleRewardBasedVideoRewardedFailed(object sender, AdFailedToLoadEventArgs args) { StartCoroutine(_waitConnectReward()); } IEnumerator _waitConnectReward() { while (true) { yield return new WaitForSeconds(30.0f); if (Application.internetReachability != NetworkReachability.NotReachable) { RequestRewardBasedVideo(); break; } } } }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答2

0

イメージ説明
イメージ説明

IShikawan様

その後、ロードを失敗した時にアプリ側にアラートメッセージを表示させてみた所
見事にアラートメッセージが表示されていました。
何度やっても、何分待っても、うまく広告がロードされていないようなのです。
朝方、たまに表示されていたのはちゃんとロードされた結果ということなのしょうか・・。

AdMobの設定画面→広告ユニット→自分で作成した動画リワードの広告ユニットID を確認&組み込み
メディエーショングループはAdMobNetWork、Applovin、UnityAds を設定しています。

添付の設定を見る限り、やはりご指摘いただいた通り、Applovinの設定がうまくいって
ないのかなと思いました。(その後付け加えたunityAdsも)
ただ、admobネットワークもほとんど表示されていないのがよくわかりません。

1度、全て捨てて、1から設定し直してみます。

アドバイスいただき本当にありがとうございました。

投稿2018/06/19 09:35

BloodX

総合スコア9

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

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

IShix

2018/06/21 12:07

できませんでしたか。。。。お役に立てず申し訳ありません。
BloodX

2018/06/21 13:29

いえいえ、とんでもないです。 レスをいただき色々と参考になり大変感謝しています。 結局、AdMobはバナーとインタースティシャル、リワードはUnityAdsを使うことにしました。 ありがとうございました。
guest

0

ベストアンサー

AppLovin ?

テスト用の UnitIDを使用して確認する分には問題なく表示され、問題なくアイテムも支給出来ます。(略)この状態で上記テストID から AdMobで取得したUnitIDのみ変更してビルド→確認すると
動画が表示されなくなります。

AppLovinに問題あるかもしれませんね。一度AppLovinのコードをコメントアウトして実機で確認してみてください。もしAdmobの管理画面でApplovinを設定している場合は、一時停止し30分程度待って実機で確認してみてください。

プラグインの初期化してますか?

初期化にはアプリIDが必要です。
[アプリIDの確認方法] https://support.google.com/admob/answer/6232340?hl=ja

C#

1... 2using GoogleMobileAds.Api; 3... 4public class GoogleMobileAdsDemoScript : MonoBehaviour 5{ 6 public void Start() 7 { 8 #if UNITY_ANDROID 9 string appId = "ca-app-pub-3940256099942544~3347511713"; 10 #elif UNITY_IPHONE 11 string appId = "ca-app-pub-3940256099942544~1458002511"; 12 #else 13 string appId = "unexpected_platform"; 14 #endif 15 16 // Initialize the Google Mobile Ads SDK. 17 MobileAds.Initialize(appId); 18 } 19}

[参考] https://developers.google.com/admob/unity/start#initialize_mobileads

投稿2018/06/13 11:10

IShix

総合スコア1724

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

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

BloodX

2018/06/13 13:26

お返事ありがとうございます。 ご指摘いただいた通り、 ①Applovinに関するコードの削除。 ※AndroidManifest.xml 内と 上記添付したコードのApplovin部分のコメントアウト です。 ②上記スクリプトのRequestRewardBasedVideo() 内に下記追加とIDの確認 MobileAds.Initialize("**-***-***-****************~**********"); ③admob内のメディエーション/メディエーショングループに登録してあるものを admobだけに。 。。。を設定して確認してみましたが、やはり動画は表示されませんでした。
IShix

2018/06/13 19:32 編集

大変お手数おかけしました。 1度RequestRewardBasedVideo()の呼び出しをゲームプレイ画面に入った時だけにしてみていただいても良いですか?そして、広告が再生されるまでに30秒ほど時間をおいて再生してみていただいてもよろしいでしょうか?
BloodX

2018/06/17 08:43

ありがとうございます! RequestRewardBasedVideo()の呼び出しをゲームスタート時だけ。 他は、動画を閉じた時とかにも設定してましたが、念のためコメントアウト。 上記のビルドを、更に念のため、テストIDと正式なUnitIDの2つのビルドをしてそれぞれ確認 してみました。 テストID→OK UnitID→無反応 。。。残念です。 ここ2日間だけの確認なので真意はわからないのですが、何故か朝方に1回だけ 再生されることに気が付きました。 facebookの広告動画なのですが、その後はまた無反応になります。
BloodX

2018/06/17 08:55

Unityで開発しているのですが、 AndroidManifest が Assets/Plugins /Androidフォルダ内 以外に /com.google.android.gms.play-services-ads-license-11.8.0 /com.google.android.gms.play-services-ads-lite-license-11.8.0 /com.google.android.gms.play-services-basement-license-11.8.0 /com.google.android.gms.play-services-gass-license-11.8.0 /GoogleMobileAdsPlugin 。。フォルダにも入っています。これは削除した方が良いのでしょうか?
IShix

2018/06/23 05:43 編集

>ここ2日間だけの確認なので真意はわからないのですが、。。。facebookの広告動画なのですが、その後はまた無反応になります。 やっぱりIDの問題な気がしますね。Unityのバージョンを教えていただいてもよろしいでしょうか? >com.google.android 再インストールの為に一旦削除するってことですかね? でしたら、GoogleMobileAdsPluginは削除して大丈夫です。com.google.androidで始まるファイルはAdmobで必要なファイルですが、他にネイティブにアクセスするプラグインは利用していませんか?別のプラグインで利用している可能性もあります。無ければ破棄して大丈夫です。少し具体的に説明しますと com.googleなどのファイルは 「GoogleMobileAds/Editor/Google*****.xml」に記述した内容を PlayServicesResolverが取得しています。.xmlに記述がないファイルもあると思いますが、依存関係がある場合自動的に取得してくれます。逆にPlayServicesResolverのフォルダから先に削除しないと即座に復元するのでPlayServicesResolverから削除してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問