This guide is for publishers who want to monetize an iOS app with AdMob
and aren't using Firebase. If you plan to include Firebase in your app (or
you're considering it), see the
AdMob with Firebase
version of this guide instead.
Integrating the Google Mobile Ads SDK into an app is the first step toward
displaying ads and earning revenue. Once you've integrated the SDK, you can
proceed to implement one or more of the
supported ad formats
.
Prerequisites
- Use Xcode 15.3 or higher
- Target iOS 12.0 or higher
Import the Mobile Ads SDK
Use one of the following methods to import the Google Mobile Ads SDK.
CocoaPods (preferred)
The simplest way to import the SDK into an iOS project is to use
CocoaPods
. Open
your project's Podfile and add this line to your app's target:
pod 'Google-Mobile-Ads-SDK'
Then from the command line run:
pod install --repo-update
If you're new to CocoaPods, see their
official documentation
for info
on how to create and use Podfiles.
Swift Package Manager
The Google Mobile Ads SDK supports
Swift Package
Manager
starting in version 9.0.0. Follow these
steps to import the Swift package:
In Xcode, install the Google Mobile Ads Swift Package by navigating to
File > Add Packages...
.
In the prompt that appears, search for the Google Mobile Ads Swift Package
GitHub repository:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
Select the version of the Google Mobile Ads Swift Package you want to use.
For new projects, we recommend using the
Up to Next Major Version
.
Once you're finished, Xcode will begin resolving your package dependencies and
downloading them in the background. For more details on how to add package
dependencies, see
Apple's article
.
Manual download
Download
the Google Mobile Ads SDK
and
Embed & Sign
the following frameworks into your Xcode project:
GoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
Add the
-ObjC
linker flag to
Other Linker Flags
in your project's
build settings:
Update your Info.plist
Update your app's
Info.plist
file to add two keys:
A
GADApplicationIdentifier
key with a string value of your
AdMob app ID
found in the AdMob UI
.
A
SKAdNetworkItems
key with
SKAdNetworkIdentifier
values for Google
(
cstr6suwn9.skadnetwork
) and
select third-party buyers
who have provided these values to Google.
Complete snippet
<key
>GADApplicationIdentifier
</key>
<string>
ca-app-pub-3940256099942544~1458002511
</string>
<key>
SKAdNetworkItems
</key>
<array>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>4pfyvq9l8r.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>5a6flpkh64.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>cp8zw746q7.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>c6k4g5qg8m.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>s39g8k73mm.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>3qy4746246.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>f38h382jlk.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>v4nxqhlyqp.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>wzmmz9fp6w.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>t38b2kh725.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>7ug5zh24hu.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>vutu7akeur.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>y5ghdn5j9k.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>n6fk4nfna4.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>47vhws6wlr.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>eh6m2bh4zr.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>2u9pt9hc89.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>klf5c3l5u5.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>ecpz2srf59.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>pwa73g5rt2.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>e5fvkxwrpn.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>8c4e2ghe7u.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>zq492l623r.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>
SKAdNetworkIdentifier
</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
</array>
If you haven't
created an AdMob
account
and
registered an
app
yet, now's a great time
to do so.
In a real app, replace the sample app ID with your
actual
AdMob app ID
. You can use the sample ID if
you're just experimenting with the SDK in a Hello World app.
Initialize the Mobile Ads SDK
Before loading ads, call the
startWithCompletionHandler:
method on the
GADMobileAds.sharedInstance
,
which initializes the SDK and calls back a completion handler once
initialization is complete (or after a 30-second timeout). This only needs to be
done once, ideally at app launch. You should call
startWithCompletionHandler:
as early as possible.
Here's an example of how to call the
startWithCompletionHandler:
method in
your
AppDelegate
:
Example AppDelegate (excerpt)
Swift
import GoogleMobileAds
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
SwiftUI
import GoogleMobileAds
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
@main
struct YourApp: App {
// To handle app delegate callbacks in an app that uses the SwiftUI lifecycle,
// you must create an application delegate and attach it to your `App` struct
// using `UIApplicationDelegateAdaptor`.
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
NavigationView {
ContentView()
}
}
}
}
Objective-C
@import GoogleMobileAds;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];
return YES;
}
@end
The Mobile Ads SDK is now imported and initialized, and you're ready to
implement an ad. AdMob offers a number of
different ad formats, so you can choose the one that best fits your app's user
experience.
For SwiftUI developers, follow our
SwiftUI
guide
.
Banner
Banner ad units display rectangular ads that occupy a portion of an app's
layout. They can refresh automatically after a set period of time. This means
users view a new ad at regular intervals, even if they stay on the same
screen in your app. They're also the simplest ad format to implement.
Implement banner ads
Interstitial
Interstitial ad units show full-page ads in your app. Place them at natural
breaks and transitions in your app's interface, such as after level completion
in a gaming app.
Implement interstitial ads
Native
Native ads are ads where you can customize the way assets such as headlines and
calls to action are presented in your apps. By styling the ad yourself, you can
create a natural, unobtrusive ad presentations that can add to a rich user
experience.
Implement native ads
Rewarded
Rewarded ad units enable users to play games, take surveys, or watch videos to
earn in-app rewards, such as coins, extra lives, or points. You can set
different rewards for different ad units, and specify the reward values and
items the user received.
Implement rewarded ads
Rewarded interstitial
Rewarded interstitial is a new type of incentivized ad format that lets you
offer rewards, such as coins or extra lives, for ads that appear automatically
during natural app transitions.
Unlike rewarded ads, users aren't required to opt in to view a rewarded
interstitial.
Instead of the opt-in prompt in rewarded ads, rewarded interstitials require an
intro screen that announces the reward and gives users a chance to opt out if
they want to do so.
Implement rewarded interstitial ads
App open
App open is an ad format that appears when users open or switch back to your
app. The ad overlays the loading screen.
Implement app open ads