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 choose an ad format (such as native or rewarded video) and follow the steps to implement it.
Before you begin
To prepare your app, complete the steps in the following sections.
App prerequisites
-
Make sure that your app's build file uses the following values:
- Minimum SDK version of
21
or higher - Compile SDK version of
33
or higher
- Minimum SDK version of
Set up your app in your AdMob account
Register your app as an AdMob app by completing the following steps:
Sign in to or sign up for an AdMob account.
Register your app with AdMob. This step creates an AdMob app with a unique AdMob App ID that is needed later in this guide.
Configure your app
In your Gradle settings file, include the Google's Maven repository and Maven central repository:
Kotlin
pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = "My Application" include(":app")
Groovy
pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = "My Application" include ':app'
Add the dependencies for the Google Mobile Ads SDK to your app-level build file:
Kotlin
dependencies { implementation("com.google.android.gms:play-services-ads:23.3.0") }
Groovy
dependencies { implementation 'com.google.android.gms:play-services-ads:23.3.0' }
Add your AdMob app ID, as identified in the AdMob web interface, to your app's
AndroidManifest.xml
file. To do so, add a<meta-data>
tag withandroid:name="com.google.android.gms.ads.APPLICATION_ID"
. You can find your app ID in the AdMob web interface. Forandroid:value
, insert your own AdMob app ID, surrounded by quotation marks.<manifest> <application> <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> </application> </manifest>
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.
Also, note that failure to add the
<meta-data>
tag exactly as shown results in a crash with the message:Missing application ID.
(Optional) Declare
AD_ID
permission for previous versions to work with Android 13.If your app uses the Google Mobile Ads SDK version 20.4.0 or higher, you can skip this step since the SDK automatically declares the
com.google.android.gms.permission.AD_ID
permission and is able to access the Advertising ID whenever it's available.For apps that use the Google Mobile Ads SDK version 20.3.0 or lower and are targeting Android 13, you must add the
com.google.android.gms.permission.AD_ID
permission in theAndroidManifest.xml
file for the Google Mobile Ads SDK to access the Advertising ID:<manifest> <application> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> <!-- For apps targeting Android 13 or higher & GMA SDK version 20.3.0 or lower --> <uses-permission android:name="com.google.android.gms.permission.AD_ID"/> </application> </manifest>
To learn more about the
com.google.android.gms.permission.AD_ID
permission declaration, including how to disable it, refer to this Play Console article.
Initialize the Google Mobile Ads SDK
Before loading ads, initialize the Google Mobile Ads SDK by callingMobileAds.initialize()
.
This method initializes the SDK and calls a completion listener once both the Google Mobile Ads SDK and adapter initializations have completed, or after a 30-second timeout. This needs to be done only once, ideally at app launch.
Ads may be preloaded by the Google Mobile Ads SDK or mediation partner SDKs
upon initialization. If you need to obtain consent from users in the European
Economic Area (EEA), set any request-specific flags, such as
setTagForChildDirectedTreatment()
or
setTagForUnderAgeOfConsent()
,
or
otherwise take action before loading ads, ensure you do so before initializing
the Google Mobile Ads SDK.
Here's an example of how to call the initialize()
method on a background
thread within an Activity:
Java
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(
() -> {
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this, initializationStatus -> {});
})
.start();
}
}
Kotlin
import com.google.android.gms.ads.MobileAds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this@MainActivity) {}
}
}
}
Select an ad format
The Google Mobile Ads SDK is now imported 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.
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.
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.
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.
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.
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.
Additional resources
The Google Mobile Ads repository on GitHub demonstrates how to use the different ad formats that this API offers.