העברת SDK

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

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

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

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

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

ממשק API v22.0.0 ממשק API v23.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()

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

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

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

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

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

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

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

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

אכיפת ערך null מחמיר

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

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

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

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

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

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

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

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

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

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

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

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

ממשקים v20.0.0 גרסה 21.0.0 כיתה/ ממשק
CustomEvent מתאם
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener מתאם, 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 בפורמט מסך מלא פועלים לפי העקרונות הבאים:

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

הסרה מדור קודם של RewardVideoAd 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)
    }
}

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

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

שים לב שהקריאה החוזרת (callback) של onAdLeftApplication מעולם לא הייתה אמורה לשמש כ-handler של קליקים על מודעות, והסתמכות על הקריאה החוזרת הזו לדיווח על קליקים לא הניבה מדד מדויק. לדוגמה, קליק על סמל 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 תוגמלים.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
format.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.TagForByAgeOfConsent הוסר/ה
הממשק 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 של מודעות מתגמלות ושל מודעות מעברון עודכנו כך שיתאימו לכל הפורמטים של מסך מלא.
  • הוסרו תכונות המתאם.
מחלקה ממשק API v19.5.0 ממשק API v20.0.0 הערות
AdSize getPortraitBannerAdSizeWithWidth() getPortfolioanchored AdaptiveBannerAdSize()
getExternalBanner AdSizeWithWidth() getgroundanchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationanchoredAdaptiveBannerAdSize()
MobileAds אתחול(Context, String) MobileAds.firstize(Context, OnInitializationComplete Listener) מזהה האפליקציה מוגדר עכשיו בקובץ AndroidManifest.xml.
אתחול(Context, String, MobileAds.Settings) אתחול(Context, OnInitializationCompleteListener) המחלקה 'הגדרות' הוצאה משימוש.
getZapierVideoAdInstance() הוסר/ה במקום זאת, אפשר להשתמש ב-RewardAd API.
AdListener onAdFailedToLoad(int) onAdנכשלהToLoad(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() למידע נוסף, אפשר לקרוא את המאמר סינון תוכן המודעות.
setTagForLowAgeOfConsent() RequestConfiguration.Builder.setTagForBelowAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() אובייקט ResponseInfo זמין עכשיו דרך שיטת AdView getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) ZapierAd.load(Context, String, AdRequest, RewardedAdLoadCallback) עכשיו, במודעות מתגמלות נעשה שימוש באותה גישה של טעינה סטטית כמו פורמטים אחרים של מסך מלא.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() הוסר/ה הקריאה החוזרת משיטת הטעינה הסטטית מספקת מודעה שכבר נטענה.
הצגה(פעילות, RewardedAdCallback) Show(Activity, OnUserProfitedRewardListener) שיטת התוכנית הזו פועלת בהתאם לגישה הרחבה יותר של פורמט מסך מלא.
RewardedAdLoadCallback onpaidAdנכשלהטעינה של(int) onAdנכשלהToLoad(LoadAdError)
onRewardedAdנכשלהלטעינת(LoadAdError) onAdנכשלהToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdנכשלהטעינה(int) onAdנכשלהToLoad(LoadAdError)
onAppOpenAdנכשלהטעינה(LoadAdError) onAdנכשלהToLoad(LoadAdError)
onAppOpenAdנטען(AppOpenAd) onAdLoaded(AppOpenAd)
קריאה חוזרת (callback) של מודעות מעברון מתגמלות onRewardedInterstitialAdנכשלהלטעינת(int) onAdנכשלהToLoad(LoadAdError)
onRewardedInterstitialAd(נכשלה, LoadAdError) onAdנכשלהToLoad(LoadAdError)
onRewardedInterstitialAdלטעינה(RewardedInterstitialAd) onAdLoaded(RewardedInterstitialAd)
InterstitialAd new InterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) מודעות מעברון נוקטות עכשיו את אותה גישה של טעינה סטטית כמו פורמטים אחרים של מסך מלא.
setAdListener()
DynamicHeightSearchAdבקשה getNetworkExtras() הוסר/ה המחלקה NetworkExtras הוצאה משימוש.
AdLoader forContentAd() הוסר/ה
forAppInstallAd() הוסר/ה
withCorrelator() הוסר/ה
getMediationAdapterClassName() הוסר/ה