Setup

Custom events let you add waterfall mediation for an ad network that isn't a supported ad network . You do this by implementing a custom event adapter for the ad network you want to integrate.

Prerequisites

Before you can create custom events, you must first integrate one of the following ad format into your app:

Create a custom event in the UI

A custom event must first be created in the Ad Manager UI. See the instructions in Create and manage yield groups .

You need to supply the following:

Class Name

The fully-qualified name of the class that implements the custom event adapter—for example, com.google.ads.mediation.sample.customevent.SampleCustomEvent . As a best practice, we recommend using a single adapter class for all custom event ad formats.

Label

A unique name defining the ad source.

Parameter

An optional string argument passed to your custom event adapter.

Initialize the adapter

When Google Mobile Ads SDK initializes, initialize() is invoked on all supported third-party adapters and custom events configured for the app within the Ad Manager UI. Use this method to perform any necessary setup or initialization on the required third-party SDK for your custom event.

Java

  package 
  
 com.google.ads.mediation.sample.customevent 
 ; 
 import 
  
 com.google.android.gms.ads.mediation.Adapter 
 ; 
 import 
  
 com.google.android.gms.ads.mediation.InitializationCompleteCallback 
 ; 
 import 
  
 com.google.android.gms.ads.mediation.MediationConfiguration 
 ; 
 public 
  
 class 
 SampleAdNetworkCustomEvent 
  
 extends 
  
 Adapter 
  
 { 
  
 private 
  
 static 
  
 final 
  
 String 
  
 SAMPLE_AD_UNIT_KEY 
  
 = 
  
 "parameter" 
 ; 
  
 @Override 
  
 public 
  
 void 
  
 initialize 
 ( 
 Context 
  
 context 
 , 
  
 InitializationCompleteCallback 
  
 initializationCompleteCallback 
 , 
  
 List<MediationConfiguration> 
  
 mediationConfigurations 
 ) 
  
 { 
  
 // This is where you will initialize the SDK that this custom 
  
 // event is built for. Upon finishing the SDK initialization, 
  
 // call the completion handler with success. 
  
 initializationCompleteCallback 
 . 
 onInitializationSucceeded 
 (); 
  
 } 
 } 
 

Kotlin

  package 
  
 com.google.ads.mediation.sample.customevent 
 import 
  
 com.google.android.gms.ads.mediation.Adapter 
 import 
  
 com.google.android.gms.ads.mediation.InitializationCompleteCallback 
 import 
  
 com.google.android.gms.ads.mediation.MediationConfiguration 
 class 
  
 SampleCustomEvent 
  
 : 
  
 Adapter 
 () 
  
 { 
  
 private 
  
 val 
  
 SAMPLE_AD_UNIT_KEY 
  
 = 
  
 "parameter" 
  
 override 
  
 fun 
  
 initialize 
 ( 
  
 context 
 : 
  
 Context 
 , 
  
 initializationCompleteCallback 
 : 
  
 InitializationCompleteCallback 
 , 
  
 mediationConfigurations 
 : 
  
 List<MediationConfiguration> 
  
 ) 
  
 { 
  
 // This is where you will initialize the SDK that this custom 
  
 // event is built for. Upon finishing the SDK initialization, 
  
 // call the completion handler with success. 
  
 initializationCompleteCallback 
 . 
 onInitializationSucceeded 
 () 
  
 } 
 } 
 

Report version numbers

All custom events must report to Google Mobile Ads SDK both the version of the custom event adapter itself and the version of the third-party SDK the custom event interfaces with. Versions are reported as VersionInfo objects:

Java

  package 
  
 com.google.ads.mediation.sample.customevent 
 ; 
 public 
  
 class 
 SampleCustomEvent 
  
 extends 
  
 Adapter 
  
 { 
  
 @Override 
  
 public 
  
 VersionInfo 
  
 getVersionInfo 
 () 
  
 { 
  
 String 
  
 versionString 
  
 = 
  
 new 
  
 VersionInfo 
 ( 
 1 
 , 
  
 2 
 , 
  
 3 
 ); 
  
 String 
 [] 
  
 splits 
  
 = 
  
 versionString 
 . 
 split 
 ( 
 "\\." 
 ); 
  
 if 
  
 ( 
 splits 
 . 
 length 
  
> = 
  
 4 
 ) 
  
 { 
  
 int 
  
 major 
  
 = 
  
 Integer 
 . 
 parseInt 
 ( 
 splits 
 [ 
 0 
 ] 
 ); 
  
 int 
  
 minor 
  
 = 
  
 Integer 
 . 
 parseInt 
 ( 
 splits 
 [ 
 1 
 ] 
 ); 
  
 int 
  
 micro 
  
 = 
  
 Integer 
 . 
 parseInt 
 ( 
 splits 
 [ 
 2 
 ] 
 ) 
  
 * 
  
 100 
  
 + 
  
 Integer 
 . 
 parseInt 
 ( 
 splits 
 [ 
 3 
 ] 
 ); 
  
 return 
  
 new 
  
 VersionInfo 
 ( 
 major 
 , 
  
 minor 
 , 
  
 micro 
 ); 
  
 } 
  
 return 
  
 new 
  
 VersionInfo 
 ( 
 0 
 , 
  
 0 
 , 
  
 0 
 ); 
  
 } 
  
 @Override 
  
 public 
  
 VersionInfo 
  
 getSDKVersionInfo 
 () 
  
 { 
  
 String 
  
 versionString 
  
 = 
  
 SampleAdRequest 
 . 
 getSDKVersion 
 (); 
  
 String 
 [] 
  
 splits 
  
 = 
  
 versionString 
 . 
 split 
 ( 
 "\\." 
 ); 
  
 if 
  
 ( 
 splits 
 . 
 length 
  
> = 
  
 3 
 ) 
  
 { 
  
 int 
  
 major 
  
 = 
  
 Integer 
 . 
 parseInt 
 ( 
 splits 
 [ 
 0 
 ] 
 ); 
  
 int 
  
 minor 
  
 = 
  
 Integer 
 . 
 parseInt 
 ( 
 splits 
 [ 
 1 
 ] 
 ); 
  
 int 
  
 micro 
  
 = 
  
 Integer 
 . 
 parseInt 
 ( 
 splits 
 [ 
 2 
 ] 
 ); 
  
 return 
  
 new 
  
 VersionInfo 
 ( 
 major 
 , 
  
 minor 
 , 
  
 micro 
 ); 
  
 } 
  
 return 
  
 new 
  
 VersionInfo 
 ( 
 0 
 , 
  
 0 
 , 
  
 0 
 ); 
  
 } 
 } 
 

Kotlin

  package 
  
 com.google.ads.mediation.sample.customevent 
 class 
  
 SampleCustomEvent 
  
 : 
  
 Adapter 
 () 
  
 { 
  
 override 
  
 fun 
  
 getVersionInfo 
 (): 
  
 VersionInfo 
  
 { 
  
 val 
  
 versionString 
  
 = 
  
 VersionInfo 
 ( 
 1 
 , 
 2 
 , 
 3 
 ). 
 toString 
 () 
  
 val 
  
 splits 
 : 
  
 List<String> 
  
 = 
  
 versionString 
 . 
 split 
 ( 
 "\\." 
 ) 
  
 if 
  
 ( 
 splits 
 . 
 count 
 () 
  
> = 
  
 4 
 ) 
  
 { 
  
 val 
  
 major 
  
 = 
  
 splits 
 [ 
 0 
 ] 
 . 
 toInt 
 () 
  
 val 
  
 minor 
  
 = 
  
 splits 
 [ 
 1 
 ] 
 . 
 toInt 
 () 
  
 val 
  
 micro 
  
 = 
  
 ( 
 splits 
 [ 
 2 
 ] 
 . 
 toInt 
 () 
  
 * 
  
 100 
 ) 
  
 + 
  
 splits 
 [ 
 3 
 ] 
 . 
 toInt 
 () 
  
 return 
  
 VersionInfo 
 ( 
 major 
 , 
  
 minor 
 , 
  
 micro 
 ) 
  
 } 
  
 return 
  
 VersionInfo 
 ( 
 0 
 , 
  
 0 
 , 
  
 0 
 ) 
  
 } 
  
 override 
  
 fun 
  
 getSDKVersionInfo 
 (): 
  
 VersionInfo 
  
 { 
  
 val 
  
 versionString 
  
 = 
  
 VersionInfo 
 ( 
 1 
 , 
 2 
 , 
 3 
 ). 
 toString 
 () 
  
 val 
  
 splits 
 : 
  
 List<String> 
  
 = 
  
 versionString 
 . 
 split 
 ( 
 "\\." 
 ) 
  
 if 
  
 ( 
 splits 
 . 
 count 
 () 
  
> = 
  
 3 
 ) 
  
 { 
  
 val 
  
 major 
  
 = 
  
 splits 
 [ 
 0 
 ] 
 . 
 toInt 
 () 
  
 val 
  
 minor 
  
 = 
  
 splits 
 [ 
 1 
 ] 
 . 
 toInt 
 () 
  
 val 
  
 micro 
  
 = 
  
 splits 
 [ 
 2 
 ] 
 . 
 toInt 
 () 
  
 return 
  
 VersionInfo 
 ( 
 major 
 , 
  
 minor 
 , 
  
 micro 
 ) 
  
 } 
  
 return 
  
 VersionInfo 
 ( 
 0 
 , 
  
 0 
 , 
  
 0 
 ) 
  
 } 
 } 
 

Request ad

To request an ad, refer to the instructions specific to the ad format:

Design a Mobile Site
View Site in Mobile | Classic
Share by: