InterstitialAdがdeprecatedになったので修正
19.7.0でdeprecatedになり、20.1.0では互換性がなくなってしまったので、必要にかられて対応した内容のメモです。
元ネタはこちらの記事【Kotlin】2021年版インタースティシャル広告の実装 で、このメモは単なるJava版です。
修正箇所
MainActivity
などで行う初期化処理を修正します。AdMobのアプリケーションIDの指定ができなくなりました。
そもそもAndroidManifest.xmlにmeta情報として記載するので不要でしたね。
MobileAds.initialize(this);
InterstitialAd
をコンストラクタでインスタンス化していましたが、抽象クラスになったのでファクトリメソッドの呼び出しに変更します。
広告ユニットIDや広告リクエストは修正前のものがそのまま使えます。
下記のサンプルでは Activity
のクローズやボタンの活性化処理が入っていますが、これも修正前の処理をそのまま移行したもなので、InterstitialAd
の対応とは直接関係ありません。
InterstitialAd.load(this, getString(R.string.interstitial_ad_unit_id), app.makeAdRequest(), // これまでと同じリクエストを使用 new InterstitialAdLoadCallback() { @Override public void onAdLoaded(@NonNull @NotNull InterstitialAd interstitialAd) { super.onAdLoaded(interstitialAd); mInterstitialAd = interstitialAd; mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() { @Override public void onAdShowedFullScreenContent() { super.onAdShowedFullScreenContent(); // 広告表示できたら、次回のためにnullにしておく mInterstitialAd = null; } @Override public void onAdDismissedFullScreenContent() { super.onAdDismissedFullScreenContent(); // 広告を閉じたら、この広告を表示したActivityも閉じる(サンプル) finish(); } }); // 広告準備ができたらアップロードボタンをアクティブにする(サンプル) viewModel.loadedAds.postValue(true); } @Override public void onAdFailedToLoad(@NonNull @NotNull LoadAdError loadAdError) { super.onAdFailedToLoad(loadAdError); // 何らかの問題で広告準備ができなくてもアップロードボタンをアクティブにする(サンプル) viewModel.loadedAds.postValue(true); } });残りは表示です。 対応したアプリはボタンタップ時に広告を表示して
Activity
を閉じる動きなので、下記のような処理になりました。
private void showInterstitialAd(){ if (mInterstitialAd != null) { mInterstitialAd.show(this); } else { // 広告が準備できなかったらそのままアクテビティを閉じる finish(); } }