การย้ายข้อมูล SDK

หน้านี้ครอบคลุมการย้ายข้อมูลสำหรับเวอร์ชันปัจจุบันและเวอร์ชันก่อนหน้า

ย้ายข้อมูลจาก v22 ไปยัง v23

ระดับ API ขั้นต่ำของ Android คือ 21

ตั้งแต่เวอร์ชัน 23.0.0 เป็นต้นไป SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google จะกำหนดให้แอปทั้งหมดใช้ Android API ระดับ 21 เป็นอย่างต่ำจึงจะทำงานได้ หากต้องการปรับระดับ 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 ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่ใช้เมธอด 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 เป็นต้นไป SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google จะกำหนดให้แอปทั้งหมดใช้ Android API ระดับ 19 เป็นอย่างน้อยจึงจะทำงานได้ หากต้องการปรับระดับ API ให้เปลี่ยนค่า minSdkVersion ในไฟล์บิลด์ของแอปเป็น 19 ขึ้นไป

บังคับใช้ Nullability ที่เข้มงวด

เราได้เพิ่มคำอธิบายประกอบ @NonNull ลงใน API ทั้งหมดที่ก่อนหน้านี้ไม่ได้กำหนดค่าที่อนุญาต Null อย่างชัดเจน เพื่อเตรียมพร้อมสำหรับการบังคับใช้ค่าที่อนุญาต Null อย่างเข้มงวด

การเปลี่ยนแปลงนี้อาจทำให้แอป Kotlin และแอปที่ใช้เฟรมเวิร์กการตรวจสอบค่า Null ของ Java ใช้งานไม่ได้ หากมีการละเมิด Null Safety และก่อนหน้านี้ไม่ได้จัดการค่า null ในลักษณะที่ปลอดภัย (ดูเอกสารประกอบของ Kotlin เกี่ยวกับ Null Safety)

การนำเมธอด 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 จะไม่ใช้ข้อมูลตําแหน่งเพื่อกําหนดเป้าหมายโฆษณา คุณควรใช้ API ของบุคคลที่สามเพื่อส่งข้อมูลไปยังเครือข่ายโฆษณาบุคคลที่สาม หากจําเป็น

การเลิกใช้งานอินเทอร์เฟซเหตุการณ์ที่กําหนดเอง

เหตุการณ์ที่กําหนดเองช่วยให้ผู้เผยแพร่โฆษณาที่ใช้การแสดงโฆษณาสื่อกลาง AdMob ตั้งค่าแหล่งที่มาของโฆษณาสื่อกลางตามลําดับขั้นที่ไม่ใช่ AdMobแหล่งที่มาของโฆษณาที่รองรับได้

อินเทอร์เฟซเหตุการณ์ที่กําหนดเองทั้งหมดเลิกใช้งานแล้ว และใช้คลาส Adapter และอินเทอร์เฟซ MediationAdLoadCallback แทน

ตารางด้านล่างแสดงคลาสหรืออินเทอร์เฟซที่เกี่ยวข้องซึ่งควรใช้สำหรับอินเทอร์เฟซเหตุการณ์ที่กําหนดเองแต่ละรายการตั้งแต่เวอร์ชัน 21.0.0 เป็นต้นไป

อินเทอร์เฟซ v20.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 สําหรับการเรียกกลับของงานนำเสนอ

การนำ RewardedVideoAd API เดิมออก

API เวอร์ชันใหม่ RewardedAd ได้เปิดตัวครั้งแรกเมื่อเดือนมีนาคม 2019 และถือเป็น API แบบให้รางวัลที่ได้รับความนิยมมาเป็นเวลากว่า 18 เดือน โดยมีการปรับปรุงมากกว่าRewardedVideoAd API รุ่นเดิม รวมถึงความสามารถในการโหลดโฆษณาที่มีการให้รางวัลได้มากกว่า 1 รายการพร้อมกัน

ระบบนํา RewardedVideoAd API เดิมออกใน SDK เวอร์ชัน 20.0.0

การเลิกใช้งานแบนเนอร์อัจฉริยะเพื่อเปลี่ยนไปใช้แบนเนอร์แบบปรับขนาดได้

เราเลิกใช้งานโฆษณาแบนเนอร์อัจฉริยะแล้วเพื่อหันมาใช้โฆษณาแบนเนอร์แบบปรับขนาดได้แทน แบนเนอร์แบบปรับขนาดได้มีประสิทธิภาพเหนือกว่าและมีความยืดหยุ่นมากขึ้นในการกำหนดความกว้างของโฆษณา หากต้องการใช้แบนเนอร์แบบเต็มความกว้างต่อไป คุณยังคงใช้แบนเนอร์แบบปรับขนาดได้ได้ตามตัวอย่างข้อมูลโค้ดต่อไปนี้

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 ระดับระบบปฏิบัติการจะแจ้งให้คุณทราบทุกครั้งที่ผู้ใช้ออกจากแอป ไม่ว่าจะเกิดจากการโต้ตอบกับโฆษณาหรือไม่ก็ตาม

โปรดทราบว่าการเรียกกลับ 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 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 นำออกแล้ว
สหสัมพันธ์ นำออกแล้ว
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
  • เราได้อัปเดต RewardedAd และ InterstitialAd API ให้สอดคล้องกับรูปแบบแบบเต็มหน้าจอทั้งหมดแล้ว
  • นำฟีเจอร์ตัวเชื่อมโยงออกแล้ว
ระดับ 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() นำออกแล้ว การเรียกกลับจากเมธอดการโหลดแบบคงที่จะให้โฆษณาที่โหลดไว้แล้ว
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() นำออกแล้ว