Interstitial ads are full-screen ads that cover the interface of an app until
closed by the user. They're typically displayed at natural transition points in
the flow of an app, such as between activities or during the pause between
levels in a game. When an app shows an interstitial ad, the user has the choice
to either tap on the ad and continue to its destination or close it and return
to the app.Case study.
This guide shows you how to integrate interstitial ads into an iOS app.
When building and testing your apps, make sure you use test ads rather than
live, production ads. Failure to do so can lead to suspension of your account.
The easiest way to load test ads is to use our dedicated test ad unit ID
for iOS interstitials:ca-app-pub-3940256099942544/4411468910
It's been specially configured to return test ads for every request, and you're
free to use it in your own apps while coding, testing, and debugging. Just make
sure you replace it with your own ad unit ID before publishing your app.
For more information about how the Mobile Ads SDK's test ads work, seeTest Ads.
Implementation
The main steps to integrate interstitial ads are:
Load an ad.
Register for callbacks.
Display the ad.
Load an ad
Loading an ad is accomplished using theload(adUnitID:request)method on theGADInterstitialAdclass.
Swift
fileprivatefuncloadInterstitial()async{do{interstitial=tryawaitInterstitialAd.load(with:"ca-app-pub-3940256099942544/4411468910",request:Request())interstitial?.fullScreenContentDelegate=self}catch{print("Failed to load interstitial ad with error:\(error.localizedDescription)")}}
importGoogleMobileAdsclassInterstitialViewModel:NSObject,FullScreenContentDelegate{privatevarinterstitialAd:InterstitialAd?funcloadAd()async{do{interstitialAd=tryawaitInterstitialAd.load(with:"ca-app-pub-3940256099942544/4411468910",request:Request())interstitialAd?.fullScreenContentDelegate=self}catch{print("Failed to load interstitial ad with error:\(error.localizedDescription)")}}
[GADInterstitialAdloadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"request:[GADRequestrequest]completionHandler:^(GADInterstitialAd*ad,NSError*error){if(error){NSLog(@"Failed to load interstitial ad with error: %@",[errorlocalizedDescription]);return;}self.interstitial=ad;self.interstitial.fullScreenContentDelegate=self;}];
In order to receive notifications for presentation events, you must assign theGADFullScreenContentDelegate to thefullScreenContentDelegate` property of the
returned ad:
TheGADFullScreenContentDelegateprotocol handles callbacks for when the ad
presents successfully or unsuccessfully, and when it is dismissed. The following
code shows how to implement the protocol:
Swift
funcadDidRecordImpression(_ad:FullScreenPresentingAd){print("\(#function)called")}funcadDidRecordClick(_ad:FullScreenPresentingAd){print("\(#function)called")}funcad(_ad:FullScreenPresentingAd,didFailToPresentFullScreenContentWithErrorerror:Error){print("\(#function)called with error:\(error.localizedDescription)")// Clear the interstitial ad.interstitial=nil}funcadWillPresentFullScreenContent(_ad:FullScreenPresentingAd){print("\(#function)called")}funcadWillDismissFullScreenContent(_ad:FullScreenPresentingAd){print("\(#function)called")}funcadDidDismissFullScreenContent(_ad:FullScreenPresentingAd){print("\(#function)called")// Clear the interstitial ad.interstitial=nil}
funcadDidRecordImpression(_ad:FullScreenPresentingAd){print("\(#function)called")}funcadDidRecordClick(_ad:FullScreenPresentingAd){print("\(#function)called")}funcad(_ad:FullScreenPresentingAd,didFailToPresentFullScreenContentWithErrorerror:Error){print("\(#function)called")}funcadWillPresentFullScreenContent(_ad:FullScreenPresentingAd){print("\(#function)called")}funcadWillDismissFullScreenContent(_ad:FullScreenPresentingAd){print("\(#function)called")}funcadDidDismissFullScreenContent(_ad:FullScreenPresentingAd){print("\(#function)called")// Clear the interstitial ad.interstitialAd=nil}
-(void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad{NSLog(@"%s called",__PRETTY_FUNCTION__);}-(void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad{NSLog(@"%s called",__PRETTY_FUNCTION__);}-(void)ad:(id<GADFullScreenPresentingAd>)addidFailToPresentFullScreenContentWithError:(NSError*)error{NSLog(@"%s called with error: %@",__PRETTY_FUNCTION__,error.localizedDescription);// Clear the interstitial ad.self.interstitial=nil;}-(void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad{NSLog(@"%s called",__PRETTY_FUNCTION__);}-(void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad{NSLog(@"%s called",__PRETTY_FUNCTION__);}-(void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad{NSLog(@"%s called",__PRETTY_FUNCTION__);// Clear the interstitial ad.self.interstitial=nil;}
GADInterstitialAdis a one-time-use object. This
means that once an interstitial ad is shown, it cannot be shown again. A best
practice is to load another interstitial ad in theadDidDismissFullScreenContent:method onGADFullScreenContentDelegateso
that the next interstitial ad starts loading as soon as the previous one is
dismissed.
Display the ad
Interstitials should be displayed during natural pauses in the flow of an app.
Between levels of a game is a good example, or after the user completes a task.
Consider whether interstitial ads are the right type of ad for your app.
Interstitial ads work best in apps with natural transition points.
The conclusion of a task within an app, like sharing an image or completing a
game level, creates such a point. Because the user is expecting a break in the
action, it's easy to present an interstitial ad without disrupting their
experience. Make sure you consider at which points in your app's workflow you'll
display interstitial ads and how the user is likely to respond.
Remember to pause the action when displaying an interstitial ad.
There are a number of different types of interstitial ads: text, image,
video, and more. It's important to make sure that when your app displays an
interstitial ad, it also suspends its use of some resources to allow the ad to
take advantage of them. For example, when you make the call to display an
interstitial ad, be sure to pause any audio output being produced by your app.
You can resume playing sounds in theadDidDismissFullScreenContent:event handler, which will be invoked when the user has finished interacting
with the ad. In addition, consider temporarily halting any intense computation
tasks (such as a game loop) while the ad is being displayed. This will ensure
that the user doesn't experience slow or unresponsive graphics or stuttered
video.
Allow for adequate loading time.
Just as it's important to make sure you display interstitial ads at an
appropriate time, it's also important to make sure the user doesn't have to
wait for them to load. Loading the ad in advance before you intend to show
can ensure that your app has a fully loaded interstitial ad at the ready when
the time comes to display one.
Don't flood the user with ads.
While increasing the frequency of interstitial ads in your app might seem
like a great way to increase revenue, it can also degrade the user experience
and lower clickthrough rates. Make sure that users aren't so frequently
interrupted that they're no longer able to enjoy the use of your app.
Don't use the load completion callback to show the interstitial.
This can cause a poor user experience. Instead, pre-load the ad before you
need to show it. Then check thecanPresentFromRootViewController:error:method
onGADInterstitialAdto find out if it is ready to be
shown.
Additional resources
Examples on GitHub
View the full interstitial ads examples in your preferred language:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eInterstitial ads are full-screen ads displayed at natural transition points in an iOS app, allowing users to interact or close them.\u003c/p\u003e\n"],["\u003cp\u003eThis guide provides instructions for integrating interstitial ads into an iOS app using the Google Mobile Ads SDK.\u003c/p\u003e\n"],["\u003cp\u003eImplementation involves loading an ad, registering for callbacks to handle ad events, and displaying the ad at appropriate times.\u003c/p\u003e\n"],["\u003cp\u003eBest practices include pre-loading ads, pausing app activity during ad display, and avoiding excessive ad frequency to enhance user experience.\u003c/p\u003e\n"],["\u003cp\u003eAlways test with test ads during development to prevent account suspension, and refer to the provided resources for code examples and further guidance.\u003c/p\u003e\n"]]],["Interstitial ads, which are full-screen ads in apps, are integrated into iOS apps by first loading an ad using the `load(adUnitID:request)` method with a test ad unit ID. Next, register for presentation event callbacks by assigning `GADFullScreenContentDelegate` to `fullScreenContentDelegate`. Finally, display the ad using the present method during natural app pauses. Best practices include pausing app resources while the ad is active, pre-loading ads, and avoiding ad over saturation.\n"],null,[]]