Google Ad Manager and AdMob mediation - Media
- Latest Version: android release notes
- Sample App: Teads android Sample App
This article shows you how to deliver Teads ads on your application using the AdMob adapter or Google Ad Manager (GAM) Mediation adapter.
Sample App on GitHub Teads inApp SDK Android sample App
Prerequisites
- Import the Teads inApp SDK in your project.
- GoogleMobileAds SDK: 20+
Installation
Before installing the Teads AdMob adapter, you will need to integrate GoogleMobileAds SDK into your application.
Gradle
project/build.gradle
allprojects {
  repositories {
    ...
    maven { url  "https://teads.jfrog.io/artifactory/SDKAndroid-maven-prod" }
  }
}
app/build.gradle
dependencies {
  ...
  implementation 'com.google.android.gms:play-services-ads:22.6.0' // or higher
  // Teads inApp SDK
  implementation("tv.teads.sdk.android:sdk:6.x.x@aar") {
    transitive = true
  }
  // Teads Admob Adapter
  implementation 'tv.teads.sdk.android:admobadapter:6.x.x'
}
Defining a Custom Event
In order to display a Teads ad using AdMob or Google Ad Manager mediation, you need to create a custom event.
Admob
Follow the custom event documentation on the AdMob dashboard using the below values.
| Name | Value | 
|---|---|
| Class Name | tv.teads.adapter.admob.TeadsAdapter | 
| Parameter | Teads placement ID (PID) | 
Google Ad Manager
Follow the custom event documentation on Google Ad Manager using the below values.
| Name | Value | 
|---|---|
| Class Name | tv.teads.adapter.admob.TeadsAdapter | 
| Parameter | Teads placement ID (PID) | 
Please retrieve your production PID from your local account manager.
See this page for test PIDs and creative formats.
Ad Resizing
The code below must be implemented to enable the resizing of the mediated ad slot making possible the rendering of square and vertical creatives.
Initialize the TeadsHelper first.
TeadsHelper.initialize()
You can instantiate a new listener as below, the listener needs to be a class member field or strong referenced somewhere, we keep internally a weak reference to it, so it goes garbage collected when you don't need it anymore:
listener = object : TeadsAdapterListener {
  override fun onRatioUpdated(adRatio: AdRatio) {
    val params: ViewGroup.LayoutParams = adView.layoutParams
    // Here the width is MATCH_PARENT
    params.height = adRatio.calculateHeight(adView.measuredWidth)
    adView.layoutParams = params
  }
  override fun adOpportunityTrackerView(trackerView: AdOpportunityTrackerView) {
  }
}
Use the helper to attach a listener, it will return you a UNIQUE key to reference the current listener attached.
val key = TeadsHelper.attachListener(listener)
Finally, add it to your current ad settings for the specific ad request
val settings = TeadsMediationSettings.Builder()
                 .setMediationListenerKey(key)
                 .build()
val adRequest = AdRequest.Builder()
                .addNetworkExtrasBundle(TeadsAdapter::class.java, settings.toBundle())
                .build()
Mediation settings
Find the full settings list in the Integration Guide and Settings Configuration
Check list
- ✅ Ensure Brand Safety is enabled
- ✅ Ensure you comply with privacy legal requirements (GDPR/CCPA/GPP)
- ✅ Comply with app-ads.txt
- ✅ Enable ad view resizing
- ✅ Test different PIDs with various ad formats and sizes
- ✅ Enable validation mode to ensure key features are working
- ✅ Implement proper error handling
- ✅ Test on different devices and screen sizes