Interstitial
A full-screen ad format, interstitial ads are embedded in the app content at natural breaks, such as when a user advances to the next game level or completes a conversion action.
Note
Examples showing how all the format types work are available in the demo project.
|
Entity |
Description |
|
|
If |
|
|
Don't save links to previously displayed ads. Call |
|
|
Use:
|
Example of creating an interstitial ad using a ready-to-use XML file
class InterstitialAdActivity : AppCompatActivity(), InterstitialAdEventListener {
private var interstitialAd: InterstitialAd? = null
private lateinit var interstitialAdLoader: InterstitialAdLoader
private lateinit var binding: ActivityInterstitialAdBinding
private val adUnitId = "demo-interstitial-yandex" // Use R-M-XXXXXX-Y or demo-block (look for the description below)
private val config = AdRequestConfiguration.Builder(adUnitId).build()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityInterstitialAdBinding.inflate(layoutInflater)
setContentView(binding.root)
interstitialAdLoader = InterstitialAdLoader(this)
binding.showBanner.isEnabled = false
binding.loadBanner.setOnClickListener { loadAd() }
binding.showBanner.setOnClickListener { showAd() }
interstitialAdLoader.setAdLoadListener(object : InterstitialAdLoadListener {
override fun onAdLoaded(ad: InterstitialAd) {
interstitialAd = ad
binding.showBanner.isEnabled = true
}
override fun onAdFailedToLoad(error: AdRequestError) {
binding.showBanner.isEnabled = false
}
})
}
private fun loadAd() {
binding.showBanner.isEnabled = false
interstitialAdLoader.loadAd(config)
}
private fun showAd() {
interstitialAd?.apply {
setAdEventListener(this@InterstitialAdActivity)
show(this@InterstitialAdActivity)
} ?: run {
}
}
override fun onDestroy() {
interstitialAd?.setAdEventListener(null)
interstitialAd = null
interstitialAdLoader.setAdLoadListener(null)
super.onDestroy()
}
override fun onAdClicked() {}
override fun onAdDismissed() {
interstitialAdLoader.loadAd(config)
}
override fun onAdFailedToShow(adError: AdError) {}
override fun onAdImpression(impressionData: ImpressionData?) {}
override fun onAdShown() {}
}
public class InterstitialAdActivity extends AppCompatActivity implements InterstitialAdEventListener {
private InterstitialAd interstitialAd = null;
private InterstitialAdLoader interstitialAdLoader;
private ActivityInterstitialAdBinding binding;
private final String adUnitId = "demo-interstitial-yandex"; // Use R-M-XXXXXX-Y or demo-block (look for the description below)
private final AdRequestConfiguration config = new AdRequestConfiguration.Builder(adUnitId).build();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityInterstitialAdBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
interstitialAdLoader = new InterstitialAdLoader(this);
binding.showBanner.setEnabled(false);
binding.loadBanner.setOnClickListener(v -> loadAd());
binding.showBanner.setOnClickListener(v -> showAd());
interstitialAdLoader.setAdLoadListener(new InterstitialAdLoadListener() {
@Override
public void onAdLoaded(@Nullable InterstitialAd ad) {
interstitialAd = ad;
binding.showBanner.setEnabled(true);
}
@Override
public void onAdFailedToLoad(@Nullable AdRequestError error) {
binding.showBanner.setEnabled(false);
}
});
}
private void loadAd() {
binding.showBanner.setEnabled(false);
interstitialAdLoader.loadAd(config);
}
private void showAd() {
if (interstitialAd != null) {
interstitialAd.setAdEventListener(this);
interstitialAd.show(this);
}
}
@Override
protected void onDestroy() {
if (interstitialAd != null) {
interstitialAd.setAdEventListener(null);
interstitialAd = null;
}
if (interstitialAdLoader != null) {
interstitialAdLoader.setAdLoadListener(null);
}
super.onDestroy();
}
@Override
public void onAdClicked() {}
@Override
public void onAdDismissed() {
interstitialAdLoader.loadAd(config);
}
@Override
public void onAdFailedToShow(@Nullable AdError adError) {}
@Override
public void onAdImpression(@Nullable ImpressionData impressionData) {}
@Override
public void onAdShown() {}
}
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".InterstitialAdActivity">
<Button
android:id="@+id/loadBanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Load Banner"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<Button
android:id="@+id/showBanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Banner"
app:layout_constraintTop_toBottomOf="@id/loadBanner"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="16dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
Example of creating an interstitial ad using a programmatically generated Activity
class InterstitialAdActivity : AppCompatActivity(), InterstitialAdEventListener, InterstitialAdLoadListener {
private lateinit var interstitialAdLoader: InterstitialAdLoader
private var interstitialAd: InterstitialAd? = null
private lateinit var loadButton: Button
private lateinit var showButton: Button
private val adUnitId = "demo-interstitial-yandex" // Use R-M-XXXXXX-Y or demo-block (look for the description below)
val config = AdRequestConfiguration.Builder(adUnitId).build()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val rootLayout = ConstraintLayout(this).apply {
layoutParams = LayoutParams(MATCH_PARENT, MATCH_PARENT)
}
loadButton = Button(this).apply {
text = "Load Interstitial"
id = View.generateViewId()
}
showButton = Button(this).apply {
text = "Show Interstitial"
id = View.generateViewId()
isEnabled = false
}
rootLayout.addView(loadButton, LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply {
topToTop = LayoutParams.PARENT_ID
bottomToBottom = LayoutParams.PARENT_ID
startToStart = LayoutParams.PARENT_ID
endToEnd = LayoutParams.PARENT_ID
})
rootLayout.addView(showButton, LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply {
topToBottom = loadButton.id
startToStart = LayoutParams.PARENT_ID
endToEnd = LayoutParams.PARENT_ID
topMargin = 24
})
setContentView(rootLayout)
interstitialAdLoader = InterstitialAdLoader(this)
loadButton.setOnClickListener { loadAd() }
showButton.setOnClickListener { showAd() }
interstitialAdLoader.setAdLoadListener(this@InterstitialAdActivity)
}
private fun loadAd() {
interstitialAd = null
showButton.isEnabled = false
interstitialAdLoader.loadAd(config)
}
private fun showAd() {
interstitialAd?.apply {
setAdEventListener(this@InterstitialAdActivity)
show(this@InterstitialAdActivity)
}
}
override fun onDestroy() {
interstitialAd?.setAdEventListener(null)
interstitialAd = null
interstitialAdLoader.setAdLoadListener(null)
super.onDestroy()
}
override fun onAdClicked() {}
override fun onAdDismissed() {
interstitialAdLoader.loadAd(config)
}
override fun onAdFailedToShow(adError: AdError) {}
override fun onAdImpression(impressionData: ImpressionData?) {}
override fun onAdShown() {}
override fun onAdFailedToLoad(error: AdRequestError) {}
override fun onAdLoaded(interstitialAd: InterstitialAd) {
this.interstitialAd = interstitialAd
showButton.isEnabled = true
}
}
public class InterstitialAdActivity extends AppCompatActivity
implements InterstitialAdEventListener, InterstitialAdLoadListener {
private InterstitialAdLoader interstitialAdLoader;
private InterstitialAd interstitialAd;
private Button loadButton;
private Button showButton;
private final String adUnitId = "demo-interstitial-yandex"; // Use R-M-XXXXXX-Y or demo-block (look for the description below)
private final AdRequestConfiguration config =
new AdRequestConfiguration.Builder(adUnitId).build();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConstraintLayout rootLayout = new ConstraintLayout(this);
rootLayout.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
loadButton = new Button(this);
loadButton.setText("Load Interstitial");
loadButton.setId(View.generateViewId());
showButton = new Button(this);
showButton.setText("Show Interstitial");
showButton.setId(View.generateViewId());
showButton.setEnabled(false);
LayoutParams loadBtnParams = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
loadBtnParams.topToTop = LayoutParams.PARENT_ID;
loadBtnParams.bottomToBottom = LayoutParams.PARENT_ID;
loadBtnParams.startToStart = LayoutParams.PARENT_ID;
loadBtnParams.endToEnd = LayoutParams.PARENT_ID;
rootLayout.addView(loadButton, loadBtnParams);
LayoutParams showBtnParams = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
showBtnParams.topToBottom = loadButton.getId();
showBtnParams.startToStart = LayoutParams.PARENT_ID;
showBtnParams.endToEnd = LayoutParams.PARENT_ID;
showBtnParams.topMargin = 24;
rootLayout.addView(showButton, showBtnParams);
setContentView(rootLayout);
interstitialAdLoader = new InterstitialAdLoader(this);
interstitialAdLoader.setAdLoadListener(this);
loadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadAd();
}
});
showButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAd();
}
});
}
private void loadAd() {
interstitialAd = null;
showButton.setEnabled(false);
interstitialAdLoader.loadAd(config);
}
private void showAd() {
if (interstitialAd != null) {
interstitialAd.setAdEventListener(this);
interstitialAd.show(this);
}
}
@Override
protected void onDestroy() {
if (interstitialAd != null) {
interstitialAd.setAdEventListener(null);
interstitialAd = null;
}
if (interstitialAdLoader != null) {
interstitialAdLoader.setAdLoadListener(null);
}
super.onDestroy();
}
@Override
public void onAdClicked() {}
@Override
public void onAdDismissed() {
// Optionally reload
interstitialAdLoader.loadAd(config);
}
@Override
public void onAdFailedToShow(@Nullable AdError adError) {}
@Override
public void onAdImpression(@Nullable ImpressionData impressionData) {}
@Override
public void onAdShown() {}
@Override
public void onAdFailedToLoad(@Nullable AdRequestError error) {}
@Override
public void onAdLoaded(InterstitialAd interstitialAd) {
this.interstitialAd = interstitialAd;
showButton.setEnabled(true);
}
}
Checking integration
Build and run your project. You can check if the integration is successful by searching the YandexAds keyword in Logcat:
[Integration] Ad type interstitial was integrated successfully