העברת SDK

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

מעבר מגרסה 23 לגרסה 24

בקטעי המשנה הבאים מתוארים שינויים שעלולים לשבור את התאימות לאחור והבדלים בהתנהגות בין גרסה 23 לגרסה 24 של Google Mobile Ads SDK.

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

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

שינויים באתחול ובטעינה שעברו אופטימיזציה

כברירת מחדל, ההתראות OPTIMIZE_INITIALIZATION ו-OPTIMIZE_AD_LOADING מוגדרות ל-true. מידע נוסף על הדגלים האלה זמין במאמר אופטימיזציה של האתחול והטעינה.

הוסרו התלויות (dependencies) firebase-ads ו-firebase-ads-lite

החל מגרסה 24.0.0, מהדורות של SDK לא מפיצות יותר את התלות ב-firebase-ads וב-firebase-ads-lite. במקום זאת, צריך להשתמש בתלות play-services-ads.

הוסרו ממשקי API שהוצאו משימוש לשינוי כיוון המודעה במודעות בפתיחת אפליקציה

  • הוסרו שיטות AppOpenAd.load() שמקבלות פרמטר קלט של כיוון. במקום זאת, משתמשים בשיטות AppOpenAd.load() שלא כוללות כיוון.
  • הוסר enum‏ AppOpenAdOrientation.

הודעת קריאה חוזרת פשוטה יותר לגבי תגמול למתאמי גישור

בגרסה 24.0.0 נוסף הקריאה החוזרת (callback) onUserEarnedReward() ב-MediationRewardedAdCallback, והוצא משימוש onUserEarnedReward(RewardItem). מתאמי גישור צריכים להתחיל לקרוא ל-onUserEarnedReward() כשהמשתמש מקבל תגמול.

כשמעבירים קריאות חוזרות (callback) ממתאמי גישור, כל הגרסאות של Google Mobile Ads SDK מחזירות את התגמול שמוגדר בממשק המשתמש של AdMob ב-OnUserEarnedRewardListener.

הכיתות הוסרו

הכיתות הבאות הוסרו ללא החלפה:

  • DynamicHeightSearchAdRequest
  • SearchAdRequest
  • SearchAdView

השיטות הוסרו

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

מחלקה שיטה
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdLoaded()
onRewardedInterstitialAdFailedToLoad(int)
onRewardedInterstitialAdFailedToLoad(LoadAdError)

שיטות שהוצאו משימוש

השיטות הבאות הוצאו משימוש ולא יוחלפו:

מחלקה שיטה
Adapter loadInterscrollerAd()
RtbAdapter loadRtbInterscrollerAd()

מעבר מגרסה 22 לגרסה 23

בקטעי המשנה הבאים מתוארים שינויים שעלולים לשבור את התאימות לאחור והבדלים בהתנהגות בין גרסה 22 לגרסה 23 של Google Mobile Ads SDK.

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

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

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

‫API גרסה v22.0.0 ‫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()

מעבר מגרסה 21 לגרסה 22

בקטעי המשנה הבאים מתוארים שינויים שעלולים לשבור את התאימות לאחור והבדלים בהתנהגות בין גרסה 21 לגרסה 22 של Google Mobile Ads SDK.

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

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

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

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

בטבלה הבאה מפורטים השינויים הספציפיים בגרסה 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

מעבר מגרסה 20 לגרסה 21

בקטעי המשנה הבאים מתוארים שינויים שעלולים לשבור את התאימות לאחור והבדלים בהתנהגות בין גרסה 20 לגרסה 21 של Google Mobile Ads SDK:

צריך לעדכן את minSdkVersion ל-19 ומעלה

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

אכיפת ביטול ערך קפדני

כדי להתכונן לאכיפה של אפשרות קפדנית להגדרת ערך null, נוספו הערות @NonNull לכל ממשקי ה-API שקודם לכן לא הגדירו במפורש אפשרות להגדרת ערך null.

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

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

הוצאה משימוש השיטה addNetworkExtras() שמעבירה פרמטרים נוספים כמופע NetworkExtras למתאם של רשת מודעות ספציפית בגרסה 20.3.0 של ה-SDK, והיא תוסר בגרסה 21.0.0. במקום זאת, צריך להשתמש בשיטה 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:

ממשקים בגרסה v20.0.0 גרסה 21.0.0 Class/ Interface
CustomEvent מתאם
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adapter, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

מעבר מגרסה 19 לגרסה 20

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

עדכונים ב-API של פורמט מסך מלא

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

כל ממשקי ה-API של פורמטים שמוצגים במסך מלא פועלים לפי העקרונות הבאים:

  • שיטת טעינה סטטית
  • מנגנון דומה של קריאה חוזרת או של טיפול בטעינה
  • הסתמכות על המחלקה FullScreenContentCallback לקבלת קריאות חוזרות (callback) של מצגות

הסרת Legacy RewardedVideoAd API

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

ממשק ה-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)
    }
}

עזיבת השיחה החוזרת בנושא הסרת אפליקציה

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

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

שינוי שם של כיתה

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

  • רוב הכיתות שקשורות ל-UnifiedNativeAd שונו ל-NativeAd.
  • הוסרו הכיתות והתצוגות MobileAds.Settings,‏ NativeExpressAdView,‏ NativeAppInstallAd,‏ NativeContentAd ו-InstreamAd.
  • כל המחלקות עם הקידומת Publisher הוחלפו בקידומת AdManager.
  • שם החבילה InterstitialAd השתנה.
‫19.5.0 Class ‫20.0.0 Class
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 עודכנו כדי להתאים לכל הפורמטים של מודעות במסך מלא.
  • התכונות של קורלטור הוסרו.
מחלקה ‫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.
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationCompleteListener) הוצאנו משימוש את מחלקת ההגדרות.
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 זמין באמצעות השיטה AdView, ‏ getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) מודעות מתגמלות משתמשות עכשיו באותה גישה של טעינה סטטית כמו פורמטים אחרים של מודעות במסך מלא.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) ‪RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() הוסר הקריאה החוזרת (callback) משיטת הטעינה הסטטית מספקת מודעה שכבר נטענה.
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)‎ המודעה הביניים משתמשת עכשיו באותה גישה סטטית לטעינה כמו פורמטים אחרים של מודעות במסך מלא.
setAdListener()
בקשתDynamicHeightSearchAd getNetworkExtras() הוסר הוצאנו משימוש את המחלקה NetworkExtras.
AdLoader forContentAd() הוסר
forAppInstallAd() הוסר
withCorrelator() הוסר
‪getMediationAdapterClassName() הוסר