Skip to main content

Google Ad Manager and AdMob mediation - Native Ad


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

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.

NameValue
Class Nametv.teads.adapter.admob.nativead.TeadsNativeAdapter
ParameterTeads placement ID (PID)

Follow the custom event documentation on Google Ad Manager using the below values.

NameValue
Class Nametv.teads.adapter.admob.nativead.TeadsNativeAdapter
ParameterTeads placement ID (PID)

Please retrieve your production PID from your local account manager.

See this page for test PIDs and creative formats.

Display an ad

Create your custom layout

Create a new layout for an ad item with the AdMob container NativeAdView

<com.google.android.gms.ads.nativead.NativeAdView
xmlns:android="http://schemas.android.com/apk/res/android">

<TextView
android:id="@+id/ad_headline"
...
/>

<com.google.android.gms.ads.nativead.MediaView
android:id="@+id/ad_media"
...
/>

...
</com.google.android.gms.ads.nativead.NativeAdView>

Native Ad Elements

  • headlineView (Guaranteed in every request)
  • mediaView (Guaranteed in every request)
  • bodyView
  • callToActionView
  • iconView
  • priceView
  • starRatingView
  • storeView
  • advertiserView

Request an ad

Create the AdLoader

You need to inflate your previously created XML view using LayoutInflater

MobileAds.initialize(this)

val adLoader = AdLoader.Builder(this, ADMOB_TEADS_NATIVE_ID)
.forNativeAd { ad: NativeAd ->
adView = layoutInflater.inflate(R.layout.layout_admob_native, null) as NativeAdView
populateUnifiedNativeAdView(ad, adView)
}
.withAdListener(object : AdListener() {
...
// can subscribe to other ad experience events
override fun onAdFailedToLoad(error: LoadAdError) {}
})
.withNativeAdOptions(NativeAdOptions.Builder().build())
.build()

Load an ad

Create the TeadsMediationSettings, then add the settings to the AdRequest using toBundle() method

val settings = TeadsMediationSettings.Builder()
.enableDebug()
.build()

val adRequest = AdRequest.Builder()
.addNetworkExtrasBundle(TeadsNativeAdapter::class.java, settings.toBundle())
.build()

adLoader.loadAd(adRequest)

Populate the ad

We can then populate and customize our NativeAdView according the data we have received

private fun populateUnifiedNativeAdView(nativeAd: NativeAd, adView: NativeAdView) {
// Set the media view. Media content will be automatically populated in the media view once
// adView.setNativeAd() is called.
val mediaView: MediaView = adView.findViewById(R.id.ad_media)

adView.mediaView = mediaView
adView.headlineView = adView.findViewById(R.id.ad_headline)

// The headline is guaranteed to be in every UnifiedNativeAd.
(adView.headlineView as TextView).text = nativeAd.headline

// every other assets aren't guaranteed to be in every UnifiedNativeAd, so it's important to
// check before trying to display them

adView.setNativeAd(nativeAd)
// Add the NativeAdView to your main layout inside your container
containerAdView.addView(adView)
}

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