自作のAndroidアプリに初めてインタースティシャル広告を表示してみた。とあるActivityを10回起動する度に1度インタースティシャル広告を表示するという仕様。ベストプラクティスではないと思うがとりあえず書いておく。
RotationCounter
まずは10回に1回の頻度で特定の処理を実行するため、RotationCounterというクラスを作成する。
📄RotationCounter.java
public class RotationCounter { public interface Listener { void onRotate(); } private final int limit; private int current = 0; public RotationCounter(int limit) { this.limit = limit; } public RotationCounter(int limit, int start) { this(limit); this.current = start; } public void increment(Listener listener) { if (++current == limit) { listener.onRotate(); current = 0; } } }
使用方法はこんな感じ。
📄InterstitialManager.java
RotationCounter counter = new RotationCounter(3); ... // 3回incrementするとdo somethingする counter.increment(() -> { // do something });
InterstitialManager
続いて、インタースティシャル広告を管理するクラスを実装する。この例では10回に1回処理を実行するが、最初の1周目だけは5回目で実行する。
public class InterstitialManager { private static final RotationCounter rotationCounter = new RotationCounter(10, 5); private final AdRequest adRequest; private final InterstitialAd interstitialAd; public InterstitialManager(Activity activity) { this.adRequest = buildAdRequest(); this.interstitialAd = createInterstitialAd(activity); } private AdRequest buildAdRequest() { return new AdRequest.Builder().build(); } private InterstitialAd createInterstitialAd(Activity activity) { InterstitialAd interstitialAd = new InterstitialAd(activity); interstitialAd.setAdUnitId(MY_AD_UNIT_ID); interstitialAd.setAdListener(new AdListener() { @Override public void onAdLoaded() { interstitialAd.show(); } }); return interstitialAd; } public void load() { rotationCounter.increment(() -> interstitialAd.loadAd(adRequest)); } }
Activity
あとはActivityから呼び出せばいい。
📄HogeActivity.java
public class HogeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ad_top); // インタースティシャル広告を表示(10回に1回) new InterstitialManager(this).load(); ....
どうせなら先に広告をloadしておいて、速やかに表示できるようにスタンバイしておく方が望ましいが、初版なのでとりあえずこれで良しとする。
関連する記事
- 【Android】フリックイベントを実装する
- 【Android】リストビューの自動スクロール機能を実装する
- 【Android】安全にonActivityResultを実行する
- Volleyでmultipartリクエストを送信する
- 「で、結局オブジェクト指向って何が良いわけ?」という手続き型脳の貴男へ