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

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

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

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

C#

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

Unity

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

Q&A

解決済

1回答

3276閲覧

Admobのリワード広告が1回しか流れません。

gyugyu

総合スコア8

AdMob

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

C#

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

Unity

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

0グッド

0クリップ

投稿2018/11/06 12:01

iOSとAndroid対応のスマートフォン用アプリを製作しています。

動画広告としてAdmobを利用しており、リワード広告を見るとアイテムがもらえ、10分間経つとまた動画が見られるという仕組みになっています。
ところがiOS版のみAdmobのリワード広告が1回しか流れず、2回目以降はリワード広告を読み込まず、ずっと「動画準備中」という状態になります。Android版は問題なく2回目以降も動画は流れます。iOS版だけ違う処理をしているつもりはないのですが、なぜなのでしょうか?

該当のソースコード

using System;
using GoogleMobileAds.Api;
using UnityEngine;
using UnityEngine.Events;

/// <summary>
/// Admob、動画処理
/// </summary>
public class AdmobRewardedVideo : MonoBehaviour {

/// <summary>動画広告</summary> private RewardBasedVideoAd rewardBasedVideo; /// <summary>動画を閉じた時の処理</summary> public UnityAction ClosedAction; /// <summary>リワードを与える時の処理</summary> public UnityAction RewardedAction; /// <summary>ゲーム中に表示するエラーメッセージ</summary> public string ErrorMessageToDisplay; /// <summary> /// ロードが済んでいるか /// </summary> /// <returns></returns> public bool IsLoaded() { return rewardBasedVideo != null && rewardBasedVideo.IsLoaded(); } /// <summary> /// リワード動画を再生する /// </summary> public bool ShowAdVideo() { if (rewardBasedVideo.IsLoaded()) { rewardBasedVideo.Show(); return true; } else { return false; } } /// <summary> /// Unity Event /// 広告の使用準備をしています /// </summary> private void Start() { ErrorMessageToDisplay = ""; InitAds(); SettingRewardBasedVideo(); RequestRewardBasedVideo(); } /// <summary> /// 広告の初期化 /// </summary> private void InitAds() {

#if UNITY_ANDROID
string appId = "ca-app-pub-~";
#elif UNITY_IPHONE
string appId = "ca-app-pub-~";
#else
string appId = "unexpected_platform";
#endif

// Initialize the Google Mobile Ads SDK. MobileAds.Initialize(appId); } /// <summary> /// 動画広告の設定(初期化、ハンドラ設定) /// リクエストは動画閲覧ごとに走らせたいので別にしています /// </summary> private void SettingRewardBasedVideo() { // Get singleton reward based video ad reference. this.rewardBasedVideo = RewardBasedVideoAd.Instance; // Called when an ad request has successfully loaded. rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded; // Called when an ad request failed to load. rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad; // Called when an ad is shown. rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened; // Called when the ad starts to play. rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted; // Called when the user should be rewarded for watching a video. rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; // Called when the ad is closed. rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed; // Called when the ad click caused the user to leave the application. rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication; } /// <summary> /// 動画広告リクエスト /// </summary> private void RequestRewardBasedVideo() {

#if UNITY_ANDROID
string adUnitId = "ca-app-pub-8147775589203500/3668786461";
#elif UNITY_IPHONE
// string adUnitId = "ca-app-pub-3940256099942544/1712485313";
string adUnitId = "ca-app-pub-8147775589203500/2444527959";
#else
string adUnitId = "unexpected_platform";
#endif

// Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the rewarded video ad with the request. this.rewardBasedVideo.LoadAd(request, adUnitId); } /// <summary> /// 広告の読み込み完了時に行う処理 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void HandleRewardBasedVideoLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoLoaded event received"); } /// <summary> /// 広告の読み込み失敗時に行う処理 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args) { ErrorMessageToDisplay = args.Message; RequestRewardBasedVideo(); MonoBehaviour.print( "HandleRewardBasedVideoFailedToLoad event received with message: " + args.Message); } /// <summary> /// 広告を表示して画面をカバーしたときに行う処理 /// トラッキングする場合はここで行う /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void HandleRewardBasedVideoOpened(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoOpened event received"); } /// <summary> /// 広告再生開始時に行う処理 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void HandleRewardBasedVideoStarted(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoStarted event received"); } /// <summary> /// 広告を閉じる際に行う処理 /// 止めていたBGMの再開など、ゲームへの復帰処理はここで行う /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void HandleRewardBasedVideoClosed(object sender, EventArgs args) { RequestRewardBasedVideo(); MonoBehaviour.print("HandleRewardBasedVideoClosed event received"); ClosedAction?.Invoke(); } /// <summary> /// 報酬を与えるべき時に行う処理 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void HandleRewardBasedVideoRewarded(object sender, Reward args) { string type = args.Type; double amount = args.Amount; MonoBehaviour.print( "HandleRewardBasedVideoRewarded event received for " + amount.ToString() + " " + type); RewardedAction?.Invoke(); } public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received"); }

}

補足

Unity2018.1.6F1とVSCode1.28.2を使用しています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

コードが見ずらいので見ていませんが
(質問のやり方に沿ってください)

iOSでの動画リワードには

広告をクローズしたところで再度設定し直していますが、これを入れないとユーザーが最後まで見ずに終わった場合、再起動するまでこの広告を再開できない

リンク内容

swiftですが
参考にしてみてください

投稿2018/11/09 02:11

aja

総合スコア3733

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

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

gyugyu

2018/11/12 22:24

参考にしてやってみたところ解決いたしました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問