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();
}
}
