Interstitial ads
Interstitial advertising is a full-screen ad format embedded within the app content during natural pauses, such as transitioning between game levels or completing a target action.
When the app renders an interstitial ad, the user has two options: click the ad and proceed to the advertiser site or close the ad and go back to the app.
In interstitial ads, user attention is fully focused on the ads, which is why the impression cost is higher.
Appearance
This guide will show how to integrate interstitial ads into iOS apps. In addition to code examples and instructions, it contains format-specific recommendations and links to additional resources.
Prerequisite
- Follow the SDK integration steps described in Quick start.
- Initialize your ad SDK in advance.
- Make sure you're running the latest Yandex Mobile Ads SDK version. If you're using mediation, make sure you're also running the latest version of the unified build.
Implementation
Key steps for integrating interstitial ads:
- Create and configure the
InterstitialAdLoaderad loader. - Load the ad.
- Pass additional settings if you're using Adfox.
- If needed, set a delegate for the ad object and implement the required
InterstitialAdDelegatemethods. - Show the ad.
Features of interstitial ad integration
-
All calls to Yandex Mobile Ads SDK methods must be made from the main thread.
-
We strongly advise against attempting to load a new ad when a load error occurs. With a completion handler, that is a
.failureresult; with Swift Concurrency, handle it incatch. If you need to retry from the error handler, limit ad load retries to avoid recurring failed ad requests due to network connection constraints. -
We recommend keeping a strong reference to the ad and its loader throughout the lifecycle of the screen interacting with the ad.
Loading ads
To load interstitial ads, create an instance of the InterstitialAdLoader class.
Use loadAd(with:completion:) with a completion handler, or the Swift Concurrency overload loadAd(with:).
You can extend the ad request using AdRequest by passing user interests, page context, location, or other data. Additional contextual data in the request can significantly improve ad quality. Read more in the Ad targeting section.
The following example shows how to load an interstitial ad from a view controller.
final class InterstitialViewController: UIViewController {
private lazy var interstitialAdLoader = InterstitialAdLoader()
private var interstitialAd: InterstitialAd?
func loadAd() async {
let request = AdRequest(adUnitID: "R-M-XXXXX-YY")
do {
let ad = try await interstitialAdLoader.loadAd(with: request)
interstitialAd = ad
ad.delegate = self
} catch {
// Load error
}
}
}
final class InterstitialViewController: UIViewController {
private lazy var interstitialAdLoader = InterstitialAdLoader()
private var interstitialAd: InterstitialAd?
func loadAd() {
let request = AdRequest(adUnitID: "R-M-XXXXX-YY")
interstitialAdLoader.loadAd(with: request) { [weak self] result in
switch result {
case .success(let ad):
self?.interstitialAd = ad
ad.delegate = self
case .failure:
// Load error
break
}
}
}
}
Ad rendering
Interstitial ads should be displayed during natural pauses in the app's operation. One good option is inserting interstitial ads between game levels or after a conversion (for example, when a file has been downloaded).
After you successfully load an interstitial ad, keep a reference to it and show it:
final class InterstitialViewController: UIViewController {
private lazy var interstitialAdLoader = InterstitialAdLoader()
private var interstitialAd: InterstitialAd?
func showAd() {
interstitialAd?.show(from: self)
}
}
Testing interstitial ad integration
Using demo ad units for ad testing
We recommend using test ads to test your ad integration and your app itself.
To guarantee that test ads are returned for every ad request, we created a special demo ad placement ID. Use it to check your ad integration.
Demo adUnitId: demo-interstitial-yandex.
Warning
Make sure that before placing the application in the store, you replaced the demo ad placement ID with a real one, obtained in the Yandex Advertising Network interface.
You can find the list of available demo ad placement IDs in the Demo ad units for testing section.
Testing ad integration
You can test your ad integration using the native Console tool.
To view detailed logs, call the YandexAds class's enableLogging method.
YandexAds.enableLogging()
To view SDK logs, go to the Console tool and set Subsystem = com.mobile.ads.ads.sdk. You can also filter logs by category and error level.
If you're having problems integrating ads, you'll get a detailed report on the issues and recommendations for how to fix them.
Additional resources
-
Link to GitHub.