迁移至版本 8 的指南

Yandex Mobile Ads 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. 定位变更

定位字段(AgeGenderLocationContextQueryContextTags)已从 AdRequestConfiguration.BuilderAdRequest.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

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. 广告加载器变更

OnAdLoadedOnAdFailedToLoad 已从 RewardedAdLoaderInterstitialAdLoaderAppOpenAdLoader 中移除。 加载结果通过 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 变更

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

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 变更

AdSize 已从 AdInfo 中移除。 新属性: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}");
}
上一篇
下一篇