نقل حزمة تطوير البرامج (SDK)

تتناول هذه الصفحة عمليات نقل البيانات للإصدارات الحالية والسابقة.

نقل البيانات من الإصدار 22 إلى الإصدار 23

الحد الأدنى لمستوى واجهة برمجة تطبيقات Android هو 21.

بدءًا من الإصدار 23.0.0، تتطلب حزمة SDK لإعلانات Google على الأجهزة الجوّالة أن تكون كل التطبيقات على المستوى 21 من واجهة برمجة تطبيقات Android كحد أدنى لتشغيله. لضبط مستوى واجهة برمجة التطبيقات، يمكنك تغيير minSdkVersion في ملف build.gradle على مستوى التطبيق إلى 21 أو أعلى.

يمكن ربط AdManagerAdRequest.Builder طريقة مكتسبة من الفئة الفائقة

في الإصدار 23.0.0، AdManagerAdRequest.Builder والموروثة من مصدرها الأصلي يمكن ربطها ببعضها البعض لإنشاء 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.

إزالة/استبدال الطرق التي تم إيقافها نهائيًا

الإصدار 22.0.0 من واجهة برمجة التطبيقات الإصدار 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)
إلغاء MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

نقل البيانات من الإصدار 21 إلى الإصدار 22

استخدام MobileAds.getVersion() للحصول على إصدار "SDK لإعلانات Google على الأجهزة الجوّالة"

تمت إزالة طريقة MobileAds.getVersionString() في الإصدار 22.0.0 لصالحه. من MobileAds.getVersion()

تُرجع الطريقة الجديدة رقم الإصدار الخارجي المتوقع — على سبيل المثال، 22.0.0 لمزيد من المعلومات حول هذا التغيير، راجع استخدام تطبيق Google للجوّال الجديد حزمة تطوير البرامج (SDK) للإعلانات getVersion() .

إزالة NativeCustomFormatAd.getVideoMediaView() المتوقّف نهائيًا

في الإصدار 21، قدّمت لك حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" طريقة 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 المحوّل
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، تتطلب حزمة SDK لإعلانات Google على الأجهزة الجوّالة أن تكون كل التطبيقات على الحد الأدنى من المستوى 19 لواجهة برمجة تطبيقات Android لضبط مستوى واجهة برمجة التطبيقات، يمكنك تغيير minSdkVersion في ملف الإصدار لتطبيقك إلى 19 أو أعلى.

فرض قابلية صارمة للقبول

في إطار الاستعداد لفرض قابلية صارمة للقبول، يتم استخدام تعليقات @NonNull التوضيحية: تمت إضافتها في جميع واجهات برمجة التطبيقات التي لم تحدد مسبقًا قابلية القيم الفارغة بشكل صريح.

قد يؤدي هذا التغيير إلى إيقاف تطبيقات Kotlin والتطبيقات التي تستخدم التحقّق من القيم الفارغة في Java. إطار العمل إذا كان هناك انتهاكات لأمان فارغة ولم يتم التعامل معها مسبقًا قيم null بطريقة آمنة (راجِع وثائق Kotlin على إعدادات خالية من الأمان ).

إزالة طريقة addNetworkExtras()

طريقة addNetworkExtras() التي تمرر معلَمات إضافية باعتبارها تم إيقاف مثيل NetworkExtras لمحوِّل شبكة إعلانات معيَّن نهائيًا في حزمة تطوير البرامج (SDK). الإصدار 20.3.0 وستتم إزالته في الإصدار 21.0.0. يمكنك استخدام addNetworkExtrasBundle() من نفس الفئة AdRequest.Builder بدلاً من ذلك.

إزالة طرق تحديد الموقع الجغرافي

في الإصدار 21.0.0، ستتم إزالة طرق المواقع الجغرافية التالية:

  • الطريقة setLocation(Location location) في الفئة AdRequest.Builder التي تضبط موقع المستخدِم الجغرافي لأغراض استهداف التوسّط.
  • الطريقة getLocation() في الفئة AdRequest التي تعرض سلوك المستخدم معلومات الموقع الجغرافي المستهدف التي تم تمريرها سابقًا إلى طريقة setLocation(Location location).
  • تُستخدم الطريقة getLocation() في الفئة MediationAdConfiguration تعرض موقع المستخدم الجغرافي، إذا تم تحديده من خلال AdRequest.

ولا تستخدم Google بيانات الموقع الجغرافي لاستهداف الإعلانات. يجب عليك استخدام واجهات برمجة التطبيقات التابعة لجهات خارجية لتوفير المعلومات إلى شبكات الإعلانات التابعة لجهات خارجية إذا مطلوبة.

إيقاف واجهات الأحداث المخصّصة نهائيًا

تمكّن الأحداث المخصّصة الناشرين الذين يستخدمون التوسّط لإعداد مصدر إعلانات للعرض بدون انقطاع واحد من Ad Manager مصادر الإعلانات المتوافقة

جميع العناصر المخصصة فعالية يتم إيقاف الواجهات لصالح Adapter الفئة MediationAdLoadCallback من واجهة pyplot.

يسرد الجدول أدناه الفئة أو الواجهة المقابلة التي يجب استخدامها لكل واجهة حدث مخصّص بدءًا من الإصدار 21.0.0:

واجهات الإصدار 20.0.0 الإصدار 21.0.0 الفئة/ الواجهة
CustomEvent المحوّل
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener مهايئ، MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

نقل البيانات من الإصدار 19 إلى الإصدار 20

هناك العديد من التغييرات التي قد تؤدي إلى أعطال في الإصدار 20.0.0. طرح الإصدار 19.7.0 والعديد من واجهات برمجة التطبيقات الجديدة، كما تم إيقاف العمل بالعديد من الفئات أو إعادة تسميتها استعدادًا للإصدار 20.0.0. يسلط هذا الدليل الضوء على التغييرات الرئيسية في الإصدار 20.0.0.

تحديثات واجهة برمجة التطبيقات لتنسيق ملء الشاشة

بدءًا من الإصدار 20.0.0، والإعلانات البينية والإعلانات التي تضم مكافأة، والإعلانات البينية التي تضم مكافأة يتم توحيد أشكال الإعلانات على شاشة فتح التطبيق لاتّباع تصميم متناسق لواجهة برمجة التطبيقات.

تستخدم جميع واجهات برمجة التطبيقات لتنسيق ملء الشاشة المبادئ التالية:

  • طريقة التحميل الثابتة
  • آلية مشابهة لرد الاتصال أو معالج التحميل
  • الاعتماد على FullScreenContentCallback فئة استدعاءات العرض التقديمي

إزالة واجهة برمجة التطبيقات لإعلانات ودافيا من خلال الإعلانات القديمة

الأحدث RewardedAd تمّ طرح واجهة برمجة التطبيقات للمرة الأولى في آذار (مارس) 2019، فكانت الأفضل من حيث عدد الإعلانات بمكافأة. واجهة برمجة التطبيقات لأكثر من 18 شهرًا. تحتوي على مزيد من التحسينات مقارنةً بالقديمة واجهة برمجة تطبيقات RewardedVideoAd، بما في ذلك إمكانية تحميل أكثر من إعلان واحد يضم مكافأة في كل مرة.

تمت إزالة واجهة برمجة التطبيقات 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 لجميع أشكال الإعلانات لصالحه من ProcessLifecycleOwner من خلال استخدام واجهة برمجة تطبيقات على مستوى نظام التشغيل، يتم إرسال إشعار إليك كلما غادر المستخدمون تطبيقك، بغض النظر عن سواء كان ذلك بسبب تفاعل مع الإعلان أم لا.

يُرجى العلم أنّ معاودة الاتصال onAdLeftApplication لم يكن الغرض منها أبدًا أن تكون إعلانًا. لم معالج النقرات، ولم ينتج عن الاعتماد على هذا الاستدعاء هذا للإبلاغ عن النقرات مقياس دقيق. على سبيل المثال، يؤدي النقر على رمز "خيارات الإعلان" إلى تشغيل متصفح خارجي استدعى معاودة الاتصال، ولكن لم يتم احتسابه كنقرة.

عمليات إعادة تسمية الصف

يسرد الجدول الوارد أدناه أسماء الفئات المحدّدة التي تم تغييرها أو إزالتها. ضِمن الملخص:

  • تمت إعادة تسمية معظم الصفوف ذات الصلة بـ "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 Rewards.BonusedAdLoadCallback و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.TagForAgeOfConsent تمت الإزالة
طلب واجهة المستخدم.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. باختصار:

  • تمت إزالة طرق الإعداد القديمة من فئة إعلانات الأجهزة الجوّالة.
  • تمّت إزالة بعض الطرق من الفئة AdRequest.Builder(). أو نقله إلى الصف RequestConfiguration.
  • تم تعديل واجهات برمجة التطبيقات للإعلانات التي تضم مكافآت والإعلانات البينية لتتوافق مع جميع بتنسيقات ملء الشاشة.
  • تمت إزالة الميزات الارتباطية.
دورات تدريبية الإصدار 19.5.0 من واجهة برمجة التطبيقات الإصدار 20.0.0 من واجهة برمجة التطبيقات ملاحظات
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds تهيئة(السياق، السلسلة) MobileAds.initialize(Context, OnInitializationCompleteListener) يتم الآن ضبط رقم تعريف التطبيق في AndroidManifest.xml.
تهيئة(السياق، السلسلة، إعدادات الجوال) تهيئة(Context, OnInitializationCompleteListener) تم إيقاف فئة "الإعدادات" نهائيًا.
getRewardedVideoAdInstance() تمت الإزالة يمكنك استخدام واجهة برمجة التطبيقات BonusedAd API بدلاً من ذلك.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() تمت الإزالة تستخدم أشكال إعلانات ملء الشاشة ميزة FullscreenContentCallback بدلاً من AdListener، ولا تتوفّر طريقة مكافئة على 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 uploadAd(AdRequest, BonusedAdLoadCallback) BonusedAd.load(Context, String, AdRequest, ConversationedAdLoadCallback) يستخدم الإعلان بمكافأة الآن أسلوب التحميل الثابت نفسه الذي تستخدمه بتنسيقات ملء الشاشة.
loadAd(PublisherAdRequest, BonusedAdLoadCallback) BonusedAd.load(Context, String, AdManagerAdRequest, BonusedAdLoadCallback)
isLoaded() تمت الإزالة يوفر رد الاتصال من طريقة التحميل الثابت إعلانًا تم تحميله مسبقًا.
show(Activity, كافedAdCallback) show(Activity, OnUserLearnedREWARDListener) تتوافق طريقة العرض هذه مع نهج تنسيق ملء الشاشة الأوسع نطاقًا.
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() بينيAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) يستخدم الإعلان البيني الآن أسلوب التحميل الثابت نفسه الذي يتم استخدامه بتنسيقات أخرى بملء الشاشة.
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() تمت الإزالة تم إيقاف فئة NetworkExtras نهائيًا.
AdLoader forContentAd() تمت الإزالة
forAppInstallAd() تمت الإزالة
withCorrelator() تمت الإزالة
getMediationAdapterClassName() تمت الإزالة