مهاجرت SDK

این صفحه مهاجرت های نسخه های فعلی و قبلی را پوشش می دهد.

به SDK نسخه 21 مهاجرت کنید

برای جلوگیری از شکست‌های احتمالی ساخت با نسخه 21.0.0 Google Mobile Ads SDK (برای انتشار اوایل 2022 برنامه ریزی شده است)، بررسی‌ها و دستورالعمل‌های معرفی‌شده در این راهنما را دنبال کنید.

minSdkVersion را به 19 یا بالاتر به روز کنید

از نسخه 21.0.0، Google Mobile Ads SDK به همه برنامه‌ها نیاز دارد که حداقل در سطح 19 API Android باشند تا اجرا شوند. برای تنظیم سطح API، مقدار minSdkVersion در فایل ساخت برنامه خود را به 19 یا بالاتر تغییر دهید.

ابطال پذیری شدید را اعمال کنید

در آماده‌سازی برای اعمال پوچ‌پذیری دقیق، حاشیه‌نویسی‌های @NonNull در همه API‌هایی که قبلاً به‌صراحت قابلیت تهی را تعریف نکرده بودند، اضافه می‌شوند.

این تغییر ممکن است برنامه‌های Kotlin و برنامه‌هایی را که از چارچوب‌های بررسی تهی جاوا استفاده می‌کنند، در صورتی که نقض‌های ایمنی تهی وجود داشته باشد و قبلاً مقادیر null را به روشی ایمن مدیریت نکرده‌اند، خراب کند (به مستندات Kotlin در مورد ایمنی Null مراجعه کنید).

حذف متد addNetworkExtras()

addNetworkExtras() که پارامترهای اضافی را به عنوان نمونه NetworkExtras به یک آداپتور شبکه تبلیغاتی خاص ارسال می‌کند در SDK نسخه 20.3.0 منسوخ شده است و در نسخه 21.0.0 حذف خواهد شد. به جای آن از متد addNetworkExtrasBundle() از همان کلاس AdRequest.Builder استفاده کنید.

حذف روش های مکان یابی

روش های مکان یابی زیر در نسخه 21.0.0 حذف خواهند شد:

  • setLocation(Location location) در کلاس AdRequest.Builder که مکان کاربر را برای اهداف میانجی‌گری تعیین می‌کند.
  • متد getLocation getLocation() در کلاس AdRequest که اطلاعات مکان یابی کاربر را که قبلاً به setLocation(Location location) ارسال شده برمی گرداند.
  • متد getLocation() در کلاس MediationAdConfiguration که مکان کاربر را برمی‌گرداند، اگر توسط AdRequest تعریف شده باشد.

داده های مکان توسط گوگل برای هدف قرار دادن تبلیغات استفاده نمی شود. در صورت نیاز باید از API های شخص ثالث برای ارائه اطلاعات به شبکه های تبلیغاتی شخص ثالث استفاده کنید.

منسوخ شدن رابط های رویداد سفارشی

رویدادهای سفارشی ناشران را با استفاده از میانجیگری AdMobقادر می‌سازد تا میانجی‌گری آبشاری را برای شبکه تبلیغاتی که یکی از شبکه‌های تبلیغاتی پشتیبانی‌شدهAdMobنیست، اضافه کنند.

تمام رابط های رویداد سفارشی به نفع کلاس Adapter و رابط MediationAdLoadCallback منسوخ شده اند.

جدول زیر کلاس یا رابط مربوطه را فهرست می کند که باید برای هر رابط رویداد سفارشی از نسخه 21.0.0 استفاده شود:

رابط های v20.0.0 کلاس / رابط نسخه 21.0.0
رویداد سفارشی آداپتور
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، قالب‌های تبلیغاتی بینابینی، با پاداش، پاداش‌دهی شده و برنامه Open برای پیروی از یک طراحی API سازگار استاندارد شده‌اند.

همه APIهای فرمت تمام صفحه از اصول زیر استفاده می کنند:

  • یک روش بار استاتیک
  • یک مکانیسم بازخوانی یا کنترل کننده بار مشابه
  • برای فراخوانی ارائه به کلاس FullScreenContentCallback تکیه کنید

حذف API Legacy RewardedVideoAd

RewardedAd API جدیدتر برای اولین بار در مارس 2019 معرفی شد و برای بیش از 18 ماه بهترین API پاداش دار بوده است. در مقایسه با RewardedVideoAd API قدیمی، پیشرفت‌های بیشتری داشته است، از جمله توانایی بارگیری بیش از یک آگهی پاداش در یک زمان.

API قدیمی RewardedVideoAd در SDK نسخه 20.0.0 حذف شده است.

منسوخ شدن بنر هوشمند به نفع بنر تطبیقی

تبلیغات بنری هوشمند به نفع تبلیغات بنری تطبیقی ​​منسوخ شده است. بنرهای تطبیقی ​​عملکرد برتر و انعطاف پذیری بیشتری را در تنظیم عرض آگهی ارائه می دهند. اگر ترجیح می دهید به استفاده از بنرهای تمام عرض ادامه دهید، همانطور که در قطعه کد زیر نشان داده شده است، همچنان می توان با استفاده از بنر تطبیقی ​​این کار را انجام داد:

جاوا

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

کاتلین

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 حذف شده است. استفاده از یک 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
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 منتقل شده اند.
  • API های RewardedAd و InterstitialAd به روز شده اند تا با همه فرمت های تمام صفحه هماهنگ شوند.
  • ویژگی های همبسته حذف شده است.
کلاس v19.5.0 API v20.0.0 API یادداشت
AdSize getPortraitBanner AdSizeWithWidth() getPortraitAnchored AdaptiveBannerAdSize()
getLandscapeBanner AdSizeWithWidth() getLandscapeAnchored AdaptiveBannerAdSize()
getCurrentOrientation BannerAdSizeWithWidth() getCurrentOrientationAnchored AdaptiveBannerAdSize()
تبلیغات موبایلی مقداردهی اولیه (زمینه، رشته) MobileAds.initialize (Context، OnInitializationComplete Liner) شناسه برنامه اکنون در AndroidManifest.xml تنظیم شده است.
مقداردهی اولیه (Context، String، MobileAds.Settings) مقداردهی اولیه (Context، OnInitializationComplete Lister) کلاس تنظیمات منسوخ شده است.
getRewardedVideo AdInstance() حذف شده به جای آن از RewardedAd API استفاده کنید.
AdListener onAdFailedToLoad(int) onAd FailedToLoad (LoadAdError)
onAdLeftApplication() حذف شده قالب‌های تبلیغات تمام‌صفحه از FullscreenContentCallback به جای AdListener استفاده می‌کنند و هیچ روش مشابهی در FullscreenContentCallback وجود ندارد. این روش از AdListener حذف شده است.
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() حذف شده
getBirthday() حذف شده
getNetworkExtras() حذف شده
setManualImpressions Enabled() حذف شده
updateCorrelator() حذف شده فیلتر کردن محتوای آگهی را ببینید.
AdRequest.Builder setBirthday() حذف شده
setGender() حذف شده
setIsDesignedForFamilies() حذف شده راهنما را ببینید.
addTestDevice() RequestConfiguration .Builder .setTestDeviceIds() فعال کردن تبلیغات آزمایشی را ببینید.
tagForChildDirectedTreatment() RequestConfiguration .Builder.setTagFor ChildDirectedTreatment() فیلتر کردن محتوای آگهی را ببینید.
setTagFor UnderAgeOfConsent() RequestConfiguration .Builder.setTagFor UnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration .Builder .setMaxAdContentRating()
AdView getMediationAdapter ClassName() ResponseInfo .getMediationAdapter ClassName() یک شی ResponseInfo اکنون از طریق متد AdView ()getResponseInfo در دسترس است.
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
Rewarded Ad loadAd (AdRequest، RewardedAdLoadCallback) RewardedAd.load (Context، رشته، AdRequest، RewardedAdLoadCallback) RewardedAd اکنون از همان رویکرد بارگذاری ثابت مانند سایر قالب‌های تمام صفحه استفاده می‌کند.
loadAd (PublisherAdRequest، RewardedAdLoadCallback) RewardedAd.load (Context، String، AdManagerAdRequest، RewardedAdLoadCallback)
isLoaded() حذف شده تماس برگشتی از روش بارگذاری استاتیک، تبلیغی را ارائه می دهد که قبلاً بارگذاری شده است.
نمایش (فعالیت، RewardedAdCallback) نمایش (فعالیت، OnUserEarnedRewardListener) این روش نمایش به رویکرد گسترده تر قالب تمام صفحه پایبند است.
RewardedAdLoadCallback onRewardedAd FailedToLoad(int) onAd FailedToLoad (LoadAdError)
onRewardedAd FailedToLoad (LoadAdError) onAd FailedToLoad (LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAd FailedToLoad(int) onAd FailedToLoad (LoadAdError)
onAppOpenAd FailedToLoad (LoadAdError) onAd FailedToLoad (LoadAdError)
onAppOpenAd بارگیری شد (AppOpenAd) onAdLoaded (AppOpenAd)
RewardedInterstitialAdLoad Callback onRewardedInterstitialAd FailedToLoad(int) onAd FailedToLoad (LoadAdError)
onRewardedInterstitialAd FailedToLoad(LoadAdError) onAd FailedToLoad (LoadAdError)
onRewardedInterstitialAd Loaded(RewardedInterstitialAd) در آگهی بارگیری شد (تبلیغ بین‌المللی با پاداش)
InterstitialAd جدید InterstitialAd() InterstitialAd.load (Context، String، AdRequest، InterstitialAdLoadCallback) InterstitialAd اکنون از همان رویکرد بارگذاری ثابت مانند سایر فرمت های تمام صفحه استفاده می کند.
setAdListener()
درخواست تبلیغ DynamicHeightSearch getNetworkExtras() حذف شده کلاس NetworkExtras منسوخ شده است.
AdLoader forContentAd() حذف شده
forAppInstallAd() حذف شده
withCorrelator() حذف شده
getMediationAdapter ClassName() حذف شده