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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

440閲覧

インタースティシャル広告を一定間隔をあけて表示させる

koki999

総合スコア1

AdMob

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2022/01/20 02:16

1,実現したいこと
インタースティシャル広告が表示されたら3-5分ほど時間を開けて再度表示させたいです。
(ユーザーに不快感を与えないため)
下記のようなコードを作成してみたのですが間隔が空かずに表示されてしまいます。
コードの内容としてはfijiButton, australiaButtonを押すと各ページに飛ぶのですが、その際に広告を表示させたいと思っておりまして、たとえばfijiButtonを押して広告が表示されたら5分間はfijiButton, australiaButtonを押しても広告が表示されないようにしたいです。
ご指摘のほどよろしくお願いいたします。

java

1public class OceaniaActivity extends AppCompatActivity { 2 3 private InterstitialAd mInterstitialAd; 4 5 @Override 6 protected void onCreate(@Nullable Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_oceania); 9 10 MobileAds.initialize(this, new OnInitializationCompleteListener() { 11 @Override 12 public void onInitializationComplete(@NonNull InitializationStatus initializationStatus) { 13 } 14 }); 15 AdRequest adRequest = new AdRequest.Builder().build(); 16 17 InterstitialAd.load(this, "ca-app-pub-3940256099942544/1033173712", adRequest, 18 new InterstitialAdLoadCallback() { 19 @Override 20 public void onAdLoaded(@NonNull InterstitialAd interstitialAd) { 21 // The mInterstitialAd reference will be null until 22 // an ad is loaded. 23 mInterstitialAd = interstitialAd; 24 Log.i("TAG", "onAdLoaded"); 25 } 26 27 @Override 28 public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { 29 // Handle the error 30 Log.i("TAG", loadAdError.getMessage()); 31 mInterstitialAd = null; 32 } 33 }); 34 35 Button australiaButton = findViewById(R.id.australiaButton); 36 australiaButton.setOnClickListener(new View.OnClickListener() { 37 @Override 38 public void onClick(View v) { 39 //インタースティシャル広告表示 40 if (mInterstitialAd != null) { 41 mInterstitialAd.show(OceaniaActivity.this); 42 } else { 43 Log.d("TAG", "The interstitial ad wasn't ready yet."); 44 } 45 Intent intent = new Intent(); 46 intent.setClass(OceaniaActivity.this, AustraliaActivity.class); 47 startActivity(intent); 48 } 49 }); 50 Button fijiButton = findViewById(R.id.fijiButton); 51 fijiButton.setOnClickListener(new View.OnClickListener() { 52 @Override 53 public void onClick(View v) { 54 //インタースティシャル広告表示 55 if (mInterstitialAd != null) { 56 mInterstitialAd.show(OceaniaActivity.this); 57 } else { 58 Log.d("TAG", "The interstitial ad wasn't ready yet."); 59 } 60 Intent intent = new Intent(); 61 intent.setClass(OceaniaActivity.this, FijiActivity.class); 62 startActivity(intent); 63 } 64 }); 65 66 } 67}

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

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

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

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

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

jimbe

2022/01/20 06:32 編集

ご提示のコードには「3-5分ほど時間を開けて再度表示」というロジックが見当たらないように思いますが、お考えの処理に関してどのようなことを試みられましたでしょうか。 https://teratail.com/help/question-tips#questionTips12
koki999

2022/01/20 08:47

説明不足申し訳ありません。 私が試みたこととしては、CountDownTimerというものを用いてなんとか出来ないかと思ったのですが実装方法がよくわからずで終わってしまいました。 もう一つは、1回目の広告が表示されたら次は5-10回ボタンを押さないと再度広告がloadされないようなコードを書きたかったのですがこちらも実装方法がわからず断念してしまいました。 素人すぎてすみません、、、
guest

回答1

0

ベストアンサー

※広告に関しましては使ったことがありませんので正しいか分からないのですが、トーストに置き換えてみました。

方法としましては、最後に広告を出した時刻を保存しておいて、次の表示の機会で時間差を計算して時間が経っていたらまた表示をして時刻を保存しておく…という形です。
アクティビティは再生成されたりしますので、時刻を onSaveInstanceState/onRestoreInstanceState で退避させています。

java

1import android.content.Intent; 2import android.os.*; 3import android.view.View; 4import android.widget.*; 5 6import androidx.annotation.*; 7import androidx.appcompat.app.AppCompatActivity; 8 9import java.util.Date; 10 11public class MainActivity extends AppCompatActivity { 12 private static final String STATE_KEY_LAST_ADVERTISEMENT_TIME = "lastAdvertisementTime"; 13 private long lastAdvertisementTime = 0; 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 20 Button australiaButton = findViewById(R.id.australiaButton); 21 australiaButton.setOnClickListener(new View.OnClickListener() { 22 @Override 23 public void onClick(View v) { 24 showAdvertisement(); 25 26 Intent intent = new Intent(); 27 intent.setClass(MainActivity.this, AustraliaActivity.class); 28 startActivity(intent); 29 } 30 }); 31 Button fijiButton = findViewById(R.id.fijiButton); 32 fijiButton.setOnClickListener(new View.OnClickListener() { 33 @Override 34 public void onClick(View v) { 35 showAdvertisement(); 36 37 Intent intent = new Intent(); 38 intent.setClass(MainActivity.this, FijiActivity.class); 39 startActivity(intent); 40 } 41 }); 42 } 43 44 @Override 45 protected void onSaveInstanceState(@NonNull Bundle outState) { 46 super.onSaveInstanceState(outState); 47 outState.putLong(STATE_KEY_LAST_ADVERTISEMENT_TIME, lastAdvertisementTime); 48 } 49 50 @Override 51 public void onRestoreInstanceState(@Nullable Bundle savedInstanceState) { 52 super.onRestoreInstanceState(savedInstanceState); 53 lastAdvertisementTime = savedInstanceState.getLong(STATE_KEY_LAST_ADVERTISEMENT_TIME); 54 } 55 56 //インタースティシャル広告表示 57 private void showAdvertisement() { 58 long currentTime = new Date().getTime(); 59 if(currentTime - lastAdvertisementTime >= 1*60*1000) { //ミリ秒 60 Toast.makeText(MainActivity.this, "広告", Toast.LENGTH_LONG).show(); 61 lastAdvertisementTime = currentTime; 62 } 63 } 64}

投稿2022/01/20 10:30

jimbe

総合スコア12696

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

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

koki999

2022/01/20 23:40

Toastの部分を自分の広告に置き換えたらできました! コードの書き方なども含めてとても勉強になりました。ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問