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

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

ただいまの
回答率

90.52%

  • C#

    7094questions

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

  • Unity

    3978questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

2つの広告が重なって表示されてしまう。 (ipadで試した場合)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 254

sukiyakigozens

score 14

やりたい事
Admobのバナー広告が(通信環境により)表示されない場合、
3秒毎に再度広告表示をリクエストして、できるだけ表示させるようにしたい。
(Awakeでバナー広告を一番先に読み込んでおりますが、
広告が表示されない事がある為、
Awakeで読み込めなかった場合に、再度広告表示のリクエストをして表示させたい)

下記のスクリプトで広告が表示されていない場合は、
3秒ごとに表示のリクエストをするようにできました。

問題
2つの広告が重なって表示されてしまう。(ipad mini / iPad airで試した場合)
※バナー広告だけ読み込んでおります。
(Admob側の広告ユニット番号の申請もバナー広告のみしかしておりません)

下の添付写真のように左上の小さい広告と背後にバナー広告が重なって表示されてしまいます。
(常時ではないが、ごくたまに起こります)

イメージ説明

推測ですが、左上の小さい広告も一応、バナー広告扱いのようです。
問題は表示のリフレッシュがうまくいってないようです。

  1. 最初の広告が出力される。
  2. アドモブ側が自動的に次の広告にリフレッシュしようとする時に、
    次の広告のデータを受け取れない。(通信環境により)
    そして最初の広告が表示されっぱなしになる。
  3. その間、下記スクリプトの3秒ごとの広告表示リクエストが実行されており、(Invoke("RequestBanner",3.0f);)
    リクエストが成功した時、2番目の広告が表示されるが、
    下の広告が表示されたままで、上に重なってしまっている。

結果的に2番目の広告が小さい場合、後ろ側の通常のサイズのバナー広告が一緒に見えてしまう。

もし次の広告への再リクエストが失敗したとしても、
その時点で、現在表示されている広告を削除するのは避けたいです。
(空欄になるより最初の広告を残しておきたい。)

質問
どうにか、次の広告が表示される時だけ、
元の広告を削除するようにできませんでしょうか?

または、
小さな広告は表示させない、
または
小さな広告を通常バナー広告サイズまで拡大するような
制御はできませんでしょうか?

ご教授よろしくおねがいいたします。

using UnityEngine;
using System.Collections;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;

public class AdScript : MonoBehaviour 
{   
    void Awake()
    {
        // イニシャライズ
        #if UNITY_ANDROID
            MobileAds.Initialize("ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX");
        #endif
        //    
        #if UNITY_IOS
            MobileAds.Initialize("ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX");
        #endif
        //
        DontDestroyOnLoad (this);
        // バナー広告を表示
        RequestBanner ();
    }

    private void RequestBanner()
    {
        // string adUnitId = "INSERT_ANDROID_BANNER_AD_UNIT_ID_HERE";
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
        // string adUnitId = "INSERT_IOS_BANNER_AD_UNIT_ID_HERE";
        #elif UNITY_IOS
            string adUnitId = "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
        //
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a smart banner at the bottom of the screen.
        BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);
        // BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        bannerView.LoadAd(request);


        // Called when an ad request has successfully loaded.
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        // Called when an ad request failed to load.
        bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    }

    //広告が表示されてない場合
    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
   {
        Invoke ("RequestBanner", 3.0f);//3秒送らせて再度バナー表示トライ 
        Debug.Log ("広告表示なし  再トライ");
    }

    //広告が表示された場合
    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        Debug.Log ("広告が表示されました");
    }                 
}

[追記]いただいた回答を元に修正して書き換えてみました。
広告が表示されてない場合の処理(HandleOnAdFailedToLoad)に追記しました。

using UnityEngine;
using System.Collections;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;
///
///
public class AdScript : MonoBehaviour 
{

    // RequestBannerを呼ぶまでの待機時間
    public static readonly float REQUEST_INTERVAL = 3;
    BannerView bannerView;
    bool IsLoaded;
    float WaitingForRequestTime;

    string APP_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx";
            #elif UNITY_IOS
            return "ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx";
            #endif
        }
    }

    string BANNER_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
            #elif UNITY_IOS
            return "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
            #endif
        }
    }

    void Awake()
    {
        // イニシャライズ
        MobileAds.Initialize(APP_ID);

        DontDestroyOnLoad(this);
        // バナー広告を表示
        RequestBanner();
    }

    void Update()
    {
        //「広告が読み込み完了していない」且つ「RequestBannerを呼ぶまでの待機時間」が0以上なら処理開始
        if(!IsLoaded && WaitingForRequestTime > 0) // 3、2、1の間だけupdadeが実行される
        {
            //WaitingForRequestTimeが0になるまでTime.deltaTimeで引き続ける
            WaitingForRequestTime -= Time.deltaTime; // 3から1づつ引いていく
            //0になったらRequestBannerを呼ぶ
            if(WaitingForRequestTime <= 0) RequestBanner(); // 0で実行
        }
    }

    private void RequestBanner()
    {

        IsLoaded = false;

        //※すでに存在すれば一度破棄する
        if(bannerView != null) bannerView.Destroy();

        // Create a smart banner at the bottom of the screen.
        bannerView = new BannerView(BANNER_ID, AdSize.SmartBanner, AdPosition.Bottom);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        bannerView.LoadAd(request);
        //
        //
        // Called when an ad request has successfully loaded.
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        // Called when an ad request failed to load.
        bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
     }

    //広告が表示されてない場合
    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {

 //       WaitingForRequestTime = REQUEST_INTERVAL;//初期値3にもどす
 //       Debug.Log("広告表示なし  再トライ");

        IsLoaded = false;

        // ネットワークにアクセス可能かどうかを取得する
        switch (Application.internetReachability)
        {
            //再トライなし
            case NetworkReachability.NotReachable:
                Debug.Log( "ネットワークが使えない 広告表示なし 再トライなし" );
                break;

            case NetworkReachability.ReachableViaCarrierDataNetwork:
                Debug.Log( "キャリアネットワークでアクセス可能 再トライ" );
                WaitingForRequestTime = REQUEST_INTERVAL;//初期値3にもどす
                break;

            case NetworkReachability.ReachableViaLocalAreaNetwork:
                Debug.Log( "WiFi でアクセス可能 再トライ" );
                WaitingForRequestTime = REQUEST_INTERVAL;//初期値3にもどす
                break;
        }
    }

    //広告が表示された場合
    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        IsLoaded = true;
        Debug.Log("広告が表示されました");
    }               
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

 [追記]回答が間違っていたので変更します。

申し訳ありません。Invokeをループ処理と勘違いしておりましたので回答を大幅に変更させていただきます。

今の問題は、Invokeが呼ばれた後にバナー広告が読み込み完了してもInvokeは止まらず別のバナーを生成してしまうということが問題かと思います。それを防ぐのは簡単ですがInvokeを使うことは避けた方が良いのでUpdateでチェックすると良いと思います。処理は下記のようになります。

  1. 広告リクエストが失敗して3秒後にRequestBannerを呼ぶ
  2. 待機時間の3秒以内に広告が呼ばれた場合終了する
  3. 更に失敗した場合1からやり直す
using UnityEngine;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;

public class AdScript : MonoBehaviour
{
    string APP_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #elif UNITY_IOS
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #endif
        }
    }

    string BANNER_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #elif UNITY_IOS
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #endif
        }
    }

    /// <summary>
    /// RequestBannerを呼ぶまでの待機時間
    /// </summary>
    public static readonly float REQUEST_INTERVAL = 3;

    BannerView bannerView;
    bool IsLoaded;
    float WaitingForRequestTime;

    void Awake()
    {
        // イニシャライズ
        MobileAds.Initialize(APP_ID);
        DontDestroyOnLoad(this);
        // バナー広告を表示
        RequestBanner();
    }

    void Update()
    {
        //「広告が読み込み完了していない」且つ「RequestBannerを呼ぶまでの待機時間」が0以上なら処理開始
        if(!IsLoaded && WaitingForRequestTime > 0)
        {
            //WaitingForRequestTimeが0になるまでTime.deltaTimeで引き続ける
            WaitingForRequestTime -= Time.deltaTime;
            //0になったらRequestBannerを呼ぶ
            if(WaitingForRequestTime <= 0) RequestBanner();
        }
    }

    void RequestBanner()
    {
        IsLoaded = false;

        //※すでに存在すれば一度破棄する
        if (bannerView != null) bannerView.Destroy();

        // Create a smart banner at the bottom of the screen.
        bannerView = new BannerView(BANNER_ID, AdSize.SmartBanner, AdPosition.Bottom);
        // BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        bannerView.LoadAd(request);

        // Called when an ad request has successfully loaded.
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        // Called when an ad request failed to load.
        bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    }

    //広告が表示されてない場合
    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        IsLoaded = false;
        WaitingForRequestTime = REQUEST_INTERVAL;
        Debug.Log("広告表示なし  再トライ");
    }

    //広告が表示された場合
    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        IsLoaded = true;
        Debug.Log("広告が表示されました");
    }
}

 [追記]以下は過去の間違った回答です。

申し訳ないですが今の実装はやめた方がよいと思います。理由は2点あります。

  1. Admobは広告の表示回数を考慮して報酬を支払うので複数回取得する事で偽装だと認識されてしまった場合最悪垢バンされる。
  2. 垢バンされなかったとしても、表示数に対してクリック数が低いと収益が下がる可能性がある。ちなみに誤クリックしやすい位置でも収益は下がる。

といった理由から今の実装はやめた方がよいと思います。
1の「複数回取得する事で偽装」というのは完全に予想ですが何度も取得するということはサーバーの負荷にも繋がりAdmobにとって良いことは無いので何かしら対策を打ってくるのではと思います。

表示されなければ取得し直すだけで留めていた方が無難かと思います。

using UnityEngine;
using System.Collections;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;

public class AdScript : MonoBehaviour
{
    string APP_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #elif UNITY_IOS
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #endif
        }
    }

    string BANNER_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #elif UNITY_IOS
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #endif
        }
    }

    BannerView bannerView;

    void Awake()
    {
        // イニシャライズ
        MobileAds.Initialize(APP_ID);

        DontDestroyOnLoad(this);
        // バナー広告を表示
        RequestBanner();
    }

  void RequestBanner()
    {
        //※すでに存在すれば一度破棄する
        if(bannerView != null) bannerView.Destroy();

        // Create a smart banner at the bottom of the screen.
        bannerView = new BannerView(BANNER_ID, AdSize.SmartBanner, AdPosition.Bottom);
        // BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        bannerView.LoadAd(request);

        // Called when an ad request has successfully loaded.
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        // Called when an ad request failed to load.
        bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    }

    //広告が表示されてない場合
    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        RequestBanner();
        Debug.Log("広告表示なし  再トライ");
    }

    //広告が表示された場合
    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        Debug.Log("広告が表示されました");
    }
}

 ゲーム画面表示と同時にバナー広告を表示したい場合

画面表示と広告表示のタイミングを合わせたいのでしたらロード画面を挟むのが簡単ですしユーザーにも優しいと思います。

今回は、見やすく一つのコードに押し込みましたがシーンのロードと広告のスクリプトは別けた方が良いです。そして、コードは未検証です。ゲーム起動時にロード画面を読み込むようにし完了後遷移させる形です。

using UnityEngine;
using System.Collections;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;
using UnityEngine.SceneManagement;

public class LoadBannerScene : MonoBehaviour
{
    string APP_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #elif UNITY_IOS
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #endif
        }
    }

    string BANNER_ID
    {
        get
        {
            #if UNITY_ANDROID
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #elif UNITY_IOS
            return "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";
            #endif
        }
    }

    /// <summary>
    /// 広告がロードされないとアプリが立ち上がらないので最大待ち時間を設定しておく
    /// 待っても表示されなければ諦めるスタイルです。
    /// </summary>
    static readonly float WAITING_FOR_LOAD_TIME_LIMIT = 10;

    BannerView bannerView;
    bool BannerIsLoaded;
    float WaitingForLoadTime;

    void Awake()
    {
        // イニシャライズ
        MobileAds.Initialize(APP_ID);

        DontDestroyOnLoad(this);
        // バナー広告を表示
        RequestBanner();
    }

    IEnumerator Start()
    {
        //シーンを非同期で読込
        AsyncOperation async = SceneManager.LoadSceneAsync(NEXT_SCENE);
        async.allowSceneActivation = false;

        //制限時間の間バナーの表示を待つ
        while(!BannerIsLoaded && WaitingForLoadTime < WAITING_FOR_LOAD_TIME_LIMIT)
        {
            //現在のロード進捗を表示することもできます。
            //var progressStg = string.Format("ロード中... {0}%", async.progress * 100);

            WaitingForLoadTime += Time.deltaTime;
            yield return null;
        }

        //シーンのロードを待つ
        while(async.progress < 0.9f) yield return null;

        //バナー表示
        bannerView.Show();

        async.allowSceneActivation = true;
    }

    void RequestBanner()
    {
        //※すでに存在すれば一度破棄する
        if(bannerView != null) bannerView.Destroy();

        // Create a smart banner at the bottom of the screen.
        bannerView = new BannerView(BANNER_ID, AdSize.SmartBanner, AdPosition.Bottom);
        // BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        bannerView.LoadAd(request);

        //※ローディング中に表示しないように一度隠しておく
        bannerView.Hide();

        // Called when an ad request has successfully loaded.
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        // Called when an ad request failed to load.
        bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    }

    //広告が表示されてない場合
    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        RequestBanner();
        Debug.Log("広告表示なし  再トライ");
    }

    //広告が表示された場合
    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        BannerIsLoaded = true;
        Debug.Log("広告が表示されました");
    }
}

 最後に

ご存知かと思いますがAdmobのオブジェクトはシーン遷移で消えてほしくないのでシングルトンにしておくと良いと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 19:48

    ご返答、大変ありがとうございます。
    「一度破棄する」の追加により、広告が重なることはなくなりました。

    すいませんが、質問させてください。
    仮に通信環境がない場所でアプリを開いた場合、(本当は望ましくないですが)
    広告が表示されないので
    早いサイクルで「RequestBanner();」が呼ばれてしまうので、
    (メモリが圧迫されてしまうので)
    Invoke ("RequestBanner", 5.0f);として
    間隔を開けて呼ばれるようにしても問題ないでしょうか?
    すいませんが、よろしくおねがいいたします。

    キャンセル

  • 2018/04/21 22:30 編集

    申し訳ありません。間違った回答をしてしまいました。
    追記しましたのでごらんください。

    キャンセル

  • 2018/04/21 22:33 編集

    Invokeは使わない方が良いAPIの代表なものです。
    理由は文字列で指定する為、動かすまでエラーが発見しにくくバグに繋がりやすいからです。今回の新しい回答ではシンプルなのでUpdateで実装しましたが複雑な場合はCoroutineを使うと良いと思います。

    Coroutineの使い方はこちらの記事が大変参考になります。
    http://tsubakit1.hateblo.jp/entry/2015/04/06/060608

    キャンセル

  • 2018/04/22 00:08

    ご回答大変ありがとうございます。
    上部に追記してみました。
    広告が表示されてない場合の処理内に(HandleOnAdFailedToLoad)
    IsLoaded = false; を加えました。
    一度広告を受け取って、IsLoaded = true; になりますが、
    通信が不安定な場所の場合、広告を受け取れたり受け取れなかったりする場合があると思います。
    IsLoaded = true; のままでは update(再リクエスト) が実行されないので、
    falseを追加しました。
    もし何か問題ありましたら、お知らせいただけないでしょうか?
    すいませんが、よろしくおねがいいたします。

    キャンセル

  • 2018/04/22 03:46

    失礼しました。そのタイミングでもIsLoaded = false; していた方が良いとおもいます。

    キャンセル

  • 2018/04/22 04:11

    何度もご返答、ありがとうございました。
    大変感謝しております。

    キャンセル

  • 2018/04/22 13:39 編集

    すいません、今きづきましたが、
    仮に一度広告を取得できれば、(広告が1度表示されれば)
    Admobの自動のリフレッシュ機能が働いてくれるので、(たぶん60秒後)
    スクリプト側で広告を再リクエストはする必要はないようです。
    仮に途中で通信が途切れたとしても、通信が再開されたら、
    既存広告がリフレッシュされて更新されるようです。
    (スクリプトで広告を削除してしまったら、更新はされないと思われます)

    しかしながら、
    通信できない場所でアプリを立ち上げ、
    (広告表示されない)
    その後通信可能な場所に移動した場合は、
    広告が出てないので、Admobの自動のリフレッシュ機能が効かないので、
    再リクエストしないと、いつまで待っても広告は表示されません。
    従ってスクリプト側で再リクエストをする意味はあると思います。
    問題は再リクエストの間隔で1秒以内などあまり短くすると
    スマホのメモリが圧迫されると思われます。
    以上、推測も入っております。

    キャンセル

  • 2018/04/22 18:24 編集

    すいません、追記させてください。
    上記の通信できない場所でアプリを立ち上げた場合ですが、
    後から通信可能な場所へ移動したとしても、
    今回のスクリプトでは広告は読まれませんでした。
    失礼しました。

    結果的に今回のスクリプトは
    広告の配信が遅い場合に再リクエストするには意味があると思われますが、
    広告配信が問題なく流れていれば再リクエストする意味は
    あまりないかもしれません。
    (普通のやり方の Awake で1回だけの表示リクエストするのと、あまりか差がないかもしれません)

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    7094questions

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

  • Unity

    3978questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。