本文介绍了现行版本和以往版本的迁移。
从 v22 迁移到 v23
最低 Android API 级别为 21
从版本 23.0.0 开始,Google 移动广告 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
使用 MobileAds.getVersion() 获取 Google 移动广告 SDK 版本
在版本 22.0.0 中,移除了 MobileAds.getVersionString()
方法,取而代之的是 MobileAds.getVersion()
。
新方法将返回预期的外部版本号,例如 22.0.0
。如需详细了解此变更,请参阅使用新的 Google 移动广告 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 |
从 v20 迁移到 v21
将 minSdkVersion 更新为 19 或更高版本
从版本 21.0.0 开始,Google 移动广告 SDK 要求所有应用都必须使用最低 Android API 级别 19 才能运行。如需调整 API 级别,请在应用的 build 文件中将 minSdkVersion
的值更改为 19 或更高。
强制执行严格的可为 null 性
为为强制执行严格的可为 null 性做好准备,所有先前未明确定义可为 null 性的 API 都添加了 @NonNull
注解。
如果存在 null 安全违规行为,且之前未以安全的方式处理 null
值,此变更可能会导致 Kotlin 应用和使用 Java null 检查框架的应用出错(请参阅关于 null 安全性的 Kotlin 文档)。
移除了 addNetworkExtras() 方法
将额外参数作为 NetworkExtras
实例传递给特定广告联盟适配器的 addNetworkExtras()
方法在 SDK 版本 20.3.0 中已被弃用,并将在版本 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 开始,应对每个自定义事件接口使用的相应类或接口:
从 v19 迁移到 v20
我们在版本 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 月首次推出,在超过 18 个月的时间里一直是首选激励广告 API。与旧版 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) } }
移除退出应用回调
移除了所有广告格式的 onAdLeftApplication
回调函数,改为使用 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 | monetization.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 |
formatted.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,以与所有全屏广告格式保持一致。
- 移除了 Correlator 功能。
类 | 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, OnUserRevenueedRewardListener) | 此 show 方法遵循更广泛的全屏广告格式方法。 | |
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 |
已移除 |