SDK バージョンを移行する

このページでは、移行にまつわる最新のバージョンと以前のバージョンに関する情報を説明します。

v24 から v25 に移行する

以降のサブセクションでは、Google Mobile Ads SDK (Legacy) のメジャー バージョン 24 と 25 の互換性を破る変更と動作の違いについて説明します。

最小 Android API レベルは 24

バージョン 25.5.0 以降の Google Mobile Ads SDK (Legacy) では、すべてのアプリが Android API レベル 24 以上で稼働していることが求められます。API レベルを調整するには、アプリレベルの build.gradle ファイルで minSdk の値を 24 以上に変更します。

非推奨の広告コールバックを削除しました

次の非推奨の広告コールバックが、次のクラスから削除されました。

クラス コールバックを削除しました 交換
SignalCallbacks onFailure(String)
onAdFailedToShow(String)
onFailure(AdError)
onAdFailedToShow(AdError)
MediationAdLoadCallback
MediationInterstitialAdCallback
MediationRewardedAdCallback

アンカー アダプティブ バナーサイズ API の変更

バージョン 25.0.0 では、既存のアンカー アダプティブ バナーサイズ API が非推奨となり、大型のアンカー アダプティブ バナー広告用のサイズ API が導入されました。Google Mobile Ads SDK (Legacy) では、新しい大型のアンカー アダプティブ バナーサイズ API を使用して、バナー広告に動画デマンドを配信できます。

次の表に、非推奨のサイズ設定 API とその代替 API の詳細を示します。

v24(非推奨) v25(交換)
getCurrentOrientationAnchoredAdaptiveBannerAdSize(Context, int) getLargeAnchoredAdaptiveBannerAdSize(Context, int)
getLandscapeAnchoredAdaptiveBannerAdSize(Context, int) getLargeLandscapeAnchoredAdaptiveBannerAdSize(Context, int)
getPortraitAnchoredAdaptiveBannerAdSize(Context context, int width) getLargePortraitAnchoredAdaptiveBannerAdSize(Context context, int width)

mediation.VersionInfo クラスを削除しました

com.google.android.gms.ads.mediation パッケージの VersionInfo クラスが削除されました。代わりに com.google.android.gms.ads.VersionInfo パッケージを使用します。

RtbSignalData クラスの getConfiguration() メソッドを削除

RtbSignalData で非推奨になった getConfiguration() API メソッドが削除されました。代わりに、List<MediationConfiguration> リストを返す getConfigurations() メソッドを使用します。

v23 から v24 に移行する

以降のサブセクションでは、Google Mobile Ads SDK (Legacy) のメジャー バージョン 23 と 24 の互換性を破る変更と動作の違いについて説明します。

最小 Android API レベルは 23

バージョン 24.0.0 以降の Google Mobile Ads SDK (Legacy) では、すべてのアプリが Android API レベル 23 以上で稼働していることが求められます。API レベルを調整するには、アプリレベルの build.gradle ファイルで minSdk の値を 23 以上に変更します。

初期化と読み込みの最適化に関する変更

デフォルトでは、OPTIMIZE_INITIALIZATION フラグと OPTIMIZE_AD_LOADING フラグは true に設定されています。これらのフラグの詳細については、初期化と読み込みを最適化するをご覧ください。

firebase-ads と firebase-ads-lite の依存関係を削除しました

バージョン 24.0.0 以降、SDK リリースでは firebase-ads 依存関係と firebase-ads-lite 依存関係が配布されなくなりました。代わりに play-services-ads 依存関係を使用してください。

カスタム ターゲティング パラメータを設定する

広告リクエストにカスタム ターゲティングを設定するには、addCustomTargeting() を使用します。

アプリ起動時広告の非推奨の向き API を削除しました。

  • 向きの入力パラメータを受け取る AppOpenAd.load() メソッドを削除しました。代わりに、向きを受け取らない AppOpenAd.load() メソッドを使用します。
  • AppOpenAdOrientation 列挙型を削除しました。

メディエーション アダプタのリワード コールバックを簡素化

バージョン 24.0.0 では、MediationRewardedAdCallback に onUserEarnedReward() コールバックが追加され、onUserEarnedReward(RewardItem) が非推奨になりました。メディエーション アダプタは、ユーザーが報酬を獲得したときに onUserEarnedReward() の呼び出しを開始する必要があります。

メディエーション アダプタからコールバックを転送する場合、すべての Google Mobile Ads SDK (Legacy) バージョンは、アド マネージャーの管理画面で定義されたリワードを OnUserEarnedRewardListener で返します。

削除されたクラス

次のクラスは削除され、代替はありません。

  • DynamicHeightSearchAdRequest
  • SearchAdRequest
  • SearchAdView

削除されたメソッド

次のメソッドは削除され、代替はありません。

クラス メソッド
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdLoaded()
onRewardedInterstitialAdFailedToLoad(int)
onRewardedInterstitialAdFailedToLoad(LoadAdError)

非推奨のメソッド

次のメソッドは非推奨となり、代替メソッドはありません。

クラス メソッド
アダプタ loadInterscrollerAd()
RtbAdapter loadRtbInterscrollerAd()

v22 から v23 に移行する

以降のサブセクションでは、Google Mobile Ads SDK (Legacy) のメジャー バージョン 22 と 23 の互換性を破る変更と動作の違いについて説明します。

最小 Android API レベルは 21

バージョン 23.0.0 以降の Google Mobile Ads SDK (Legacy) では、すべてのアプリが Android API レベル 21 以上で稼働していることが求められます。API レベルを調整するには、アプリレベルの build.gradle ファイルで minSdkVersion の値を 21 以上に変更します。

スーパークラスから継承された AdManagerAdRequest.Builder メソッドをチェーン化できる

バージョン 23.0.0 では、親から継承された AdManagerAdRequest.Builder メソッドを連結して、1 回の呼び出しで AdManagerAdRequest をビルドできます。

Java

AdManagerAdRequest request = new AdManagerAdRequest.Builder()
    .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method.
    .setContentUrl("https://www.example.com") // Method inherited from parent.
    .build(); // Builds an AdManagerAdRequest.

Kotlin

var request = AdManagerAdRequest.Builder()
  .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method.
  .setContentUrl("https://www.example.com") // Method inherited from parent.
  .build() // Builds an AdManagerAdRequest.

非推奨のメソッドの削除 / 置換

v22.0.0 API v23.0.0 API
AdRequest.Builder.addTestDevice() RequestConfiguration.Builder.setTestDeviceIds()
AdRequest.Builder.tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment()
AdRequest.Builder.setIsDesignedForFamilies() RequestConfiguration.Builder.setMaxAdContentRating()
AdFormat.UNKNOWN 交換なし
AdLoader.Builder.forUnifiedNativeAd() AdLoader.Builder.forNativeAd()
AdLoader.Builder.forCustomTemplateAd() AdLoader.Builder.forCustomFormatAd()
AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.formats.NativeAdOptions) AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.nativead.NativeAdOptions)
void MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

v21 から v22 に移行する

以降のサブセクションでは、Google Mobile Ads SDK (Legacy) のメジャー バージョン 21 と 22 の互換性を破る変更と動作の違いについて説明します。

Google Mobile Ads SDK (Legacy) のバージョンの取得に MobileAds.getVersion() を使用

バージョン 22.0.0 から MobileAds.getVersionString() メソッドが削除され、代わりに MobileAds.getVersion() が導入されました。

新メソッドでは、一般に想定されるような外部バージョン番号(「22.0.0」など)が返されます。この変更の詳細については、Use the new Google Mobile Ads SDK getVersion() method をご覧ください。

非推奨となった NativeCustomFormatAd.getVideoMediaView() の削除

バージョン 21 では、Google Mobile Ads SDK (Legacy) に、ネイティブ広告フォーマット用のメディア アセットを取得できる NativeCustomFormatAd.getVideoMediaView() メソッドが用意されていました。

バージョン 22 からは、ご自身で MediaView を作成してメディア コンテンツを設定し、MediaContent.getVideoController() を使って動画のコントロールを取得する仕組みになっています。

v22

// Called when a custom native ad loads.
@Override
public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) {
    // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder.
    FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder);

    MediaContent mediaContent = ad.getMediaContent();
    if (mediaContent != null && mediaContent.hasVideoContent()) {
        // Create a MediaView and set its media content.
        MediaView mediaView = new MediaView(mediaPlaceholder.getContext());
        mediaView.setMediaContent(mediaContent);
        mediaPlaceholder.addView(mediaView);
    }
}

v21

// Called when a custom native ad loads.
@Override
public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) {
    // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder.
    FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder);

    VideoController videoController = ad.getVideoController();
    if (videoController.hasVideoContent()) {
        // Add the media view provided by the native ad.
        mediaPlaceholder.addView(ad.getVideoMediaView());
    }
}

詳しくは、カスタム ネイティブ広告のガイドをご覧ください。

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

以下の表は、バージョン 22.0.0 の具体的な変更点を示しています。

v21.0.0 v22.0.0
MobileAds.getVersionString() MobileAds.getVersion()
NativeCustomFormatAd.getVideoMediaView() NativeCustomFormatAd.getMediaContent()
NativeCustomFormatAd.getVideoController() NativeCustomFormatAd.getMediaContent().getVideoController()
AdRequest.Builder.setAdInfo() AdRequest.Builder.setAdString()
MediationRewardedVideoAdAdapter Adapter
MediationRewardedVideoAdListener
com.google.android.gms.ads.mediation.VersionInfo com.google.android.gms.ads.VersionInfo
com.google.android.gms.ads.doubleclick.AppEventListener com.google.android.gms.ads.admanager.AppEventListener

v20 から v21 に移行する

以降のサブセクションでは、Google Mobile Ads SDK (Legacy) のメジャー バージョン 20 と 21 の互換性を破る変更と動作の違いについて説明します。

minSdkVersion を 19 以降に更新

バージョン 21.0.0 以降の Google Mobile Ads SDK (Legacy) では、すべてのアプリが Android API レベル 19 以上で稼働していることが求められます。API レベルを調整するには、アプリのビルドファイルで minSdkVersion の値を 19 以上に変更します。

厳密な null 可能性を適用

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

この変更により、Java の null チェック フレームワークを使用しているアプリや Kotlin アプリに null 安全違反があり、以前は安全な方法で null 値を処理していなかった場合、それらのアプリは機能しなくなる可能性があります(null 安全に関する Kotlin ドキュメントをご覧ください)。

addNetworkExtras() メソッドの削除

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

位置情報メソッドの削除

次の位置情報メソッドはバージョン 21.0.0 で削除されます。

  • AdRequest.Builder クラスの setLocation(Location location) メソッド(メディエーション ターゲティング用にユーザーの位置情報を設定する)
  • AdRequest クラスの getLocation() メソッド(setLocation(Location location) メソッドに渡されていたユーザーの地域ターゲティング情報を返す)
  • MediationAdConfiguration クラスの getLocation() メソッド(AdRequest によって定義されている場合にユーザーの位置を返す)

これらの位置情報データを Google が広告のターゲティングに使用することはありません。第三者広告ネットワークに位置情報を渡す必要がある場合は、サードパーティの API をご利用ください。

カスタム イベント インターフェースのサポート終了

カスタム イベントを使用すると、メディエーションをご利用のパブリッシャー様は、アド マネージャーのサポート対象の広告ソースに含まれないウォーターフォールの広告ソースを設定できます。

すべてのカスタム イベント インターフェースは非推奨となり、Adapter クラスと MediationAdLoadCallback インターフェースに置き換えられました。

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

v20.0.0 のインターフェース v21.0.0 のクラス / インターフェース
CustomEvent Adapter
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adapter、 MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

v19 から v20 に移行する

バージョン 20.0.0 には、互換性を破る変更が多数含まれます。バージョン 19.7.0 では、新しい API が多数導入されており、バージョン 20.0.0 に向けた準備措置として非推奨になったクラスや名称が変更されたクラスも多数あります。このガイドでは、バージョン 20.0.0 における主要な変更点を紹介します。

全画面フォーマットの 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)
    }
}

アプリケーションのコールバックの削除をそのままにする

すべての広告フォーマットの onAdLeftApplication コールバックが削除され、ProcessLifecycleOwner に置き換えられました。OS レベルの API を使用すると、広告インタラクションが原因かどうかにかかわらず、ユーザーがアプリを離れるたびに通知されます。

onAdLeftApplication コールバックは、広告クリック ハンドラとして使用することを意図したものではなく、このコールバックに依存してクリックをレポートしても、正確な指標は得られませんでした。たとえば、AdChoices アイコンをクリックして外部ブラウザを起動すると、コールバックが呼び出されますが、クリックとしてカウントされません。

クラス名の変更

次の表に、変更または削除されたクラス名を示します。

  • UnifiedNativeAd に関連するほとんどのクラスの名前が NativeAd に変更されました。
  • MobileAds.Settings、NativeExpressAdView、NativeAppInstallAd、NativeContentAd、InstreamAd の各クラスとビューが削除されました。
  • 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 削除済み
相関値 削除済み
search.SearchAdRequest 削除済み
インターフェース AdRequest.TagForUnderAgeOfConsent 削除済み
インターフェース 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) これで、AndroidManifest.xml にアプリ ID が設定されました。
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()
PublisherAdRequest getGender() 削除済み
getBirthday() 削除済み
getNetworkExtras() 削除済み
setManualImpressionsEnabled() 削除済み
updateCorrelator() 削除済み 広告コンテンツのフィルタリングをご覧ください。
PublisherAdRequest.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) この show メソッドは、より広範な全画面フォーマットのアプローチに準拠しています。
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)
PublisherInterstitialAd new PublisherInterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd で、他のフルスクリーン フォーマットと同じ静的読み込み方法が使用されるようになりました。
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() 削除済み NetworkExtras クラスは非推奨になりました。
AdLoader forContentAd() 削除済み
forAppInstallAd() 削除済み
withCorrelator() 削除済み
getMediationAdapterClassName() 削除済み