Di chuyển SDK

Trang này trình bày cách di chuyển đối với phiên bản hiện tại và phiên bản cũ.

Chuyển từ phiên bản 22 sang phiên bản 23

Cấp độ API Android tối thiểu là 21

Kể từ phiên bản 23.0.0, SDK Quảng cáo của Google trên thiết bị di động yêu cầu tất cả các ứng dụng đều phải sử dụng API Android cấp 21 trở lên. Để điều chỉnh cấp độ API, hãy thay đổi giá trị của minSdkVersion trong tệp build.gradle cấp ứng dụng thành 21 trở lên.

Đã xoá/thay thế các phương thức không dùng nữa

API phiên bản 22.0.0 API phiên bản 23.0.0
AdRequest.Builder.addTestDevice() RequestConfiguration.Builder.setTestDeviceIds()
AdRequest.Builder.tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment()
AdRequest.Builder.setIsDesignedForFamilies() RequestConfiguration.Builder.setMaxAdContentRating()
AdFormat.UNKNOWN Không có thiết bị thay thế
AdLoader.Builder.forUnifiedNativeAd() AdLoader.Builder.forNativeAd()
AdLoader.Builder.forCustomTemplateAd() AdLoader.Builder.forCustomFormatAd()
tagmanager.Builder.withuyênOptions(com.google.android.gms.ads.formats.tagmanagerOptions) Trình quản lý nội dungnativead
vô hiệu MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

Chuyển từ phiên bản 21 sang phiên bản 22

Sử dụng MobileAds.getVersion() để tải phiên bản SDK Quảng cáo của Google trên thiết bị di động

Phương thức MobileAds.getVersionString() bị xoá trong phiên bản 22.0.0 và thay vào đó là MobileAds.getVersion().

Phương thức mới sẽ trả về số phiên bản bên ngoài dự kiến – ví dụ: 22.0.0. Để biết thêm thông tin về thay đổi này, hãy xem nội dung Sử dụng phương thức getVersion() của SDK Quảng cáo của Google trên thiết bị di động mới.

Phương thức bị xoá hoặc thay thế

Bảng dưới đây liệt kê các thay đổi cụ thể trong phiên bản 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 Bộ chuyển đổi
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

Chuyển từ phiên bản 20 sang phiên bản 21

Cập nhật minSdkVersion lên phiên bản 19 trở lên

Kể từ phiên bản 21.0.0, SDK Quảng cáo của Google trên thiết bị di động yêu cầu tất cả các ứng dụng đều phải sử dụng API Android cấp 19 trở lên. Để điều chỉnh cấp độ API, hãy thay đổi giá trị của minSdkVersion trong tệp bản dựng của ứng dụng thành 19 trở lên.

Thực thi tính chất rỗng nghiêm ngặt

Để chuẩn bị cho việc thực thi tính chất rỗng nghiêm ngặt, chú giải @NonNull sẽ được thêm vào tất cả các API trước đây chưa xác định rõ ràng tính chất rỗng.

Thay đổi này có thể phá vỡ các ứng dụng Kotlin và ứng dụng sử dụng khung kiểm tra giá trị rỗng của Java nếu có lỗi vi phạm về độ an toàn rỗng và trước đó chưa xử lý các giá trị null một cách an toàn (xem tài liệu Kotlin về Null-safety).

Xoá phương thức addNetworkExtras()

Phương thức addNetworkExtras() truyền các thông số bổ sung dưới dạng bản sao NetworkExtras đến một bộ chuyển đổi mạng quảng cáo cụ thể đã ngừng hoạt động trong SDK phiên bản 20.3.0 và sẽ bị xoá trong phiên bản 21.0.0. Thay vào đó, hãy sử dụng phương thức addNetworkExtrasBundle() từ cùng một lớp AdRequest.Builder.

Xoá các phương thức định vị

Các phương thức định vị sau đây sẽ bị xoá trong phiên bản 21.0.0:

  • Phương thức setLocation(Location location) trong lớp AdRequest.Builder sẽ đặt vị trí của người dùng cho mục đích nhắm mục tiêu dàn xếp.
  • Phương thức getLocation() trong lớp AdRequest trả về thông tin nhắm mục tiêu theo vị trí của người dùng trước đó đã được chuyển đến phương thức setLocation(Location location).
  • Phương thức getLocation() trong lớp MediationAdConfiguration trả về vị trí của người dùng, nếu được AdRequest xác định.

Google không sử dụng dữ liệu vị trí để nhắm mục tiêu quảng cáo. Nếu bắt buộc, bạn nên sử dụng API của bên thứ ba để cung cấp thông tin cho các mạng quảng cáo của bên thứ ba.

Ngừng sử dụng giao diện sự kiện tuỳ chỉnh

Sự kiện tuỳ chỉnh cho phép nhà xuất bản sử dụng tính năng Dàn xếp AdMob để thiết lập một nguồn quảng cáo dạng thác nước không phải là một trong những nguồn quảng cáo được hỗ trợ của AdMob.

Tất cả các giao diện sự kiện tuỳ chỉnh sẽ ngừng hoạt động và thay vào đó là lớp Adapter và giao diện MediationAdLoadCallback.

Bảng dưới đây liệt kê các lớp hoặc giao diện tương ứng sẽ được dùng cho từng giao diện sự kiện tuỳ chỉnh kể từ phiên bản 21.0.0:

Giao diện phiên bản 20.0.0 Lớp/ Giao diện phiên bản 21.0.0
CustomEvent Bộ chuyển đổi
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Trình chuyển đổi, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Chuyển từ phiên bản 19 sang phiên bản 20

Có nhiều thay đổi có thể gây lỗi trong phiên bản 20.0.0. Phiên bản 19.7.0 giới thiệu nhiều API mới, ngừng sử dụng hoặc đổi tên nhiều lớp để chuẩn bị cho phiên bản 20.0.0. Hướng dẫn này nêu bật những thay đổi chính trong phiên bản 20.0.0.

Nội dung cập nhật về API theo định dạng toàn màn hình

Kể từ phiên bản 20.0.0, các định dạng quảng cáo xen kẽ, quảng cáo có tặng thưởng, quảng cáo xen kẽ có tặng thưởng và Quảng cáo khi mở ứng dụng được chuẩn hoá để tuân theo một thiết kế API nhất quán.

Tất cả API theo định dạng toàn màn hình đều tuân theo những nguyên tắc sau:

  • Phương thức tải tĩnh
  • Cơ chế tải lệnh gọi lại hoặc trình xử lý tương tự
  • Sử dụng lớp FullScreenContentCallback để gọi lại bản trình bày

Xoá API Lifecycle cũ

API RewardedAd mới được ra mắt lần đầu vào tháng 3 năm 2019 và đã là API có tặng thưởng được ưa thích trong hơn 18 tháng qua. API này có nhiều tính năng nâng cao hơn so với API RewardedVideoAd cũ, bao gồm cả khả năng tải nhiều quảng cáo có tặng thưởng cùng một lúc.

API RewardedVideoAd cũ sẽ bị xoá trong SDK phiên bản 20.0.0.

Biểu ngữ thông minh sẽ ngừng hoạt động và thay vào đó là biểu ngữ thích ứng

Quảng cáo biểu ngữ thông minh sẽ ngừng hoạt động và thay vào đó là quảng cáo biểu ngữ thích ứng. Biểu ngữ thích ứng mang lại hiệu suất vượt trội và tính linh hoạt cao hơn trong việc đặt chiều rộng quảng cáo. Nếu muốn tiếp tục sử dụng biểu ngữ có chiều rộng đầy đủ, bạn vẫn có thể làm việc này bằng cách sử dụng biểu ngữ thích ứng, như minh hoạ trong đoạn mã sau:

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

Xoá lệnh gọi lại ứng dụng

Lệnh gọi lại onAdLeftApplication cho tất cả các định dạng quảng cáo đã bị xoá và thay vào đó là ProcessLifecycleOwner. Khi sử dụng API cấp hệ điều hành, bạn sẽ nhận được thông báo mỗi khi người dùng rời khỏi ứng dụng, bất kể việc đó có phải là do một lượt tương tác với quảng cáo hay không.

Xin lưu ý rằng lệnh gọi lại onAdLeftApplication chưa bao giờ được dùng để trở thành trình xử lý lượt nhấp vào quảng cáo. Việc dựa vào lệnh gọi lại này để báo cáo lượt nhấp đã không tạo ra chỉ số chính xác. Ví dụ: một lượt nhấp vào biểu tượng Lựa chọn quảng cáo chạy một trình duyệt bên ngoài đã kích hoạt lệnh gọi lại, nhưng không được tính là một lượt nhấp.

Đổi tên lớp

Bảng dưới đây liệt kê một số tên lớp cụ thể đã thay đổi hoặc bị xoá. Tóm tắt:

  • Hầu hết các lớp liên quan đến UnifiedNativeAd đều đã được đổi tên thành NativeAd.
  • Các lớp và khung hiển thị MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAdInstreamAd đều đã bị xoá.
  • Tất cả các lớp có tiền tố Publisher đã được thay thế bằng tiền tố AdManager.
  • Tên gói InterstitialAd đã thay đổi.
Lớp 19.5.0 Lớp 20.0.0
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener AdX.LoadCallback và 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
định dạng.NativeNative.On phongLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
MobileAds.Settings Đã xóa
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView Đã xóa
instream.InstreamAd Đã xóa
mediation.admob.AdMobExtras Đã xóa
Bộ tương quan Đã xóa
search.SearchAdRequest Đã xóa
Giao diện AdRequest.TagForUnderAgeOfConsent Đã xóa
Giao diện AdRequest.MaxAdContentRating Đã xóa
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

Đã xoá/thay thế một số phương thức

Bảng dưới đây liệt kê các thay đổi cụ thể trong phiên bản 20.0.0. Tóm tắt:

  • Các phương thức khởi chạy lỗi thời đã bị xoá khỏi lớp MobileAds.
  • Một số phương thức từ lớp AdRequest.Builder() đã bị xoá hoặc chuyển sang lớp RequestConfiguration.
  • Các API TV và Quảng cáo xen kẽ đã được cập nhật để phù hợp với tất cả các định dạng toàn màn hình.
  • Các tính năng tương quan đã bị xoá.
Lớp API phiên bản 19.5.0 API phiên bản 20.0.0 Ghi chú
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds khởi tạo(Ngữ cảnh, Chuỗi) MobileAds.initialize(Context, OnInitializationCompleteTrình nghe) Mã ứng dụng hiện được đặt trong AndroidManifest.xml.
khởi tạo(Ngữ cảnh, Chuỗi, MobileAds.Settings) khởi tạo(Context, OnInitializationCompleteTrình nghe) Lớp Cài đặt không còn được dùng nữa.
getrewardVideoAdInstance() Đã xóa Thay vào đó, hãy sử dụng API report.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() Đã xóa Các định dạng quảng cáo toàn màn hình sử dụng FullscreenContentCallback thay cho AdListener, và không có phương thức tương đương trên FullscreenContentCallback. Phương thức này đã bị xoá khỏi AdListener.
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() Đã xóa
getBirthday() Đã xóa
getNetworkExtras() Đã xóa
phương thức hiển thị thủ côngĐã bật() Đã xóa
updateCorrelator() Đã xóa Hãy xem phần Lọc nội dung quảng cáo.
AdRequest.Builder setBirthday() Đã xóa
setGender() Đã xóa
setIsDesignedForFamilies() Đã xóa Xem hướng dẫn.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Hãy xem bài viết Cách bật quảng cáo thử nghiệm.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildOrientationTreatment() Hãy xem phần Lọc nội dung quảng cáo.
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() Thông tin phản hồi.get MediationAdapterClassName() Đối tượng ResponseInfo hiện có sẵn thông qua phương thức AdView getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, PhảiLoadCallback) NETWORK.load(Context, Chuỗi, AdRequest, AdRequestLoadCallback) Hiện tại, GAD sử dụng phương pháp tải tĩnh giống như các định dạng toàn màn hình khác.
loadAd(PublisherAdRequest, AdRequestLoadCallback) NETWORK.load(Context, Chuỗi, AdManagerAdRequest, AdRequestLoadCallback)
isLoaded() Đã xóa Lệnh gọi lại từ phương thức tải tĩnh cung cấp một quảng cáo đã được tải.
show(Hoạt động, reportCallback) show(Activity, OnUserCreationedRewardListener) Phương pháp hiển thị này tuân thủ phương pháp định dạng toàn màn hình rộng hơn.
RewardedAdLoadCallback onreportFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onreportFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdĐã tải(AppOpenAd) onAdLoaded(AppOpenAd)
Lệnh gọi lạiQuảng cáo xen kẽ có tặng thưởng onrewardedQuảng cáo xen kẽFailedToLoad(số nguyên) onAdFailedToLoad(LoadAdError)
onrewardedQuảng cáo xen kẽFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onrewardQuảng cáo xen kẽĐã tải(Quảng cáo xen kẽ có tặng thưởng) onAdĐã tải(Quảng cáo xen kẽ có tặng thưởng)
InterstitialAd phương thức InterstitialAd() mới pauseAd.load(Ngữ cảnh, Chuỗi, AdRequest, interstitialAdLoadCallback) Quảng cáo xen kẽ hiện sử dụng cùng một phương thức tải tĩnh như các định dạng toàn màn hình khác.
setAdListener()
Yêu cầu DynamicHeightSearchAd getNetworkExtras() Đã xóa Lớp NetworkExtras không còn được dùng nữa.
AdLoader forContentAd() Đã xóa
forAppInstallAd() Đã xóa
withCorrelator() Đã xóa
getMediationAdapterClassName() Đã xóa