我们计划于 2021 年初推出 Google 移动广告 SDK 版本 20.0.0,同时提供一些重大更改,并简单重命名一些 API 以及移除已弃用的 API。
重大更改
关于全屏广告格式 API 的更新
在版本 20.0.0 中,插页式广告、激励广告、插页式激励广告和开屏广告都经过了标准化处理,因此都遵循类似的 API 设计模式。
所有全屏广告格式 API 均采用以下设计:
- 静态加载方法
- 类似的加载回调函数或处理程序机制
- 展示回调函数需要依靠
FullScreenContentCallack
类
移除了旧版 RewardedVideoAd API
新版 RewardedAd
API 于 2019 年 3 月首次推出,在之后的 18 个月里一直是首选激励广告 API。与旧版 RewardedVideoAd
API 相比,新版 API 包含多项改进,其中包括能够一次加载多个激励广告。
SDK 版本 20.0.0 中移除了该旧版 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 | 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 | 已移除 |
Interface AdRequest.TagForUnderAgeOfConsent | 已移除 |
Interface 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(String) | MobileAds.initialize(Context, OnInitializationComplete |
现在,在 AndroidManifest.xml 中设置应用 ID。 |
initialize(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 |
现在,ResponseInfo 对象通过 AdView 方法 getResponseInfo() 提供。 |
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) | 此 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 | 新 InterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | 现在,InterstitialAd 与其他全屏广告格式使用相同的静态加载方法。 |
setAdListener() | |||
DynamicHeightSearchAd |
getNetworkExtras() | 已移除 | NetworkExtras 类已弃用。 |
AdLoader | forContentAd() | 已移除 | |
forAppInstallAd() | 已移除 | ||
withCorrelator() | 已移除 | ||
getMediationAdapter |
已移除 |