버전 8로 마이그레이션 가이드

Yandex Mobile Ads SDK용 Unity Plugin 8.0.0 버전은 개발자 경험을 개선하기 위한 API 변경 사항을 여러 가지 도입합니다.

주요 변경 사항

1. AdRequest 변경

AdRequestConfigurationAdRequest.Builder 클래스가 제거되었습니다. adUnitIdAdRequest 생성자의 필수 매개변수가 되었습니다. 이제 Interstitial, Rewarded, AppOpen 로더에는 AdRequestConfiguration 대신 AdRequest를 사용합니다.

클래스 상태
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 변경

타깃팅 필드(Age, Gender, Location, ContextQuery, ContextTags)가 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. 광고 로더 변경

RewardedAdLoader, InterstitialAdLoader, AppOpenAdLoader에서 OnAdLoadedOnAdFailedToLoad 이벤트가 제거되었습니다. 로드 결과는 이제 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

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 속성이 제거되었습니다. 새 속성 ExtraData, PartnerText, Creatives가 추가되었습니다.

클래스 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 only

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() is available for all ad types
AdInfo adInfo = banner.GetInfo();
if (adInfo != null)
{
    Debug.Log($"AdUnitId: {adInfo.AdUnitId}");
}