版本 8 迁移指南
Yandex Mobile Ads SDK 的 Unity 插件 8.0.0 对 API 进行了多项调整,以改进开发者体验。
主要变更
1. AdRequest 相关变更
已移除 AdRequestConfiguration 与 AdRequest.Builder 类。adUnitId 现已成为 AdRequest 构造函数的必选参数。对于 Interstitial、Rewarded 与 AppOpen 加载器,请使用 AdRequest 替代 AdRequestConfiguration。
| 类 | 状态 |
|---|---|
AdRequestConfiguration |
已移除。请使用 AdRequest |
AdRequest.Builder |
已移除。请使用 AdRequest 构造函数 |
示例
C#
|
SDK 7 |
SDK 8 |
|
|
2. Targeting 相关变更
已从 AdRequestConfiguration.Builder 与 AdRequest.Builder 中移除定向字段(Age、Gender、Location、ContextQuery、ContextTags)。请使用新类 AdTargeting 管理定向参数。
| 类 | 属性 | 状态 |
|---|---|---|
AdRequestConfiguration.Builder |
WithAge |
已移除。请使用 AdTargeting(age:) |
AdRequestConfiguration.Builder |
WithGender |
已移除。请使用 AdTargeting(gender:) |
AdRequestConfiguration.Builder |
WithLocation |
已移除。请使用 AdTargeting(location:) |
AdRequestConfiguration.Builder |
WithContextQuery |
已移除。请使用 AdTargeting(contextQuery:) |
AdRequestConfiguration.Builder |
WithContextTags |
已移除。请使用 AdTargeting(contextTags:) |
AdRequest.Builder |
WithAge |
已移除。请使用 AdTargeting(age:) |
AdRequest.Builder |
WithGender |
已移除。请使用 AdTargeting(gender:) |
AdRequest.Builder |
WithLocation |
已移除。请使用 AdTargeting(location:) |
AdRequest.Builder |
WithContextQuery |
已移除。请使用 AdTargeting(contextQuery:) |
AdRequest.Builder |
WithContextTags |
已移除。请使用 AdTargeting(contextTags:) |
AdTargeting |
— | 新增 |
示例
C#
|
SDK 7 |
SDK 8 |
|
|
3. 广告加载器变更
已从 RewardedAdLoader、InterstitialAdLoader 与 AppOpenAdLoader 中移除 OnAdLoaded 与 OnAdFailedToLoad 事件。加载结果现通过 LoadAd 方法的回调参数返回。
| 类 | 加载器 | 状态 |
|---|---|---|
AppOpenAdLoader |
LoadAd(request) + OnAdLoaded、OnAdFailedToLoad |
已替换为 LoadAd(request, onLoaded, onFailed) |
InterstitialAdLoader |
LoadAd(request) + OnAdLoaded、OnAdFailedToLoad |
已替换为 LoadAd(request, onLoaded, onFailed) |
RewardedAdLoader |
LoadAd(request) + OnAdLoaded、OnAdFailedToLoad |
已替换为 LoadAd(request, onLoaded, onFailed) |
OnAdLoaded |
— | 已移除 |
OnAdFailedToLoad |
— | 已移除 |
示例
C#
|
SDK 7 |
SDK 8 |
|
|
InterstitialAdLoader(返回 Interstitial)与 AppOpenAdLoader(返回 AppOpenAd)同样适用该模式。
3.1 支持 async/await
所有广告加载器均已支持 async/await。加载失败时将抛出 AdLoadingException。
| 加载器 | 方法 | 状态 |
|---|---|---|
AppOpenAdLoader |
LoadAd(request) |
新增 |
InterstitialAdLoader |
LoadAd(request) |
新增 |
RewardedAdLoader |
LoadAd(request) |
新增 |
示例
C#
var loader = new RewardedAdLoader();
try
{
_rewardedAd = await loader.LoadAd(new AdRequest("R-M-XXXXX-YY"));
}
catch (AdLoadingException e)
{
Debug.Log(e.Message);
}
4. Banner API 变更
已从 Banner 构造函数中移除 blockId 参数。广告位 ID 现通过每次加载时的 AdRequest 传入。BannerAdSize 的工厂方法已重命名,并去掉了 Size 后缀。
| 类 | SDK 7 | SDK 8 | 状态 |
|---|---|---|---|
Banner |
Banner(blockId, adSize, position) |
Banner(adSize, position) |
已变更 |
Banner |
LoadAd(new AdRequest.Builder().Build()) |
LoadAd(new AdRequest(blockId)) |
已变更 |
BannerAdSize |
FixedSize(width, height) |
Fixed(width, height) |
已重命名 |
BannerAdSize |
StickySize(width) |
Sticky(width) |
已重命名 |
BannerAdSize |
InlineSize(width, maxHeight) |
Inline(width, maxHeight) |
已重命名 |
示例
C#
|
SDK 7 |
SDK 8 |
|
|
5. SDK 主类重命名
MobileAds 类已重命名为 YandexAds。
| SDK 7 | SDK 8 | 状态 |
|---|---|---|
MobileAds |
YandexAds |
已重命名 |
MobileAds.SetUserConsent(consent) |
YandexAds.SetUserConsent(consent) |
已重命名 |
MobileAds.SetLocationTracking(enabled) |
YandexAds.SetLocationTracking(enabled) |
已重命名 |
MobileAds.SetAgeRestricted(restricted) |
YandexAds.SetAgeRestricted(restricted) |
已重命名 |
MobileAds.ShowDebugPanel() |
YandexAds.ShowDebugPanel() |
已重命名 |
示例
C#
|
SDK 7 |
SDK 8 |
|
|
6. AdInfo 变更
已从 AdInfo 中移除 AdSize 属性。新增属性:ExtraData、PartnerText、Creatives。
| 类 | SDK 7 | SDK 8 | 状态 |
|---|---|---|---|
AdInfo |
AdUnitId |
AdUnitId |
无变更 |
AdInfo |
AdSize |
— | 已移除 |
AdInfo |
— | ExtraData |
新增 |
AdInfo |
— | PartnerText |
新增(仅 ADFOX) |
AdInfo |
— | Creatives |
新增 |
示例
C#
|
SDK 7 |
SDK 8 |
|
|
7. 扩展 GetInfo()
GetInfo() 方法现适用于所有广告类型,包括 AppOpenAd 与 Banner。
| 广告类型 | SDK 7 | SDK 8 | 状态 |
|---|---|---|---|
Interstitial.GetInfo() |
✓ | ✓ | 无变更 |
RewardedAd.GetInfo() |
✓ | ✓ | 无变更 |
AppOpenAd.GetInfo() |
— | ✓ | 新增 |
Banner.GetInfo() |
— | ✓ | 新增 |
示例
C#
// SDK 8:GetInfo() 适用于所有广告类型
AdInfo adInfo = banner.GetInfo();
if (adInfo != null)
{
Debug.Log($"AdUnitId: {adInfo.AdUnitId}");
}