【Android】Admob SDK20以降の InterstitialAd の実装が変わった

広告表示に使う AdMob で問題発生

なぜかSDK20以降でInterstitalAdの仕様が変更!

もちろん既存コードが使えなくなる訳ではないです。

ただその実装方法がかなり分かりにくくなったので、
AdMob SKD20以降のInterstitailAdの実装を覚え書き

かなり仕様が変わってて混乱しました。

AdMob SDK20 は互換性を破るアップデート

バージョン20.0.0以降について

▼ 公式ではこう説明してある

バージョン 20.0.0 では、互換性を破る多数の変更が加えられる予定です。バージョン 19.7.0 では、新しい API が多く導入され、バージョン 20.0.0 のリリースに向けて、多くのクラスが非推奨になりました。このガイドでは、バージョン 19.7.0 で導入された主な変更と、バージョン 20.0.0(2021 年初頭)のリリース内容について説明しています。

引用元 : https://developers.google.com/admob/android/migration?hl=ja

この説明にもあるように、

互換性を破る多数の変更

これが開発者にとって少し厄介です。

クラス名とかパッケージ名が変更になったり、スマートバナーが廃止されたり、今までのRewardedVideoAd APIが削除されたり、全画面広告の仕様が変わったり、いくつかのメソッドが削除・置換されたり・・・

これまでアプリ開発にSDK20.0.0未満を使ってたんですが、実際にアップデートするとエラーが出てしまいました。互換性がないことにも事情があるけど少し厄介。

中でもInterstitialAdの仕様変更

これの移行が少してこずりました。

SDK20以降のInterstialAdの実装方法

こういう手順に変わってました。

1.AdMobライブラリの導入と初期化

自分はAdMob20.1.0を使用しています。

▼ build.gradleから導入

▼ Activity内でAdMob初期化

ここまでは何の変更もないですね。

ただAndroidでもGDPR対応とか必要になっているので、僕自身はGDPRConsentというライブラリも導入してます。上コードの checkConsentInfo();  がその処理です。

GDPRConsentの導入手順とかは次記事参照

少し面倒だけど色々なリスクを減らせて便利です。

2.InterstitialAdの読込・表示コード書き換え

肝心の InterstitialAd の実装について

まずパッケージ名からして変わりました。

▼ 以前のパッケージ名

▼ SDK20以降のパッケージ名

こういった書き換えがまず必要です。

そして表示コードも大幅に変わってます。

たとえば表示手順を簡易的にまとめると次の通り

 

1.Activity内にInterstitialAd宣言

▼ たとえばこのようなコードで

 

2.初期化かつ読み込み用メソッド作成

▼ 実際に書いてみたコード

なんか今までと全然違う...

今まではInterstitalAdを直接インスタンス化してたんですが、これからは InterstitialAd.load()  を使って読み込みし、そのonAdLoadedコールバックの中でInterstitialAdインスタンスが取得できます。

そして全画面広告の表示タイミングも要注意!

必ず loadInterstitialAd();  を広告表示の前に呼び出しておく必要があります。たとえば他Activityからの帰還後に表示したいなら、別Activity起動前に loadInterstitialAd();  を呼び出すこと

 

3.任意の場所でInterstitialAdを表示

▼ こういう感じで

これは今までのコードと同じですね。

AdMob20以降はInterstitialAdの実装が大幅に違う

ここまでのまとめ

AdMob20以降はInterstitialAdの実装をはじめ、大幅に変更(破壊的)されました。もしAdMobバージョンアップでエラーが出たらコードを見直してみてください。

もちろんAdMob20未満が使えなくなる訳でもないです。そのままサポートされますが、修正がそれほど多くないなら、SDK20以降にアプデしておいた方がいいかもしれません。

以上、AdMob20以降のInterstitialAdの実装でした。

間違いなどはコメント欄からどうぞ。ではまた