迁移至版本 8 的指南
Yandex Mobile Ads 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. 定位变更
定位字段(Age、Gender、Location、ContextQuery、ContextTags)已从 AdRequestConfiguration.Builder 和 AdRequest.Builder 中移除。 使用新的 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. 广告加载器变更
OnAdLoaded 和 OnAdFailedToLoad 已从 RewardedAdLoader、InterstitialAdLoader 和 AppOpenAdLoader 中移除。 加载结果通过 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 变更
blockId 构造函数参数已从 Banner 中移除。 广告单元 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 变更
AdSize 已从 AdInfo 中移除。 新属性: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}");
}