Guide for migrating to version 8
Version 8 of the Yandex Mobile Ads SDK introduces multiple API changes aimed at improving the developer experience.
Key changes
1. Changes to AdRequest
The AdRequestConfiguration and NativeAdRequestConfiguration classes have been removed. Use AdRequest for all ad formats.
|
Class
|
Status
|
|
AdRequestConfiguration
|
Removed. Use AdRequest
|
|
NativeAdRequestConfiguration
|
Removed. Use AdRequest and NativeAdOptions.
|
Examples
|
SDK 7
|
val loader = InterstitialAdLoader(this)
val config = AdRequestConfiguration.Builder("R-M-XXXXX-YY").build()
loader.loadAd(config)
val bannerView = findViewById<R.id.view_banner>(BannerAdView)
bannerView.setAdUnitId("R-M-XXXXX-YY")
val request = AdRequest.Builder().build()
bannerView.loadAd(request)
|
|
SDK 8
|
val loader = InterstitialAdLoader(this)
val request = AdRequest.Builder("R-M-XXXXX-YY").build()
loader.loadAd(adRequest, listener)
val bannerView = findViewById<R.id.view_banner>(BannerAdView)
val request = AdRequest.Builder("R-M-XXXXX-YY").build()
bannerView.loadAd(request)
|
|
SDK 7
|
void loadAd() {
InterstitialAdLoader loader = new InterstitialAdLoader(this);
AdRequestConfiguration config = new AdRequestConfiguration.Builder("R-M-XXXXX-YY")
.build();
loader.loadAd(config);
BannerAdView bannerView = findViewById(R.id.view_banner);
bannerView.setAdUnitId("R-M-XXXXX-YY");
AdRequest request = AdRequest.Builder().build();
bannerView.loadAd(request);
}
|
|
SDK 8
|
void loadAd() {
InterstitialAdLoader loader = new InterstitialAdLoader(this);
AdRequest request = new AdRequest.Builder("R-M-XXXXX-YY")
.build();
loader.loadAd(request, listener);
BannerAdView bannerView = findViewById(R.id.view_banner);
AdRequest request = new AdRequest.Builder("R-M-XXXXX-YY").build();
bannerView.loadAd(request);
}
|
2. Changes to the Targeting API
- The fields
age, gender, location, contextQuery, and contextTags have been removed from AdRequest.Builder.
- To manage the targeting parameters, use the new
AdTargeting class.
|
Class
|
Status
|
|
AdTargeting
|
Added
|
|
AdTargeting.Builder
|
Added
|
|
Class
|
Method
|
Status
|
|
AdRequest.Builder
|
setAge(String)
|
Removed. Use AdTargeting.Builder.setAge(String) and AdRequest.Builder.setTargeting(AdTargeting).
|
|
setGender(String)
|
Removed. Use AdTargeting.Builder.setGender(String) and AdRequest.Builder.setTargeting(AdTargeting).
|
|
setLocation(Location)
|
Removed. Use AdTargeting.Builder.setLocation(Location) and AdRequest.Builder.setTargeting(AdTargeting).
|
|
setContextQuery(String)
|
Removed. Use AdTargeting.Builder.setContextQuery(String) and AdRequest.Builder.setTargeting(AdTargeting).
|
|
setContextTags(List<String>)
|
Removed. Use AdTargeting.Builder.setContextTags(List<String>) and AdRequest.Builder.setTargeting(AdTargeting).
|
|
setTargeting(AdTargeting)
|
Added
|
|
AdTargeting.Builder
|
setAge(String)
|
Added
|
|
setGender(String)
|
Added
|
|
setLocation(Location)
|
Added
|
|
setContextQuery(String)
|
Added
|
|
setContextTags(List<String>)
|
Added
|
Examples
|
SDK 7
|
val adRequest = AdRequest.Builder()
.setAge("25")
.setGender(Gender.MALE)
.setContextTags(listOf("news"))
.build()
|
|
SDK 8
|
val targeting = AdTargeting.Builder()
.setAge("25")
.setGender(Gender.MALE)
.setContextTags(listOf("news"))
.build()
val adRequest = AdRequest.Builder(adUnitId)
.setTargeting(targeting)
.build()
|
|
SDK 7
|
void loadAd() {
AdRequest adRequest = AdRequest.Builder()
.setAge("25")
.setGender(Gender.MALE)
.setContextTags(listOf("news"))
.build();
}
|
|
SDK 8
|
void loadAd() {
AdTargeting targeting = new AdTargeting.Builder()
.setAge("25")
.setGender(Gender.MALE)
.setContextTags(listOf("news"))
.build();
AdRequest adRequest = new AdRequest.Builder(adUnitId)
.setTargeting(targeting)
.build();
}
|
3. Changes to the ad loading API
The methods for registering callback and ad load listeners have been updated.
|
Class
|
Method
|
Status
|
|
InterstitialAdLoader
|
setAdLoadListener(InterstitialAdLoadListener)
|
Removed. Pass InterstitialAdLoadListener to the loadAd method.
|
|
loadAd(AdRequestConfiguration)
|
Removed. Use loadAd(AdRequest, InterstitialAdLoadListener).
|
|
loadAd(AdRequest, InterstitialAdLoadListener)
|
Added
|
|
RewardedAdLoader
|
setAdLoadListener(RewardedAdLoadListener)
|
Removed. Pass RewardedAdLoadListener to the loadAd method.
|
|
loadAd(AdRequestConfiguration)
|
Removed. Use loadAd(AdRequest, RewardedAdLoadListener).
|
|
loadAd(AdRequest, RewardedAdLoadListener)
|
Added
|
|
AppOpenAdLoader
|
setAdLoadListener(AppOpenAdLoadListener)
|
Removed. Pass the AppOpenAdLoadListener to the loadAd method.
|
|
loadAd(AdRequestConfiguration)
|
Removed. Use loadAd(AdRequest, AppOpenAdLoadListener).
|
|
loadAd(AdRequest, AppOpenAdLoadListener)
|
Added
|
|
NativeAdLoader
|
setNativeAdLoadListener(NativeAdLoadListener)
|
Removed. Pass NativeAdLoadListener to the loadAd method.
|
|
loadAd(NativeAdRequestConfiguration)
|
Removed. Use loadAd(AdRequest, NativeAdLoadListener).
|
|
loadAd(AdRequest, NativeAdOptions, NativeAdLoadListener)
|
Added
|
|
loadAd(AdRequest, NativeAdLoadListener)
|
Added
|
|
SliderAdLoader
|
setSliderAdLoadListener(SliderAdLoadListener)
|
Removed. Pass SliderAdLoadListener to the loadAd method.
|
|
loadSlider(NativeAdRequestConfiguration)
|
Removed. Use loadAd(AdRequest, SliderAdLoadListener).
|
|
loadSlider(AdRequest, NativeAdOptions, SliderAdLoadListener)
|
Added
|
|
loadAd(AdRequest, NativeAdLoadListener)
|
Added
|
|
NativeBulkAdLoader
|
setNativeBulkAdLoadListener(NativeBulkAdLoadListener)
|
Removed. Pass NativeBulkAdLoadListener to the loadAd method.
|
|
loadAds(NativeAdRequestConfiguration, Int)
|
Removed. Use loadAd(AdRequest, NativeAdLoadListener).
|
|
loadAds(AdRequest, NativeAdOptions, NativeBulkAdLoadListener)
|
Added
|
|
loadAds(AdRequest, NativeBulkAdLoadListener)
|
Added
|
Examples
|
SDK 7
|
val interstitialAdLoader = InterstitialAdLoader(this)
interstitialAdLoader.setAdLoadListener(object : InterstitialAdLoadListener { })
interstitialAdLoader.loadAd(AdRequestConfiguration.Builder("R-M-XXXXX-YY").build())
val rewardedAdLoader = RewardedAdLoader(this)
rewardedAdLoader.setAdLoadListener(object : RewardedAdLoadListener { })
rewardedAdLoader.loadAd(AdRequestConfiguration.Builder("R-M-XXXXX-YY").build())
val appOpenAdLoader = AppOpenAdLoader(this)
appOpenAdLoader.setAdLoadListener(object : AppOpenAdLoadListener { })
appOpenAdLoader.loadAd(AdRequestConfiguration.Builder("R-M-XXXXX-YY").build())
val nativeAdLoader = NativeAdLoader(this)
nativeAdLoader.setNativeAdLoadListener(object : NativeAdLoadListener { })
nativeAdLoader.loadAd(NativeAdRequestConfiguration.Builder("R-M-XXXXX-YY").build())
val sliderAdLoader = SliderAdLoader(this)
sliderAdLoader.setSliderAdLoadListener(object : SliderAdLoadListener { })
sliderAdLoader.loadSlider(NativeAdRequestConfiguration.Builder("R-M-XXXXX-YY").build())
val nativeBulkAdLoader = NativeBulkAdLoader(this)
nativeBulkAdLoader.setNativeBulkAdLoadListener(object : NativeBulkAdLoadListener { })
nativeBulkAdLoader.loadAds(NativeAdRequestConfiguration.Builder("R-M-XXXXX-YY").build(), 1)
|
|
SDK 8
|
val interstitialAdLoader = InterstitialAdLoader(this)
interstitialAdLoader.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build(), object : InterstitialAdLoadListener { })
val rewardedAdLoader = RewardedAdLoader(this)
rewardedAdLoader.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build(), object : RewardedAdLoadListener { })
val appOpenAdLoader = AppOpenAdLoader(this)
appOpenAdLoader.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build(), object : AppOpenAdLoadListener { })
val nativeAdLoader = NativeAdLoader(this)
nativeAdLoader.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build(), object : NativeAdLoadListener { })
nativeAdLoader.loadAd(
AdRequest.Builder("R-M-XXXXX-YY").build(),
NativeAdOptions.Builder().build(),
object : NativeAdLoadListener { })
val sliderAdLoader = SliderAdLoader(this)
sliderAdLoader.loadSlider(AdRequest.Builder("R-M-XXXXX-YY").build(), object : SliderAdLoadListener { })
sliderAdLoader.loadSlider(
AdRequest.Builder("R-M-XXXXX-YY").build(),
NativeAdOptions.Builder().build(),
object : SliderAdLoadListener { })
val nativeBulkAdLoader = NativeBulkAdLoader(this)
nativeBulkAdLoader.loadAds(
AdRequest.Builder("R-M-XXXXX-YY").build(),
1,
object : NativeBulkAdLoadListener { }
)
nativeBulkAdLoader.loadAds(
AdRequest.Builder("R-M-XXXXX-YY").build(),
1,
NativeAdOptions.Builder().build(),
object : NativeBulkAdLoadListener { }
)
|
|
SDK 7
|
void loadAd() {
InterstitialAdLoader interstitialAdLoader = new InterstitialAdLoader(this);
interstitialAdLoader.setAdLoadListener(new InterstitialAdLoadListener() { });
interstitialAdLoader.loadAd(new AdRequestConfiguration.Builder("R-M-XXXXX-YY").build());
RewardedAdLoader rewardedAdLoader = new RewardedAdLoader(this);
rewardedAdLoader.setAdLoadListener(new RewardedAdLoadListener() { });
rewardedAdLoader.loadAd(new AdRequestConfiguration.Builder("R-M-XXXXX-YY").build());
AppOpenAdLoader appOpenAdLoader = new AppOpenAdLoader(this);
appOpenAdLoader.setAdLoadListener(new AppOpenAdLoadListener() { });
appOpenAdLoader.loadAd(new AdRequestConfiguration.Builder("R-M-XXXXX-YY").build());
NativeAdLoader nativeAdLoader = new NativeAdLoader(this);
nativeAdLoader.setNativeAdLoadListener(new NativeAdLoadListener() { });
nativeAdLoader.loadAd(new NativeAdRequestConfiguration.Builder("R-M-XXXXX-YY").build());
SliderAdLoader sliderAdLoader = new SliderAdLoader(this);
sliderAdLoader.setSliderAdLoadListener(new SliderAdLoadListener() { });
sliderAdLoader.loadSlider(new NativeAdRequestConfiguration.Builder("R-M-XXXXX-YY").build());
NativeBulkAdLoader nativeBulkAdLoader = new NativeBulkAdLoader(this);
nativeBulkAdLoader.setNativeBulkAdLoadListener(new NativeBulkAdLoadListener() { });
nativeBulkAdLoader.loadAds(new NativeAdRequestConfiguration.Builder("R-M-XXXXX-YY").build(), 1);
}
|
|
SDK 8
|
void loadAd() {
InterstitialAdLoader interstitialAdLoader = new InterstitialAdLoader(this);
interstitialAdLoader.loadAd(new AdRequest.Builder("R-M-XXXXX-YY").build(),
new InterstitialAdLoadListener() { }
);
RewardedAdLoader rewardedAdLoader = new RewardedAdLoader(this);
rewardedAdLoader.loadAd(new AdRequest.Builder("R-M-XXXXX-YY").build(),
new RewardedAdLoadListener() { }
);
AppOpenAdLoader appOpenAdLoader = new AppOpenAdLoader(this);
appOpenAdLoader.loadAd(new AdRequest.Builder("R-M-XXXXX-YY").build(),
new AppOpenAdLoadListener() { }
);
NativeAdLoader nativeAdLoader = new NativeAdLoader(this);
nativeAdLoader.loadAd(new AdRequest.Builder("R-M-XXXXX-YY").build(),
new NativeAdLoadListener() { }
);
nativeAdLoader.loadAd(new AdRequest.Builder("R-M-XXXXX-YY").build(),
new NativeAdOptions.Builder().build(),
new NativeAdLoadListener() { }
);
SliderAdLoader sliderAdLoader = new SliderAdLoader(this);
sliderAdLoader.loadSlider(new AdRequest.Builder("R-M-XXXXX-YY").build(),
new SliderAdLoadListener() { }
);
sliderAdLoader.loadSlider(new AdRequest.Builder("R-M-XXXXX-YY").build(),
new NativeAdOptions.Builder().build(),
new SliderAdLoadListener() { }
);
NativeBulkAdLoader nativeBulkAdLoader = new NativeBulkAdLoader(this);
nativeBulkAdLoader.loadAds(new AdRequest.Builder("R-M-XXXXX-YY").build(),
1,
new NativeBulkAdLoadListener() { }
);
nativeBulkAdLoader.loadAds(new AdRequest.Builder("R-M-XXXXX-YY").build(),
1,
new NativeAdOptions.Builder().build(),
new NativeBulkAdLoadListener() { }
);
}
|
3.1 Support for Kotlin Coroutines
The API now includes suspend overloads for ad loading methods:
|
Class
|
Method
|
Status
|
|
InterstitialAdLoader
|
suspend fun loadAd(AdRequest): InterstitialAdLoadResult
|
Added
|
|
RewardedAdLoader
|
suspend fun loadAd(AdRequest): RewardedAdLoadResult
|
Added
|
|
AppOpenAdLoader
|
suspend fun loadAd(AdRequest): AppOpenAdLoadResult
|
Added
|
|
NativeAdLoader
|
suspend fun loadAd(AdRequest, NativeAdOptions): NativeAdLoadResult
|
Added
|
|
suspend fun loadAd(AdRequest): NativeAdLoadResult
|
Added
|
|
SliderAdLoader
|
suspend fun loadAd(AdRequest): SliderAdLoadResult
|
Added
|
|
suspend fun loadAd(AdRequest, NativeAdOptions): SliderAdLoadResult
|
Added
|
|
NativeBulkAdLoader
|
suspend fun loadAds(AdRequest, Int): NativeBulkAdLoadResult
|
Added
|
|
suspend fun loadAds(AdRequest, Int, NativeAdOptions): NativeBulkAdLoadResult
|
Added
|
Examples
lifecycleScope.launch {
val interstitialAdLoader = InterstitialAdLoader(applicationContext)
when(val result = interstitialAdLoader.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build())) {
is InterstitialAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is InterstitialAdLoadResult.Success -> TODO("Show interstitial ad: ${result.ad}")
}
val rewardedAdLoader = RewardedAdLoader(applicationContext)
when(val result = rewardedAdLoader.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build())) {
is RewardedAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is RewardedAdLoadResult.Success -> TODO("Show rewarded ad: ${result.ad}")
}
val appOpenAdLoader = AppOpenAdLoader(applicationContext)
when(val result = appOpenAdLoader.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build())) {
is AppOpenAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is AppOpenAdLoadResult.Success -> TODO("Show appOpen ad: ${result.ad}")
}
val nativeAdLoader = NativeAdLoader(applicationContext)
val nativeAdRequest = AdRequest.Builder("R-M-XXXXX-YY").build()
when(val result = nativeAdLoader.loadAd(nativeAdRequest)) {
is NativeAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is NativeAdLoadResult.Success -> TODO("Show native ad: ${result.ad}")
}
when(val result = nativeAdLoader.loadAd(nativeAdRequest, NativeAdOptions.Builder().build())) {
is NativeAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is NativeAdLoadResult.Success -> TODO("Show native ad: ${result.ad}")
}
val sliderAdLoader = SliderAdLoader(applicationContext)
val sliderAdRequest = AdRequest.Builder("R-M-XXXXX-YY").build()
when(val result = sliderAdLoader.loadAd(sliderAdRequest)) {
is SliderAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is SliderAdLoadResult.Success -> TODO("Show slider ad: ${result.ad}")
}
when(val result = sliderAdLoader.loadAd(sliderAdRequest, NativeAdOptions.Builder().build())) {
is SliderAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is SliderAdLoadResult.Success -> TODO("Show slider ad: ${result.ad}")
}
val nativeBulkAdLoader = NativeBulkAdLoader(applicationContext)
val builkAdRequest = AdRequest.Builder("R-M-XXXXX-YY").build()
when(val result = nativeBulkAdLoader.loadAds(builkAdRequest, 1)) {
is NativeBulkAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is NativeBulkAdLoadResult.Success -> TODO("Show bulk ad: ${result.ads}")
}
when(val result = nativeBulkAdLoader.loadAds(builkAdRequest, 1, NativeAdOptions.Builder().build())) {
is NativeBulkAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is NativeBulkAdLoadResult.Success -> TODO("Show bulk ad: ${result.ads}")
}
}
4. Changes to the Banner API
The setAdUnitId method has been removed from BannerAdView. The adUnitId is now set for each ad load.
Factory methods for creating BannerAdSize have been renamed.
|
Class
|
Method
|
Status
|
|
BannerAdView
|
setAdUnitId(String)
|
Removed. Pass the adUnitId property to the AdRequest builder before loading an ad.
|
|
BannerAdSize
|
stickySize
|
Removed. Use BannerAdSize.sticky.
|
|
inlineSize
|
Removed. Use BannerAdSize.inline.
|
Examples
|
SDK 7
|
val banner = findViewById<R.id.banner>(BannerAdView)
val stickySize = BannerAdSize.stickySize(this, screenWidth)
val inlineSizeSize = BannerAdSize.inlineSize(this, screenWidth, 300)
banner.setAdUnitId("R-M-XXXXX-YY")
banner.setAdSize(stickySize)
banner.loadAd(AdRequest.Builder().build())
|
|
SDK 8
|
val banner = findViewById<R.id.banner>(BannerAdView)
val stickySize = BannerAdSize.sticky(this, screenWidth)
val inlineSizeSize = BannerAdSize.inline(this, screenWidth, 300)
banner.setAdSize(stickySize)
banner.loadAd(AdRequest.Builder("R-M-XXXXX-YY").build())
|
|
SDK 7
|
void loadAd() {
BannerAdView banner = findViewById(R.id.banner);
BannerAdSize stickySize = BannerAdSize.stickySize(this, screenWidth);
BannerAdSize inlineSizeSize = BannerAdSize.inlineSize(this, screenWidth, 300);
banner.setAdUnitId("R-M-XXXXX-YY");
banner.setAdSize(stickySize);
banner.loadAd(new AdRequest.Builder().build());
}
|
|
SDK 8
|
void loadAd() {
BannerAdView banner = findViewById(R.id.banner);
BannerAdSize stickySize = BannerAdSize.sticky(this, screenWidth);
BannerAdSize inlineSizeSize = BannerAdSize.inline(this, screenWidth, 300);
banner.setAdSize(stickySize);
banner.loadAd(new AdRequest.Builder("R-M-XXXXX-YY").build());
}
|
5. Changes to the AdInfo API
We've changed the methods for retrieving data on ad creatives to properties and removed additional information:
|
Class
|
Method/Field
|
Status
|
|
BannerAdView, InsterstitialAd, RewardedAd, AppOpenAd, NativeAd
|
info
|
Removed. Use adInfo
|
|
adAttributes
|
Removed. Use adInfo
|
|
NativeAd
|
creativeId
|
Removed. Use Creative.creativeId.
|
|
campaignId
|
Removed. Use Creative.campaignId.
|
|
AdInfo
|
data
|
Removed
|
|
adSize
|
Removed
|
|
creatives
|
Added
|
|
extraData
|
Added
|
|
partnerText
|
Added
|
|
Creative
|
placeId
|
Added
|
|
offerId
|
Added
|
Examples
|
SDK 7
|
val extraData = banner.info
val adUnitId = banner.adInfo.adUnitId
val extraData2 = banner.adInfo.data
val width = banner.adInfo.adSize?.width
val height = banner.adInfo.adSize?.height
val creativeId = banner.adInfo.creatives.first().creativeId
val campaignId = banner.adInfo.creatives.first().campaignId
val creativeId2 = banner.adAttributes.first().bannerId
val campaignId2 = banner.adAttributes.first().campaignId
val placeId = banner.adAttributes.first().placeId
val extraData = fullscreenAd.info.data
val adUnitId = fullscreenAd.info.adUnitId
val width = fullscreenAd.info.adSize?.width
val height = fullscreenAd.info.adSize?.height
val creativeId = fullscreenAd.info.creatives.first().creativeId
val campaignId = fullscreenAd.info.creatives.first().campaignId
val creativeId2 = fullscreenAd.adAttributes.first().bannerId
val campaignId2 = fullscreenAd.adAttributes.first().campaignId
val placeId = fullscreenAd.adAttributes.first().placeId
val extraData = nativeAd.info
val creativeId = nativeAd.creativeId
val campaignId = nativeAd.campaignId
val creativeId2 = nativeAd.adAttributes?.bannerId
val campaignId2 = nativeAd.adAttributes?.campaignId
val placeId = nativeAd.adAttributes?.placeId
|
|
SDK 8
|
val extraData = banner.adInfo.extraData
val partnerText = banner.adInfo.partnerText
val creativeId = banner.adInfo.creatives.first().creativeId
val campaignId = banner.adInfo.creatives.first().campaignId
val placeId = banner.adInfo.creatives.first().placeId
val adUnitId = banner.adInfo.adUnitId
val width = banner.adSize?.width
val height = banner.adSize?.height
val extraData = fullscreenAd.adInfo.extraData
val partnerText = fullscreenAd.adInfo.partnerText
val adUnitId = fullscreenAd.adInfo.adUnitId
val creativeId = fullscreenAd.adInfo.creatives.first().creativeId
val campaignId = fullscreenAd.adInfo.creatives.first().campaignId
val placeId = fullscreenAd.adInfo.creatives.first().placeId
val extraData = nativeAd.adInfo.extraData
val partnerText = nativeAd.adInfo.partnerText
val adUnitId = nativeAd.adInfo.adUnitId
val creativeId = nativeAd.adInfo.creatives.first().creativeId
val campaignId = nativeAd.adInfo.creatives.first().campaignId
val placeId = nativeAd.adInfo.creatives.first().placeId
|
|
SDK 7
|
String extraData = banner.getInfo();
String adUnitId = banner.getAdInfo().getAdUnitId();
String extraData2 = banner.getAdInfo().getData();
int width = banner.getAdInfo().getAdSize().getWidth();
int height = banner.getAdInfo().getAdSize().getHeight();
String creativeId = banner.getAdInfo().getCreatives().get(0).getCreativeId();
String campaignId = banner.getAdInfo().getCreatives().get(0).getCampaignId();
String creativeId2 = banner.getAdAttributes().get(0).getBannerId();
String campaignId2 = banner.getAdAttributes().get(0).getCampaignId();
String placeId = banner.getAdAttributes().get(0).getPlaceId();
String extraData = fullscreenAd.getInfo().getData();
String adUnitId = fullscreenAd.getInfo().getAdUnitId();
int width = fullscreenAd.getInfo().getAdSize().getWidth();
int height = fullscreenAd.getInfo().getAdSize().getHeight();
String creativeId = fullscreenAd.getInfo().getCreatives().get(0).getCreativeId();
String campaignId = fullscreenAd.getInfo().getCreatives().get(0).getCampaignId();
String creativeId2 = fullscreenAd.getAdAttributes().get(0).getBannerId();
String campaignId2 = fullscreenAd.getAdAttributes().get(0).getCampaignId();
String placeId = fullscreenAd.getAdAttributes().get(0).getPlaceId();
String extraData = nativeAd.getInfo();
String creativeId = nativeAd.getCreativeId();
String campaignId = nativeAd.getCampaignId();
String creativeId2 = nativeAd.getAdAttributes().getBannerId();
String campaignId2 = nativeAd.getAdAttributes().getCampaignId();
String placeId = nativeAd.getAdAttributes().getPlaceId();
|
|
SDK 8
|
String extraData = banner.getAdInfo().getExtraData();
String partnerText = banner.getAdInfo().getPartnerText();
String creativeId = banner.getAdInfo().getCreatives().get(0).getCreativeId();
String campaignId = banner.getAdInfo().getCreatives().get(0).getCampaignId();
String placeId = banner.getAdInfo().getCreatives().get(0).getPlaceId();
String adUnitId = banner.getAdInfo().getAdUnitId();
int width = banner.getAdSize().getWidth();
int height = banner.getAdSize().getHeight();
String extraData = fullscreenAd.getAdInfo().getExtraData();
String partnerText = fullscreenAd.getAdInfo().getPartnerText();
String adUnitId = fullscreenAd.getAdInfo().getAdUnitId();
String creativeId = fullscreenAd.getAdInfo().getCreatives().get(0).getCreativeId();
String campaignId = fullscreenAd.getAdInfo().getCreatives().get(0).getCampaignId();
String placeId = fullscreenAd.getAdInfo().getCreatives().get(0).getPlaceId();
String extraData = nativeAd.getAdInfo().getExtraData();
String partnerText = nativeAd.getAdInfo().getPartnerText();
String adUnitId = nativeAd.getAdInfo().getAdUnitId();
String creativeId = nativeAd.getAdInfo().getCreatives().get(0).getCreativeId();
String campaignId = nativeAd.getAdInfo().getCreatives().get(0).getCampaignId();
String placeId = nativeAd.getAdInfo().getCreatives().get(0).getPlaceId();
|
6. Changes to the Native Ads API
- The
NativeAd.bindNativeAd and SliderAd.bindSliderAd() methods now return AdBindingResult and no longer throw exceptions.
- The
warning field type has been changed from String? to NativeAdWarning?. To comply with the Federal Law "On Advertising", apart from the warning asset's content, the new class also contains the warning asset's minimum required size as a percentage of the total ad area.
- The
NativeAdMedia class now contains the hasVideo field to indicate whether the selected ad includes a video creative.
|
Class
|
Status
|
|
AdBindingResult
|
Added
|
|
NativeAdWarning
|
Added
|
|
Class
|
Method/Field
|
Status
|
|
NativeAd
|
bindNativeAd
|
The method now returns an AdBindingResult value. It no longer throws exceptions.
|
|
SliderAd
|
bindSliderAd
|
The method now returns an AdBindingResult value. It no longer throws exceptions.
|
|
NativeAdAssets
|
warning
|
Type changed: String -> NativeAdWarning
|
|
NativeAdWarning
|
value
|
Added
|
|
minimumRequiredArea
|
Added
|
|
NativeAdMedia
|
hasVideo
|
Added
|
Examples
|
SDK 7
|
val warning = nativeAd.adAssets.warning
try {
nativeAd.bindNativeAd(binder)
} catch (e: NativeAdException) {
val message = e.message
}
|
|
SDK 8
|
val warningAsset = nativeAd.adAssets.warning
val warning = warningAsset?.value
val warningMinArea = warningAsset?.minimumRequiredArea
val hasVideo = nativeAd.adAssets.media?.hasVideo
when (val result = nativeAd.bindNativeAd(binder)) {
is AdBindingResult.Failure -> {
val missingAssetName = result.missingAssetName
val message = result.exception.message
}
AdBindingResult.Success -> Unit
}
|
|
SDK 7
|
void bindAd(NativeAd nativeAd) {
String warning = nativeAd.getAdAssets().getWarning();
try {
nativeAd.bindNativeAd(binder);
} catch (NativeAdException e) {
String message = e.getMessage();
}
}
|
|
SDK 8
|
void bindNativeAd(NativeAd nativeAd) {
NativeAdWarning warningAsset = nativeAd.getAdAssets().getWarning();
String warning = warningAsset.getValue();
float minWarningArea = warningAsset.getMinimumRequiredArea();
boolean hasVideo = nativeAd.getAdAssets().getMedia().getHasVideo();
AdBindingResult result = nativeAd.bindNativeAd(binder);
if (result instanceof AdBindingResult.Failure) {
String missingAssetName = ((AdBindingResult.Failure) result).getMissingAssetName();
String message = ((AdBindingResult.Failure) result).getException().getMessage();
}
}
|
6.1 API for native ad templates
Tools for native ad integration via templates have been removed. Use standard native ad
assets for integration.
|
Class
|
Status
|
|
NativeBannerView
|
Removed
|
|
SizeConstraint
|
|
HorizontalOffset
|
|
NativeTemplateAppearance
|
|
TextAppearance
|
|
BannerAppearance
|
|
ButtonAppearance
|
|
RatingAppearance
|
7. Some callback methods for ad objects were removed
- The
ClosableBannerAdEventListener and ClosableNativeAdEventListener interfaces have been removed.
- The methods
onLeftApplication and onReturnToApplication have been removed.
|
Class
|
Status
|
|
ClosableBannerAdEventListener
|
Removed
|
|
ClosableNativeAdEventListener
|
Removed
|
|
Class
|
Method
|
Status
|
|
BannerAdEventListener, NativeAdEventListener
|
onLeftApplication
|
Removed
|
|
onReturnToApplication
|
Removed
|
Examples
|
SDK 7
|
bannerAd?.setBannerAdEventListener(object : ClosableBannerAdEventListener {
override fun closeBannerAd() { }
override fun onAdClicked() { }
override fun onAdFailedToLoad(error: AdRequestError) { }
override fun onAdLoaded() { }
override fun onImpression(impressionData: ImpressionData?) { }
override fun onLeftApplication() { }
override fun onReturnedToApplication() { }
})
|
|
SDK 8
|
bannerAdView?.setBannerAdEventListener(object : BannerAdEventListener {
override fun onAdClicked() { }
override fun onAdFailedToLoad(error: AdRequestError) { }
override fun onAdLoaded() { }
override fun onImpression(impressionData: ImpressionData?) { }
})
|
|
SDK 7
|
void setEventListener(BannerAdView bannerView) {
bannerView.setBannerAdEventListener(
new ClosableBannerAdEventListener() {
@Override
public void closeBannerAd() { }
@Override
public void onAdLoaded() { }
@Override
public void onAdFailedToLoad(@NotNull AdRequestError adRequestError) { }
@Override
public void onAdClicked() { }
@Override
public void onLeftApplication() { }
@Override
public void onReturnedToApplication() { }
@Override
public void onImpression(@Nullable ImpressionData impressionData) { }
}
);
}
|
|
SDK 8
|
void setEventListener(BannerAdView bannerView) {
bannerView.setBannerAdEventListener(
new BannerAdEventListener() {
@Override
public void onAdLoaded() { }
@Override
public void onAdFailedToLoad(@NotNull AdRequestError adRequestError) { }
@Override
public void onAdClicked() { }
@Override
public void onImpression(@Nullable ImpressionData impressionData) { }
}
);
}
|
8. Changes to the main SDK class
- The main SDK class has been renamed to
YandexAds.
- We've also renamed some methods for configuring privacy settings.
|
Class
|
Status
|
|
YandexAds
|
Added
|
|
MobileAds
|
Removed. Use YandexAds.
|
|
Class
|
Method
|
Status
|
|
MobileAds
|
setAgeRestrictedUser(Boolean)
|
Removed. Use YandexAds.setAgeRestricted(Boolean).
|
|
setLocationConsent(Boolean)
|
Removed. Use YandexAds.setLocationTracking(Boolean).
|
|
YandexAds
|
setAgeRestricted(Boolean)
|
Added
|
|
setLocationTracking(Boolean)
|
Added
|
Examples
|
SDK 7
|
import com.yandex.mobile.ads.common.MobileAds
MobileAds.setUserConsent(true)
MobileAds.setAgeRestrictedUser(false)
MobileAds.setLocationConsent(true)
MobileAds.initialize(context) { }
MobileAds.enableDebugErrorIndicator(true)
MobileAds.enableLogging(true)
MobileAds.setAppAdAnalyticsReporting(true)
MobileAds.showDebugPanel(this)
MobileAds.libraryVersion
|
|
SDK 8
|
import com.yandex.mobile.ads.common.YandexAds
YandexAds.setUserConsent(true)
YandexAds.setAgeRestricted(false)
YandexAds.setLocationTracking(true)
YandexAds.initialize(context) { }
YandexAds.enableDebugErrorIndicator(true)
YandexAds.enableLogging(true)
YandexAds.setAppAdAnalyticsReporting(true)
YandexAds.showDebugPanel(this)
YandexAds.libraryVersion
|
|
SDK 7
|
import com.yandex.mobile.ads.common.MobileAds;
void initSdk() {
MobileAds.setUserConsent(true);
MobileAds.setAgeRestrictedUser(false);
MobileAds.setLocationConsent(true);
MobileAds.initialize(this, () -> { });
MobileAds.getLibraryVersion();
MobileAds.enableDebugErrorIndicator(true);
MobileAds.enableLogging(true);
MobileAds.setAppAdAnalyticsReporting(true);
MobileAds.showDebugPanel(this);
}
|
|
SDK 8
|
import com.yandex.mobile.ads.common.YandexAds;
void initSdk() {
YandexAds.setUserConsent(true);
YandexAds.setAgeRestricted(false);
YandexAds.setLocationTracking(true);
YandexAds.initialize(this, () -> { });
YandexAds.getLibraryVersion();
YandexAds.enableDebugErrorIndicator(true);
YandexAds.enableLogging(true);
YandexAds.setAppAdAnalyticsReporting(true);
YandexAds.showDebugPanel(this);
}
|
Changes to the InStream API
1. Changes to the packages and dependency structure
Core classes have been renamed to match the new SDK structure.
|
Class
|
Status
|
|
com.yandex.mobile.ads.instream.InstreamAdBinder
|
Moved to com.yandex.mobile.ads.instream.binder.InstreamAdBinder
|
|
com.yandex.mobile.ads.instream.InstreamAdRequestConfiguration
|
Renamed to com.yandex.mobile.ads.instream.InstreamAdRequest
|
|
com.yandex.mobile.ads.instream.InstreamAdBreak
|
Renamed to com.yandex.mobile.ads.instream.adbreak.AdBreakData
|
|
com.yandex.mobile.ads.instream.inroll.Inroll, com.yandex.mobile.ads.instream.pauseroll.Pauseroll
|
Replaced with com.yandex.mobile.ads.instream.adbreak.InstreamAdBreak
|
Examples
|
SDK 7
|
import com.yandex.mobile.ads.instream.InstreamAdBinder
import com.yandex.mobile.ads.instream.InstreamAdRequestConfiguration
import com.yandex.mobile.ads.instream.InstreamAdBreak
import com.yandex.mobile.ads.instream.inroll.Inroll
import com.yandex.mobile.ads.instream.pauseroll.Pauseroll
|
|
SDK 8
|
import com.yandex.mobile.ads.instream.binder.InstreamAdBinder
import com.yandex.mobile.ads.instream.InstreamAdRequest
import com.yandex.mobile.ads.instream.adbreak.AdBreakData
import com.yandex.mobile.ads.instream.adbreak.InstreamAdBreak
|
|
SDK 7
|
import com.yandex.mobile.ads.instream.InstreamAdBinder;
import com.yandex.mobile.ads.instream.InstreamAdRequestConfiguration;
import com.yandex.mobile.ads.instream.InstreamAdBreak;
import com.yandex.mobile.ads.instream.inroll.Inroll;
import com.yandex.mobile.ads.instream.pauseroll.Pauseroll;
|
|
SDK 8
|
import com.yandex.mobile.ads.instream.binder.InstreamAdBinder;
import com.yandex.mobile.ads.instream.InstreamAdRequest;
import com.yandex.mobile.ads.instream.adbreak.AdBreakData;
import com.yandex.mobile.ads.instream.adbreak.InstreamAdBreak;
|
2. Changes to AdRequest
The InstreamAdRequestConfiguration class has been renamed to InstreamAdRequest.
|
Class
|
Status
|
|
InstreamAdRequestConfiguration
|
Removed. Use InstreamAdRequest.
|
|
InstreamAdRequest
|
Added
|
|
InstreamAdBreakRequest
|
Added
|
Examples
|
SDK 7
|
val loader = InstreamAdLoader(this)
val config = InstreamAdRequestConfiguration.Builder("XXXXXX").build()
loader.loadInstreamAd(this, config)
|
|
SDK 8
|
val loader = InstreamAdLoader(this)
val config = InstreamAdRequest.Builder("XXXXXX").build()
loader.loadInstreamAd(this, config)
|
|
SDK 7
|
void loadAd() {
InstreamAdLoader loader = new InstreamAdLoader(this);
InstreamAdRequestConfiguration config = new InstreamAdRequestConfiguration.Builder("XXXXXX").build();
loader.loadInstreamAd(this, config);
}
|
|
SDK 8
|
void loadAd() {
InstreamAdLoader loader = new InstreamAdLoader(this);
InstreamAdRequest config = new InstreamAdRequest.Builder("XXXXXX").build();
loader.loadInstreamAd(this, config);
}
|
3. Changes to the ad loading API
- The methods for registering callback and ad load listeners have been updated.
- The API now includes the
InstreamAdBreakLoader class for loading ad breaks.
- The
onInstreamAdFailedToLoad method signature has changed: an InstreamAdRequestError object is now passed instead of a reason string.
|
Class
|
Status
|
|
InstreamAdBreakLoadListener
|
Added
|
|
InstreamAdBreakLoader
|
Added
|
|
Class
|
Method
|
Status
|
|
InstreamAdLoader
|
setInstreamAdLoadListener(InstreamAdLoadListener)
|
Removed. Pass InstreamAdLoadListener to the loadAd method.
|
|
loadAd(InstreamAdRequestConfiguration)
|
Removed. Pass InstreamAdLoadListener to the loadAd method.
|
|
loadAd(InstreamAdRequest, InstreamAdLoadListener)
|
Removed. Pass InstreamAdLoadListener to the loadAd method.
|
|
InstreamAdLoadListener
|
onInstreamAdFailedToLoad(String)
|
Removed. Use onInstreamAdFailedToLoad(InstreamAdRequestError).
|
|
onInstreamAdFailedToLoad(InstreamAdRequestError)
|
Added
|
|
InstreamAdBreakLoader
|
loadAd(InstreamAdBreakRequest, InstreamAdBreakLoadListener)
|
Added
|
Examples
|
SDK 7
|
val instreamAdLoader = InstreamAdLoader(this)
instreamAdLoader.setInstreamAdLoadListener(object : InstreamAdLoadListener {
override fun onInstreamAdLoaded(instreamAd: InstreamAd) {
}
override fun onInstreamAdFailedToLoad(reason: String) {
println("Instream ad failed to load: $reason")
}
})
val config = InstreamAdRequestConfiguration.Builder("XXXXXX").build()
instreamAdLoader.loadInstreamAd(this, config)
|
|
SDK 8
|
val instreamAdLoader = InstreamAdLoader(this)
val config = InstreamAdRequest.Builder("XXXXXX").build()
instreamAdLoader.loadAd(config, object : InstreamAdLoadListener {
override fun onInstreamAdLoaded(instreamAd: InstreamAd) {
}
override fun onInstreamAdFailedToLoad(error: InstreamAdRequestError) {
println("Instream ad failed to load: ${error.reason}")
}
})
|
|
SDK 7
|
void loadInstreamAd() {
InstreamAdLoader instreamAdLoader = new InstreamAdLoader(this);
instreamAdLoader.setInstreamAdLoadListener(new InstreamAdLoadListener() {
@Override
public void onInstreamAdLoaded(InstreamAd instreamAd) {
}
@Override
public void onInstreamAdFailedToLoad(String reason) {
System.out.println("Instream ad failed to load: " + reason);
}
});
InstreamAdRequestConfiguration config = new InstreamAdRequestConfiguration.Builder("XXXXXX").build();
instreamAdLoader.loadInstreamAd(this, config);
}
|
|
SDK 8
|
void loadInstreamAd() {
InstreamAdLoader instreamAdLoader = new InstreamAdLoader(this);
InstreamAdRequest config = new InstreamAdRequest.Builder("XXXXXX").build();
instreamAdLoader.loadAd(config, new InstreamAdLoadListener() {
@Override
public void onInstreamAdLoaded(InstreamAd instreamAd) {
}
@Override
public void onInstreamAdFailedToLoad(InstreamAdRequestError error) {
System.out.println("Instream ad failed to load: " + error.getReason());
}
});
}
|
3.1 Support for Kotlin Coroutines
We've added suspend overloads for ad loading methods to InstreamAdLoader and InstreamAdBreakAdLoader.
|
Class
|
Method
|
Status
|
|
InstreamAdLoader
|
suspend fun loadAd(InstreamAdRequest): InstreamAdLoadResult
|
Added
|
|
InstreamAdBreakLoader
|
suspend fun loadAd(InstreamAdBreakRequest): InstreamAdBreakLoadResult
|
Added
|
For example:
lifecycleScope.launch {
val instreamAdLoader = InstreamAdLoader(applicationContext)
when(val result = instreamAdLoader.loadAd(InstreamAdRequest.Builder("XXXXXX").build())) {
is InstreamAdLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is InstreamAdLoadResult.Success -> TODO("Show instream ad: ${result.ad}")
}
val adBreakLoader = InstreamAdBreakLoader(applicationContext)
when (val result = adBreakLoader.loadAd(InstreamAdBreakRequest.Builder("XXXXXX", "YY").build())) {
is InstreamAdBreakLoadResult.Failure -> TODO("Handle error: ${result.error.description}")
is InstreamAdBreakLoadResult.Success -> TODO("Show adBreak : ${result.adBreak}")
}
}
4. Using in-roll and pause-roll
- The logic for managing ad breaks has become more flexible.
- The specialized queue providers,
InrollQueueProvider and PauserollQueueProvider, have been removed. Ad breaks are now accessible directly from the InstreamAd object and can be filtered by type.
If you're using automatic rendering via InstreamAdBinder, select only INROLL and PAUSEROLL ad breaks from the instreamAdBreaks collection.
|
Class
|
Status
|
|
InrollQueueProvider
|
Removed. Use instreamAd.instreamAdBreaks filtered by InstreamAdBreakType.INROLL.
|
|
PauserollQueueProvider
|
Removed. Use instreamAd.instreamAdBreaks filtered by InstreamAdBreakType.PAUSEROLL.
|
Examples
|
SDK 7
|
val inrollQueueProvider = InrollQueueProvider(context, instreamAd)
val instreamAdBreakQueue = inrollQueueProvider.queue
val currentInroll = instreamAdBreakQueue.poll()
currentInroll?.setListener(object : InstreamAdBreakEventListener {
override fun onInstreamAdBreakPrepared() {
currentInroll.play(instreamAdView)
}
})
currentInroll?.prepare(instreamAdPlayer)
|
|
SDK 8
|
val inrolls = instreamAd.instreamAdBreaks.filter {
it.adBreakData.type == InstreamAdBreakType.INROLL
}
val inrollIndex = 0
val currentInroll = inrolls.getOrNull(inrollIndex)
currentInroll?.setListener(object : InstreamAdBreakEventListener {
override fun onInstreamAdBreakPrepared() {
currentInroll.play(instreamAdView)
}
})
currentInroll?.prepare(instreamAdPlayer)
|
|
SDK 7
|
void loadAdBreak() {
InrollQueueProvider inrollQueueProvider = new InrollQueueProvider(context, instreamAd);
Queue<Inroll> instreamAdBreakQueue = inrollQueueProvider.getQueue();
Inroll currentInroll = instreamAdBreakQueue.poll();
if (currentInroll != null) {
currentInroll.setListener(new InstreamAdBreakEventListener() {
@Override
public void onInstreamAdBreakPrepared() {
currentInroll.play(instreamAdView);
}
});
currentInroll.prepare(instreamAdPlayer);
}
}
|
|
SDK 8
|
void loadAdBreak() {
List<InstreamAdBreak> inrolls = new ArrayList<>();
for (InstreamAdBreak adBreak : instreamAd.getInstreamAdBreaks()) {
if (adBreak.getAdBreakData().getType() == InstreamAdBreakType.INROLL) {
inrolls.add(adBreak);
}
}
int inrollIndex = 0;
InstreamAdBreak currentInroll = inrollIndex < inrolls.size() ? inrolls.get(inrollIndex) : null;
if (currentInroll != null) {
currentInroll.setListener(new InstreamAdBreakEventListener() {
@Override
public void onInstreamAdBreakPrepared() {
currentInroll.play(instreamAdView);
}
});
currentInroll.prepare(instreamAdPlayer);
}
}
|
5. Default player
Passing player info for video rendering is now optional. If null is passed, the SDK takes full control over video rendering.
|
Class
|
Method
|
Status
|
|
InstreamAdBinder
|
Builder
|
The instreamAdPlayer parameter is now optional and can be set to null.
|
|
InstreamAdBreak
|
prepare(instreamAdPlayer)
|
Removed. Use prepare() with no parameter.
|
|
prepare()
|
Added
|
Examples
|
SDK 7
|
val instreamAdBinder = InstreamAdBinder(
context,
instreamAd,
instreamAdPlayer,
contentPlayer
)
val adBreak: InstreamAdBreak
adBreak.prepare(instreamAdPlayer)
|
|
SDK 8
|
val instreamAdBinder = InstreamAdBinder(
context,
instreamAd,
contentPlayer
)
val adBreak: InstreamAdBreak
adBreak.prepare()
|
|
SDK 7
|
void showAd() {
InstreamAdBinder instreamAdBinder = new InstreamAdBinder(
context,
instreamAd,
instreamAdPlayer,
contentPlayer
);
InstreamAdBreak adBreak;
adBreak.prepare(instreamAdPlayer);
}
|
|
SDK 8
|
void showAd() {
InstreamAdBinder instreamAdBinder = new InstreamAdBinder(
context,
instreamAd,
contentPlayer
);
InstreamAdBreak adBreak;
adBreak.prepare();
}
|
6. Changes to the InstreamAdPlayer interface
The InstreamAdPlayer interface has been updated to include the supportedMimeTypes property for optimized video format selection and the bindPlayerView method for correct positioning of ad elements on top of a video.
|
Class
|
Method
|
Status
|
|
InstreamAdPlayer
|
supportedMimeTypes: List<String>
|
Added. Allows the SDK to select the most suitable video format, such as DASH instead of MP4.
|
|
bindPlayerView(container: FrameLayout)
|
Added. The videoPlayerView must be placed inside the provided container and set to fill the entire space.
|
Examples
|
SDK 7
|
class InstreamAdPlayerImpl : InstreamAdPlayer {
}
|
|
SDK 8
|
class InstreamAdPlayerImpl : InstreamAdPlayer {
override val supportedMimeTypes: List<String>
get() = listOf(InstreamAdMimeTypes.MP4, InstreamAdMimeTypes.WEBM)
override fun bindPlayerView(container: FrameLayout) {
container.addView(playerView)
}
}
|
|
SDK 7
|
public class InstreamAdPlayerImpl implements InstreamAdPlayer {
}
|
|
SDK 8
|
public class InstreamAdPlayerImpl implements InstreamAdPlayer {
@Override
public List<String> getSupportedMimeTypes() {
return Arrays.asList(InstreamAdMimeTypes.MP4, InstreamAdMimeTypes.WEBM);
}
@Override
public void bindPlayerView(FrameLayout container) {
container.addView(playerView);
}
}
|
Identification of mediation adapters is now part of a separate method.
|
Class
|
Status
|
|
AdapterIdentity
|
Added
|
|
Class
|
Method
|
Status
|
|
YandexAds
|
setAdapterIdentity(AdapterIdentity)
|
Added. Call this method before calling YandexAds.initialize instead of passing adapter data as additional parameters in ad requests.
|
Examples
|
SDK 7
|
YandexAds.initialize(context, listener)
val parameters = mapOf(
"adapter_network_name" to "AdNetwork",
"adapter_network_version" to "1.2.3",
"adapter_version" to "1.0.0"
)
val adRequest = AdRequest.Builder()
.setParameters(parameters)
.build()
bannerAd.loadAd(adRequest)
|
|
SDK 8
|
val identity = AdapterIdentity("AdNetwork", "1.0.0", "1.2.3")
YandexAds.setAdapterIdentity(identity)
YandexAds.initialize(context, listener)
val adRequest = AdRequest.Builder("R-M-XXXXX-YY").build()
bannerAd.loadAd(adRequest)
|
|
SDK 7
|
void loadAd() {
Map<String, String> parameters = new HashMap<>();
parameters.put("adapter_network_name", "AdNetwork");
parameters.put("adapter_network_version", "1.2.3");
parameters.put("adapter_version", "1.0.0");
AdRequest adRequest = new AdRequest.Builder()
.setParameters(parameters)
.build();
bannerView.loadAd(adRequest);
}
|
|
SDK 8
|
void loadAd() {
AdapterIdentity adapterIdentity = new AdapterIdentity("AdNetwork", "1.0.0", "1.2.3");
YandexAds.setAdapterIdentity(adapterIdentity);
YandexAds.initialize(this, () -> { });
AdRequest adRequest = new AdRequest.Builder("R-M-XXXXX-YY").build();
bannerView.loadAd(adRequest);
}
|
2. Renaming and simplifying the BidderTokenRequest class
- The
BidderTokenLoader class now has a builder, and the loadBidderToken static method is now an instance method.
- The
BidderTokenRequestConfiguration class has been renamed to BidderTokenRequest and updated.
- To create an instance, use the
banner, interstitial, rewarded, appOpenAd, and native factory methods instead of Builder(AdType).
|
Class
|
Status
|
|
BidderTokenRequestConfiguration
|
Removed. Use BidderTokenRequest.
|
|
BidderTokenRequestConfiguration.Builder
|
Removed. Use factory methods in BidderTokenRequest.
|
|
BidderTokenRequest
|
Added
|
|
Class
|
Builder/Method
|
Status
|
|
BidderTokenLoader
|
BidderTokenLoader(Context)
|
Now has a builder
|
|
loadBidderToken
|
Updated. The static method is now an instance method of the BidderTokenLoader class.
|
|
BidderTokenRequestConfiguration.Builder
|
setBannerAdSize(BannerAdSize)
|
Removed. Pass BannerAdSize to the BidderTokenRequest.banner(BannerAdSize) method parameters.
|
|
setParameters(Map<String, String>)
|
Removed. Pass parameters to the arguments of factory methods.
|
|
BidderTokenRequest
|
banner(BannerAdSize)
|
Added
|
|
banner(BannerAdSize, AdTargeting)
|
Added
|
|
banner(BannerAdSize, AdTargeting, Map<String, String>)
|
Added
|
|
interstitial()
|
Added
|
|
interstitial(AdTargeting)
|
Added
|
|
interstitial(AdTargeting, Map<String, String>)
|
Added
|
|
rewarded()
|
Added
|
|
rewarded(AdTargeting)
|
Added
|
|
rewarded(AdTargeting, Map<String, String>)
|
Added
|
|
appOpenAd()
|
Added
|
|
appOpenAd(AdTargeting)
|
Added
|
|
appOpenAd(AdTargeting, Map<String, String>)
|
Added
|
|
native()
|
Added
|
|
native(AdTargeting)
|
Added
|
|
native(AdTargeting, Map<String, String>)
|
Added
|
Examples
|
SDK 7
|
void loadToken() {
Map<String, String> parameters = new HashMap<>();
parameters.put("a", "b");
BidderTokenRequestConfiguration bidderTokenRequest =
new BidderTokenRequestConfiguration.Builder(AdType.INTERSTITIAL)
.setBannerAdSize(BannerAdSize.stickySize(this, screenWidth))
.setParameters(parameters)
.build();
BidderTokenLoader.loadBidderToken(
this,
bidderTokenRequest,
new BidderTokenLoadListener() { }
);
}
|
|
SDK 8
|
void loadToken() {
Map<String, String> parameters = new HashMap<>();
parameters.put("a", "b");
BidderTokenLoader bidderTokenLoader = new BidderTokenLoader(this);
bidderTokenLoader.loadBidderToken(
BidderTokenRequest.banner(BannerAdSize.inline(this, screenWidth), null, parameters),
new BidderTokenLoadListener() { }
);
bidderTokenLoader.loadBidderToken(BidderTokenRequest.interstitial(),
new BidderTokenLoadListener() { }
);
}
|
Jetpack Compose integration
We've added support for integration via Jetpack Compose. See the Jetpack Compose section at the end of the Android documentation menu:
Integration examples:
Requirements
- Gradle: 7.0 or later
- Android Gradle plugin: 8.3.2 or later
- Android SDK: 21 (Android 5.0) or later
- Kotlin: 1.9.0 or later
- Java: 8 or later