版本 8 迁移指南

其他平台

Yandex Mobile Ads SDK 的 Unity 插件 8.0.0 对 API 进行了多项调整,以改进开发者体验。

主要变更

1. AdRequest 相关变更

已移除 AdRequestConfigurationAdRequest.Builder 类。adUnitId 现已成为 AdRequest 构造函数的必选参数。对于 Interstitial、Rewarded 与 AppOpen 加载器,请使用 AdRequest 替代 AdRequestConfiguration

状态
AdRequestConfiguration 已移除。请使用 AdRequest
AdRequest.Builder 已移除。请使用 AdRequest 构造函数
示例
C#

SDK 7

SDK 8

// Interstitial / Rewarded / AppOpen
AdRequestConfiguration config =
    new AdRequestConfiguration.Builder("R-M-XXXXX-YY")
        .Build();
interstitialAdLoader.LoadAd(config);

// Banner
Banner banner = new Banner(
    "R-M-XXXXX-YY",
    BannerAdSize.StickySize(320),
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest.Builder().Build());
// Interstitial / Rewarded / AppOpen
AdRequest request = new AdRequest("R-M-XXXXX-YY");
interstitialAdLoader.LoadAd(request);

// Banner
Banner banner = new Banner(
    BannerAdSize.Sticky(320),
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest("R-M-XXXXX-YY"));

2. Targeting 相关变更

已从 AdRequestConfiguration.BuilderAdRequest.Builder 中移除定向字段(AgeGenderLocationContextQueryContextTags)。请使用新类 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

AdRequestConfiguration config =
    new AdRequestConfiguration.Builder("R-M-XXXXX-YY")
        .WithAge("25")
        .WithGender(Gender.MALE)
        .WithLocation(location)
        .WithContextQuery("coffee")
        .WithContextTags(new List<string> { "food", "drinks" })
        .WithParameters(parameters)
        .Build();
AdTargeting targeting = new AdTargeting(
    age: "25",
    gender: Gender.MALE,
    location: location,
    contextQuery: "coffee",
    contextTags: new List<string> { "food", "drinks" });

AdRequest request = new AdRequest(
    "R-M-XXXXX-YY",
    targeting: targeting,
    parameters: parameters);

3. 广告加载器变更

已从 RewardedAdLoaderInterstitialAdLoaderAppOpenAdLoader 中移除 OnAdLoadedOnAdFailedToLoad 事件。加载结果现通过 LoadAd 方法的回调参数返回。

加载器 状态
AppOpenAdLoader LoadAd(request) + OnAdLoadedOnAdFailedToLoad 已替换为 LoadAd(request, onLoaded, onFailed)
InterstitialAdLoader LoadAd(request) + OnAdLoadedOnAdFailedToLoad 已替换为 LoadAd(request, onLoaded, onFailed)
RewardedAdLoader LoadAd(request) + OnAdLoadedOnAdFailedToLoad 已替换为 LoadAd(request, onLoaded, onFailed)
OnAdLoaded 已移除
OnAdFailedToLoad 已移除
示例
C#

SDK 7

SDK 8

var loader = new RewardedAdLoader();
loader.OnAdLoaded += (sender, args) => {
    _rewardedAd = args.RewardedAd;
};
loader.OnAdFailedToLoad += (sender, args) => {
    Debug.Log(args.Message);
};
loader.LoadAd(new AdRequest("R-M-XXXXX-YY"));
var loader = new RewardedAdLoader();
loader.LoadAd(
    adRequest: new AdRequest("R-M-XXXXX-YY"),
    onLoaded: ad => { _rewardedAd = ad; },
    onFailed: args => { Debug.Log(args.Message); });

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

BannerAdSize sticky = BannerAdSize.StickySize(320);
Banner banner = new Banner(
    "R-M-XXXXX-YY",
    sticky,
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest.Builder().Build());
BannerAdSize sticky = BannerAdSize.Sticky(320);
Banner banner = new Banner(
    sticky,
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest("R-M-XXXXX-YY"));

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

MobileAds.SetUserConsent(true);
MobileAds.SetLocationTracking(true);
MobileAds.SetAgeRestricted(false);
YandexAds.SetUserConsent(true);
YandexAds.SetLocationTracking(true);
YandexAds.SetAgeRestricted(false);

6. AdInfo 变更

已从 AdInfo 中移除 AdSize 属性。新增属性:ExtraDataPartnerTextCreatives

SDK 7 SDK 8 状态
AdInfo AdUnitId AdUnitId 无变更
AdInfo AdSize 已移除
AdInfo ExtraData 新增
AdInfo PartnerText 新增(仅 ADFOX)
AdInfo Creatives 新增
示例
C#

SDK 7

SDK 8

string adUnitId = adInfo.AdUnitId;
AdSize adSize = adInfo.AdSize;
string adUnitId = adInfo.AdUnitId;
string extraData = adInfo.ExtraData;
string partnerText = adInfo.PartnerText; // 仅适用于 ADFOX

if (adInfo.Creatives != null)
{
    foreach (Creative creative in adInfo.Creatives)
    {
        string creativeId = creative.CreativeId;
        string campaignId = creative.CampaignId;
        string placeId    = creative.PlaceId;
    }
}

7. 扩展 GetInfo()

GetInfo() 方法现适用于所有广告类型,包括 AppOpenAdBanner

广告类型 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}");
}