本頁面說明如何遷移目前和先前的版本。
從 v23 遷移至 v24
以下小節說明 Google Mobile Ads SDK 主要版本 23 和 24 之間的重大變更和行為差異。
最低 Android API 級別為 23
從 24.0.0 版開始,Google Mobile Ads SDK 要求所有應用程式都必須在 Android API 級別 23 以上版本執行。如要調整 API 級別,請將應用程式層級 build.gradle
檔案中的 minSdk
值變更為 23 以上。
最佳化初始化和載入作業的變更
根據預設,OPTIMIZE_INITIALIZATION
和 OPTIMIZE_AD_LOADING
標記會設為 true
。如要進一步瞭解這些標記,請參閱「最佳化初始化和載入作業」。
移除 firebase-ads 和 firebase-ads-lite 依附元件
自 24.0.0 版起,SDK 版本不再發布 firebase-ads
和 firebase-ads-lite
依附元件。請改用 play-services-ads
依附元件。
移除應用程式開啟頁面廣告已淘汰的螢幕方向 API
- 已移除接受方向輸入參數的
AppOpenAd.load()
方法。請改用不採用方向的AppOpenAd.load()
方法。 - 已移除
AppOpenAdOrientation
列舉。
簡化中介服務介面的獎勵回呼
24.0.0 版在 MediationRewardedAdCallback
中新增 onUserEarnedReward()
回呼,並淘汰 onUserEarnedReward(RewardItem)
。使用者獲得獎勵時,中介服務介面卡必須開始呼叫 onUserEarnedReward()
。
轉送中介服務介面卡的後續回呼時,所有 Google Mobile Ads SDK 版本都會在 OnUserEarnedRewardListener
中傳回 AdMob 使用者介面中定義的獎勵。
已移除課程
下列類別已移除,且沒有任何更換內容:
DynamicHeightSearchAdRequest
SearchAdRequest
SearchAdView
已移除方法
下列方法已移除,且沒有替代方法:
類別 | 方法 |
---|---|
RewardedInterstitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) |
|
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
已淘汰的方法
下列方法已淘汰,且沒有替代方法:
類別 | 方法 |
---|---|
變壓器 | loadInterscrollerAd() |
RtbAdapter | loadRtbInterscrollerAd() |
從 v22 遷移至 v23
以下小節說明 Google Mobile Ads SDK 主要版本 22 和 23 之間的重大變更和行為差異。
最低 Android API 級別為 21
從 23.0.0 版開始,Google Mobile Ads SDK 規定所有應用程式都必須使用 Android API 級別 21 以上版本才能執行。如要調整 API 級別,請在應用程式層級的 build.gradle
檔案中,將 minSdkVersion
的值變更為 21 以上。
已移除/取代已淘汰的方法
v22.0.0 API | 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() |
從 v21 遷移至 v22
以下小節說明 Google Mobile Ads SDK 主要版本 21 和 22 之間的重大變更和行為差異。
使用 MobileAds.getVersion() 取得 Google Mobile Ads SDK 版本
22.0.0 版已移除 MobileAds.getVersionString()
方法,並改用 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 版
以下小節說明 Google Mobile Ads SDK 主要版本 20 和 21 之間的重大變更和行為差異:
將 minSdkVersion 更新至 19 以上版本
從 21.0.0 版開始,Google Mobile Ads SDK 規定所有應用程式都必須使用 Android API 級別 19 以上版本才能執行。如要調整 API 級別,請將應用程式建構檔案中的 minSdkVersion
值變更為 19 以上。
強制執行嚴格空值性
為準備強制執行嚴格的空值性,先前未明確定義空值性的所有 API 都會新增 @NonNull
註解。
如果發生空值安全違規情形,且先前未以安全方式處理 null
值 (請參閱 Kotlin 文件中的空值安全),這項變更可能會導致 Kotlin 應用程式和使用 Java 空值檢查架構的應用程式發生錯誤。
移除 addNetworkExtras() 方法
在 SDK 20.3.0 版中,將額外參數做為 NetworkExtras
例項傳遞至特定廣告聯播網介面卡的 addNetworkExtras()
方法已遭淘汰,並將在 21.0.0 版中移除。請改用相同 AdRequest.Builder
類別的 addNetworkExtrasBundle()
方法。
移除位置資訊方法
21.0.0 版將移除下列位置資訊方法:
AdRequest.Builder
類別中的setLocation(Location location)
方法,可設定使用者的位置,用於中介服務指定目標。AdRequest
類別中的getLocation()
方法,會傳回先前傳遞至setLocation(Location location)
方法的使用者位置指定資訊。MediationAdConfiguration
類別中的getLocation()
方法,會傳回使用者位置 (如果AdRequest
定義了位置)。
Google 不會使用位置資料指定廣告。如有需要,您應使用第三方 API 將資訊提供給第三方廣告聯播網。
自訂事件介面已淘汰
發布商使用 AdMob 中介服務時,可透過自訂事件設定刊登序列廣告來源,但該來源必須是 AdMob 支援的廣告來源。
所有自訂事件介面都已淘汰,請改用 Adapter
類別和 MediationAdLoadCallback
介面。
下表列出從 21.0.0 版開始,每個自訂事件介面必須使用的對應類別或介面:
從第 19 版遷移至第 20 版
20.0.0 版有許多破壞性變更,19.7.0 版導入了許多新 API,並淘汰或重新命名許多類別,為 20.0.0 版做準備。本指南會說明 20.0.0 版的重大變更。
全螢幕格式 API 更新
從 20.0.0 版開始,插頁式廣告、獎勵廣告、插頁式獎勵廣告和應用程式開啟頁面廣告格式會標準化,遵循一致的 API 設計。
所有全螢幕格式 API 都遵循下列原則:
- 靜態載入方法
- 類似的載入回呼或處理常式機制
- 依賴
FullScreenContentCallback
類別進行簡報回呼
移除舊版 RewardedVideoAd API
新版 RewardedAd
API 最早在 2019 年 3 月推出,且已成為偏好的獎勵 API 超過 18 個月。與舊版 RewardedVideoAd
API 相比,新版 API 經過更多強化,包括一次載入多個獎勵廣告的功能。
SDK 20.0.0 版已移除舊版 RewardedVideoAd
API。
智慧型橫幅廣告將淘汰,改用自動調整橫幅廣告
智慧型橫幅廣告已淘汰,建議改用自動調整橫幅廣告。自動調整橫幅廣告的成效更出色,且設定廣告寬度時更具彈性。如果您偏好繼續使用全寬橫幅,仍可使用自動調整橫幅,如下列程式碼片段所示:
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) } }
離開應用程式回呼移除作業
為支援 ProcessLifecycleOwner
,我們已移除所有廣告格式的 onAdLeftApplication
回呼。使用 OS 層級的 API 時,無論使用者離開應用程式的原因是否與廣告互動有關,您都會收到通知。
請注意,onAdLeftApplication
回呼從來就不是廣告點擊處理常式,因此依賴這個回呼回報點擊次數,無法產生準確的指標。舉例來說,點選 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 | 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 |
nativead.NativeCustomFormatAd |
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
類別。- 我們已更新 RewardedAd 和 InterstitialAd API,以配合所有全螢幕格式。
- 已移除關聯器功能。
類別 | v19.5.0 API | v20.0.0 API | 附註 |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete |
應用程式 ID 現在已在 AndroidManifest.xml 中設定。 |
initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
Settings 類別已遭淘汰。 | |
getRewardedVideo |
已移除 | 請改用 RewardedAd API。 | |
AdListener | onAdFailedToLoad(int) | onAd |
|
onAdLeftApplication() | 已移除 | 全螢幕廣告格式會使用 FullscreenContentCallback 取代 AdListener,且 FullscreenContentCallback 沒有對等方法。該方法已從 AdListener 中移除。 | |
VideoController | getAspectRatio() | MediaContent.getAspectRatio() | |
AdRequest | getGender() | 已移除 | |
getBirthday() | 已移除 | ||
getNetworkExtras() | 已移除 | ||
setManualImpressions |
已移除 | ||
updateCorrelator() | 已移除 | 請參閱「廣告內容篩選功能」。 | |
AdRequest.Builder | setBirthday() | 已移除 | |
setGender() | 已移除 | ||
setIsDesignedForFamilies() | 已移除 | 詳情請參閱指南。 | |
addTestDevice() | RequestConfiguration |
請參閱「啟用測試廣告」。 | |
tagForChildDirectedTreatment() | RequestConfiguration |
請參閱「廣告內容篩選功能」。 | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
您可以使用 AdView 方法 getResponseInfo() ,取得 ResponseInfo 物件。
|
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 | onRewardedAd |
onAd |
|
onRewardedAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
RewardedInterstitialAdLoad |
onRewardedInterstitialAd |
onAd |
|
onRewardedInterstitialAd |
onAd |
||
onRewardedInterstitialAd |
onAd |
||
InterstitialAd | new InterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | InterstitialAd 現在採用與其他全螢幕格式相同的靜態載入方式。 |
setAdListener() | |||
DynamicHeightSearchAd |
getNetworkExtras() | 已移除 | NetworkExtras 類別已淘汰。 |
AdLoader | forContentAd() | 已移除 | |
forAppInstallAd() | 已移除 | ||
withCorrelator() | 已移除 | ||
getMediationAdapter |
已移除 |