---
title: AdMob
description: >-
  AdMob react-native guide for Custom Adapter (GMA SDK).
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.

## Prerequisites

*Performed by: Developer*

* See the [Compatibility Matrix](/reference/compatibility-matrix) for the minimum Android and iOS versions for this package.


## Install the SDK

*Performed by: Developer*

Ensure your `android/build.gradle` (project-level) includes the required repositories:

```
allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}
```

**Note:** On Gradle 7+, use [Gradle Setup (Gradle 7+)](/guides/gradle-setup) instead - declare repositories in `settings.gradle` under `dependencyResolutionManagement` and remove the `allprojects` block. Use one approach, not both.

### Android

Add to `package.json` and install via npm/yarn:

```
tapmind_ads_admob: "2.1.4"
```

Also require `react-native-google-mobile-ads`.

### iOS

Add to `package.json` and install via npm/yarn:

```
tapmind_ads_admob: "2.1.4"
```

Also require `react-native-google-mobile-ads`.

Add the following `post_install` hook to your app's **Podfile** (alongside `use_native_modules!` and `react_native_post_install`):

```ruby
post_install do |installer|
  react_native_post_install(
    installer,
    config[:reactNativePath],
    :mac_catalyst_enabled => false,
  )
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_USER_SCRIPT_SANDBOXING'] = 'NO'
      config.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
      config.build_settings['CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS'] = 'NO'
      config.build_settings['GCC_WARN_PEDANTIC'] = 'NO'
      if target.name == 'fmt'
        config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++17'
      end
    end
  end
end
```

## Configure AdMob

*Performed by: Ad ops*

**Create the custom event (waterfall):** Mediation → Create mediation group → select **Android or iOS** and ad format → name it (provided by your account manager) → Add ad units → select your app and ad units.

**Add the ad source:** Waterfall source → Set up ad source → Custom event → select your app/platform → select the ad unit, then enter:

### Android

```
Mapping name : provided by your account manager
eCPM         : provided by your account manager
Class        : com.tapmind.tech.TapMindMediationAdapterAdmob
Parameter    : {"placementName": "provided by your account manager"}
```

### iOS

```
Mapping name : provided by your account manager
eCPM         : provided by your account manager
Class        : TapMindMediationAdapterAdmob
Parameter    : {"placementName": "provided by your account manager"}
```

> The **placementName** value is case-sensitive and must exactly match the Placement Name configured in the TapMind Dashboard.

**Note:** Official Google documentation: [Create a custom event](https://support.google.com/admob/answer/13407144)

## Verify integration

*Performed by: Developer*

After install and dashboard configuration:

1. Run your app in a **debug** build. TapMind's test mode is enabled automatically in debug builds and serves test ads at a high fill rate.
2. Request an ad through your mediation SDK as you normally would.
3. Confirm a TapMind ad fills. Check logs for the tag **`TapMindAdapter`**.
4. When verified, build in **release** mode for production - test mode is disabled automatically in release builds, and live ads serve.

**Note:** Test mode is automatic. It follows your build type: debug = test ads, release = live ads. There is no flag to enable or disable, and nothing to turn off before going live.

**Release build QA:** There is currently no documented release-safe test path to validate R8/ProGuard without serving live ads. Consumer ProGuard rules from the TapMind AAR are applied automatically when you integrate the published adapter packages.

## Troubleshooting

*Performed by: Developer*

Before diving into logs, confirm adapter class names and the LevelPlay network key against the [Class & Network Key Registry](/reference/class-network-key-registry), and `placementName` and eCPM/rate with your account manager.

See [Troubleshooting](/reference/troubleshooting) for common symptoms, mediation-specific fixes, release vs debug guidance, and escalation steps. Partner-specific verification steps are under **Verify integration** above.
