SDK の移行

このページでは、最新バージョンと以前のバージョンへの移行について説明します。

SDK v21 への移行

Google Mobile Ads SDKのバージョン21.0.0(2022年初頭のリリースを予定)でビルドが失敗する可能性を回避するには、このガイドで紹介されているチェックとガイドラインに従ってください。

minSdkVersionを19以上に更新します

バージョン21.0.0以降、Google Mobile Ads SDKを実行するには、すべてのアプリがAndroidAPIレベル19以上である必要があります。 APIレベルを調整するには、アプリのビルドファイルのminSdkVersionの値を19以上に変更します。

厳密なnull可能性を適用する

厳密なnull可能性を適用するための準備として、以前はnull可能性を明示的に定義していなかったすべてのAPIに@NonNullアノテーションが追加されます。

この変更により、Kotlinアプリ、およびnullの安全性違反があり、以前は安全な方法でnull値を処理していなかった場合にJava nullチェックフレームワークを使用するアプリが破損する可能性があります( Null-safetyに関するKotlinのドキュメントを参照)。

addNetworkExtras()メソッドの削除

追加のパラメーターをNetworkExtrasインスタンスとして特定の広告ネットワークアダプターに渡すaddNetworkExtras()メソッドは、SDKバージョン20.3.0で非推奨になり、バージョン21.0.0で削除される予定です。代わりに、同じAdRequest.BuilderクラスのaddNetworkExtrasBundle()メソッドを使用してください。

ロケーションメソッドの削除

次のロケーションメソッドは、バージョン21.0.0で削除されます。

  • メディエーションターゲティングの目的でユーザーの場所を設定するAdRequest.BuilderクラスのsetLocation(Location location)メソッド。
  • 以前にsetLocation(Location location)メソッドに渡されたユーザーのロケーションターゲティング情報を返すAdRequestクラスのgetLocation()メソッド。
  • AdRequestで定義されている場合、ユーザーの場所を返すMediationAdConfigurationクラスのAdRequest getLocation()メソッド。

位置データは、Googleが広告をターゲティングするために使用することはありません。必要に応じて、サードパーティのAPIを使用して、サードパーティの広告ネットワークに情報を提供する必要があります。

カスタムイベントインターフェイスの廃止

カスタムイベントを使用すると、パブリッシャーは AdMobメディエーションを使用して、AdMobでサポートされている広告ネットワークの1つではない広告ネットワークにウォーターフォールメディエーションを追加できます。

すべてのカスタムイベントインターフェイスは非推奨になり、 AdapterクラスとMediationAdLoadCallbackインターフェイスが優先されます。

次の表に、バージョン21.0.0以降の各カスタムイベントインターフェイスに使用する必要のある対応するクラスまたはインターフェイスを示します。

v20.0.0インターフェースv21.0.0クラス/インターフェース
CustomEventアダプタ
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListenerアダプターMediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

SDK v20 への移行

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

全画面フォーマットの API の更新

バージョン 20.0.0 以降では、インタースティシャル広告、リワード広告、リワード インタースティシャル広告、アプリ起動時広告の各広告フォーマットが、一貫性のある API 設計に従うように標準化されます。

全画面フォーマットの API では、以下の原則が使用されます。

  • 静的な読み込みメソッド
  • 類似した読み込みコールバックまたはハンドラ メカニズム
  • プレゼンテーション コールバックの FullScreenContentCallback クラスへの依存

従来の RewardedVideoAd API の削除

最新版の RewardedAd API は 2019 年 3 月に初めて導入され、その後 18 か月間にわたってリワード広告用 API として推奨されています。一度に複数のリワード広告を読み込むことができるなど、従来の RewardedVideoAd API にさらなる改善が行われています。

従来の RewardedVideoAd API は、SDK バージョン 20.0.0 で削除されます。

アダプティブ バナーの導入に合わせてスマートバナーのサポートを終了

アダプティブ バナー広告の導入に合わせて、スマートバナー広告のサポートを終了しました。アダプティブ バナーでは、パフォーマンスと広告の幅を設定する際の柔軟性が向上しています。全幅表示のバナーを引き続き使用したい場合は、以下のコード スニペットに示されるようにアダプティブ バナーを使用してください。

Java

public class MyActivity extends AppCompatActivity {
  ...
  private AdSize getFullWidthAdaptiveSize() {
    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics();
    display.getMetrics(outMetrics);

    float widthPixels = outMetrics.widthPixels;
    float density = outMetrics.density;

    int adWidth = (int) (widthPixels / density);
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
  }
}

Kotlin

class MyActivity : AppCompatActivity() {
  ...
  private val adaptiveAdSize: AdSize
    get() {
      val display = windowManager.defaultDisplay
      val outMetrics = DisplayMetrics()
      display.getMetrics(outMetrics)

      val density = outMetrics.density

      var adWidthPixels = ad_view_container.width.toFloat()
      if (adWidthPixels == 0f) {
        adWidthPixels = outMetrics.widthPixels.toFloat()
      }

      val adWidth = (adWidthPixels / density).toInt()
      return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
    }
}

アプリ終了時のコールバックの削除

ProcessLifecycleOwner との兼ね合いで、すべての広告フォーマットの onAdLeftApplication コールバックが削除されました。OS レベルの API を使用すると、広告のインタラクションによるものであるかどうかに関係なく、ユーザーがアプリから離れるたびに通知が届きます。

なお、onAdLeftApplication コールバックは広告クリック ハンドラを意図したものではなく、このコールバックを使用してクリック数に関するレポートを作成しても正確な指標は生成されませんでした(AdChoices アイコンのクリックで外部ブラウザが起動された場合、コールバックは呼び出されるものの、クリックはカウントされない、など)。

クラス名の変更

以下の表は、変更または削除された具体的なクラス名を示しています。概要は次のとおりです。

  • UnifiedNativeAd に関連するほとんどのクラスの名前が NativeAd に変更されました。
  • MobileAds.SettingsNativeExpressAdViewNativeAppInstallAdNativeContentAdInstreamAd のクラスとビューが削除されました。
  • Publisher プレフィックスを持つすべてのクラスが AdManager プレフィックスに置き換えられました。
  • InterstitialAd のパッケージ名が変更されました。
19.5.0 クラス 20.0.0 クラス
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener rewarded.RewardedAdLoadCallback および FullScreenContentCallback
reward.RewardItem rewarded.RewardItem
rewarded.RewardedAdCallback OnUserEarnedRewardListener
formats.UnifiedNativeAdView nativead.NativeAdView
formats.UnifiedNativeAd nativead.NativeAd
formats.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
formats.AdChoicesView nativead.AdChoicesView
formats.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
formats.MediaView nativead.MediaView
formats.NativeAdViewHolder nativead.NativeAdViewHolder
formats.NativeAdOptions nativead.NativeAdOptions
formats.NativeCustomTemplateAd nativead.NativeCustomFormatAd
formats.NativeCustomTemplateAd.OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
MobileAds.Settings 削除済み
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView 削除済み
instream.InstreamAd 削除済み
mediation.admob.AdMobExtras 削除済み
Correlator 削除済み
search.SearchAdRequest 削除済み
Interface AdRequest.TagForUnderAgeOfConsent 削除済み
Interface AdRequest.MaxAdContentRating 削除済み
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

削除または置換されたメソッド

以下の表は、バージョン 20.0.0 の具体的な変更点を示しています。概要は次のとおりです。

  • 古い初期化メソッドが MobileAds クラスから削除されました。
  • AdRequest.Builder() クラスの一部のメソッドが削除されたか、RequestConfiguration クラスに移動されました。
  • RewardedAd API と InterstitialAd API が、すべての全画面フォーマットに合わせて更新されました。
  • Correlator 機能が削除されました。
クラス v19.5.0 API v20.0.0 API 備考
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds initialize(Context, String) MobileAds.initialize(Context, OnInitializationCompleteListener) アプリ ID が AndroidManifest.xml に設定されるようになりました。
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationCompleteListener) Settings クラスのサポートが終了しました。
getRewardedVideoAdInstance() 削除済み 代わりに RewardedAd API を使用してください。
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() 削除済み 全画面の広告フォーマットは AdListener の代わりに FullscreenContentCallback を使用します。FullscreenContentCallback には同等のメソッドはありません。このメソッドは AdListener から削除されました。
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() 削除済み
getBirthday() 削除済み
getNetworkExtras() 削除済み
setManualImpressionsEnabled() 削除済み
updateCorrelator() 削除済み 広告コンテンツのフィルタリングをご覧ください。
AdRequest.Builder setBirthday() 削除済み
setGender() 削除済み
setIsDesignedForFamilies() 削除済み ガイドをご確認ください。
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() テスト広告の有効化をご覧ください。
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() 広告コンテンツのフィルタリングをご覧ください。
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() ResponseInfo オブジェクトが AdView メソッド getResponseInfo() を介して利用できるようになりました。
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) RewardedAd で、他の全画面フォーマットと同じ静的な読み込みのアプローチが使用されるようになりました。
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() 削除済み 静的な読み込みメソッドのコールバックにより、読み込み済みの広告が提供されます。
show(Activity, RewardedAdCallback) show(Activity, OnUserEarnedRewardListener) この表示メソッドは、より広範な全画面フォーマットのアプローチに基づいています。
RewardedAdLoadCallback onRewardedAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdLoaded(RewardedInterstitialAd) onAdLoaded(RewardedInterstitialAd)
InterstitialAd 新しい InterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd で、他の全画面フォーマットと同じ静的な読み込みのアプローチが使用されるようになりました。
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() 削除済み NetworkExtras クラスのサポートが終了しました。
AdLoader forContentAd() 削除済み
forAppInstallAd() 削除済み
withCorrelator() 削除済み
getMediationAdapterClassName() 削除済み