העברת SDK

בדף הזה מוסבר איך מבצעים העברות לגרסה הנוכחית ולגרסאות קודמות.

מעבר מגרסת v22 ל-v23

רמת ה-API המינימלית ב-Android היא 21

החל מגרסה 23.0.0, כדי להריץ את Google Mobile Ads SDK, כל האפליקציות צריכות להיות ברמת API ‏21 ומעלה ל-Android. כדי לשנות את רמת ה-API, משנים את הערך של minSdkVersion בקובץ build.gradle ברמת האפליקציה ל-21 ומעלה.

שיטות שהוצאו משימוש הוסרו או הוחלפו

API מגרסה 22.0.0 API מגרסה 23.0.0
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

שימוש ב-MobileAds.getVersion() כדי לקבל את גרסת Google Mobile Ads SDK

השיטה MobileAds.getVersionString() הוסרה בגרסה 22.0.0 לטובת MobileAds.getVersion().

השיטה החדשה מחזירה את מספר הגרסה החיצוני הצפוי – לדוגמה, 22.0.0. מידע נוסף על השינוי הזה זמין במאמר שימוש ב-method‏ getVersion()‎ החדש של Google Mobile Ads SDK.

שיטות שהוסרו או הוחלפו

בטבלה הבאה מפורטים השינויים הספציפיים בגרסה 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 מתאם
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 בקובץ ה-build של האפליקציה ל-19 ומעלה.

אכיפת תנאי נכונות קפדני של ערך null

כהכנה לאכיפה מחמירה של יכולת החזקה של ערך (nullability), נוספו הערות @NonNull לכל ממשקי ה-API שלא הגדירו בעבר במפורש את יכולת החזקה של ערך.

השינוי הזה עלול לשבש את האפליקציות של Kotlin ואת האפליקציות שמשתמשות במסגרות של בדיקת null ב-Java, אם יש הפרות של אבטחת null ולא טופלו בעבר ערכים של null באופן בטוח (ראו מסמכי התיעוד של Kotlin בנושא אבטחת null).

הסרה של השיטה addNetworkExtras()‎

השיטה addNetworkExtras(), שמעבירה פרמטרים נוספים כמכונה של NetworkExtras למתאם ספציפי של רשת מודעות, הוצאה משימוש בגרסה 20.3.0 של ה-SDK ותוסרה בגרסה 21.0.0. במקום זאת, צריך להשתמש ב-method‏ addNetworkExtrasBundle() מאותה כיתה AdRequest.Builder.

הסרה של שיטות למיקום

שיטות המיקום הבאות יוסרו בגרסה 21.0.0:

  • השיטה setLocation(Location location) בכיתה AdRequest.Builder שמגדירה את המיקום של המשתמש למטרות טירגוט של תהליך בחירת הרשת.
  • השיטה getLocation() בכיתה AdRequest שמחזירה את פרטי הטירגוט לפי מיקום של המשתמש שהועברו בעבר לשיטה setLocation(Location location).
  • השיטה getLocation() בכיתה MediationAdConfiguration שמחזירה את המיקום של המשתמש, אם הוא מוגדר על ידי AdRequest.

Google לא משתמשת בנתוני המיקום כדי לטרגט מודעות. אם צריך, צריך להשתמש בממשקי API של צד שלישי כדי לספק את המידע לרשתות מודעות של צד שלישי.

הוצאה משימוש של ממשקי אירועים מותאמים אישית

אירועים מותאמים אישית מאפשרים לבעלי אפליקציות שמשתמשים בתהליך בחירת הרשת (Mediation) שלAdMob להגדיר מקור מודעות ב-Waterfall שאינו אחד ממקורות המודעות הנתמכים של AdMob.

כל ממשקי האירועים המותאמים אישית הוצאו משימוש לטובת הכיתה Adapter והממשק MediationAdLoadCallback.

בטבלה הבאה מפורטים הממשק או המחלקה התואמים שצריך להשתמש בהם לכל ממשק אירוע מותאם אישית, החל מגרסה 21.0.0:

ממשקים של גרסה 20.0.0 סיווג/ ממשק v21.0.0
CustomEvent מתאם
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 להודעות חזרה (callbacks) של שיתוף המסך

הסרה של ה-API הקודם של RewardedVideoAd

ה-API החדש יותר, RewardedAd, הוצג לראשונה במרץ 2019 והוא ה-API המועדף לקבלת פרסים כבר יותר מ-18 חודשים. הוא כולל שיפורים רבים יותר בהשוואה ל-RewardedVideoAd API הקודם, כולל היכולת לטעון יותר ממודעה מתגמלת אחת בכל פעם.

ממשק ה-API הקודם RewardedVideoAd הוסר בגרסה 20.0.0 של ה-SDK.

הוצאה משימוש של מודעות באנר חכמות לטובת מודעות באנר מותאמות

מודעות באנר חכמות הוצאו משימוש לטובת מודעות באנר מותאמות. מודעות באנר מותאמות מספקות ביצועים טובים יותר וגמישות רבה יותר בהגדרת רוחב המודעה. אם אתם מעדיפים להמשיך להשתמש במודעות באנר ברוחב מלא, עדיין תוכלו לעשות זאת באמצעות מודעות באנר מותאמות, כפי שמתואר בקטע הקוד הבא:

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

הסרת קריאה חוזרת (callback) של בקשת הצטרפות לאפליקציה

הוסר הקריאה החוזרת (callback) של onAdLeftApplication לכל הפורמטים של המודעות, והיא הוחלפה ב-ProcessLifecycleOwner. שימוש בממשק API ברמת מערכת ההפעלה מאפשר לקבל התראות בכל פעם שמשתמשים יוצאים מהאפליקציה, גם אם הם עושים זאת כתוצאה מאינטראקציה עם מודעה וגם אם לא.

חשוב לזכור שהקריאה החוזרת (callback) onAdLeftApplication לא נועדה אף פעם להיות טיפול בקליק על מודעה, והסתמכות על הקריאה החוזרת הזו לדיווח על קליקים לא הניבה מדד מדויק. לדוגמה, קליק על סמל AdChoices שהפעיל דפדפן חיצוני גרם לקריאה החוזרת, אבל לא נספר כקליק.

שינוי שמות של כיתות

בטבלה הבאה מפורטים שמות ספציפיים של כיתות ששונו או הוסרו. לסיכום:

  • שם רוב הכיתות שקשורות ל-UnifiedNativeAd השתנה ל-NativeAd.
  • הכיתות והתצוגות MobileAds.Settings,‏ NativeExpressAdView,‏ NativeAppInstallAd,‏ NativeContentAd ו-InstreamAd הוסרו.
  • כל הכיתות עם הקידומת Publisher הוחלפו בקידומת AdManager.
  • שם החבילה InterstitialAd השתנה.
19.5.0 Class Class 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 הוסר
ממשק 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 עודכנו בהתאם לכל הפורמטים במסך מלא.
  • תכונות המתאמים הוסרו.
מחלקה API מגרסה 19.5.0 API מגרסה 20.0.0 הערות
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()‎
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()‎
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()‎
MobileAds initialize(Context, String) MobileAds.initialize(Context, OnInitializationCompleteListener) מזהה האפליקציה מוגדר עכשיו ב-AndroidManifest.xml.
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationCompleteListener) הכיתה Settings הוצאה משימוש.
getRewardedVideoAdInstance()‎ הוסר במקום זאת, כדאי להשתמש ב-RewardedAd API.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() הוסר בפורמטים של מודעות במסך מלא נעשה שימוש ב-FullscreenContentCallback במקום ב-AdListener, ואין שיטה מקבילה ב-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 זמין עכשיו דרך השיטה getResponseInfo()‎ של AdView.
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() הוסר קריאת החזרה (callback) מ-method הטעינה הסטטי מספק מודעה שכבר נטענה.
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 new InterstitialAd()‎ InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) מודעות InterstitialAd משתמשות עכשיו באותה גישה של טעינה סטטית כמו בפורמטים אחרים של מודעות במסך מלא.
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() הוסר הכיתה NetworkExtras הוצאה משימוש.
AdLoader forContentAd()‎ הוסר
forAppInstallAd()‎ הוסר
withCorrelator() הוסר
getMediationAdapterClassName() הוסר