SDK の移行

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

v22 から v23 に移行する

最小 Android API レベルは 21

バージョン 23.0.0 以降の Google Mobile Ads SDK では、すべてのアプリが 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 のバージョンの取得に MobileAds.getVersion() を使用

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

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

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

Google Mobile Ads SDK バージョン 21 では、ネイティブ広告フォーマット用のメディア アセットを取得できる 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 に移行する

minSdkVersion を 19 以降に更新

バージョン 21.0.0 以降の Google Mobile Ads SDK では、すべてのアプリが 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 をご利用ください。

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

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

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

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

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()
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) この表示メソッドは、より広範な全画面フォーマットのアプローチに基づいています。
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() 削除済み