Implementation of AdMob/AdManager fullscreen interstitial mediation
By using mediation function of AdMob/AdManager, it can distribute fullscreen interstitial of Geniee SDK from AdMob/AdManager.
Preparation for implementation
For Fullscreen Interstitial Advertisement, the following implementation preparation is necessary.
- Google Play Services SDK To use the Geniee ad SDK, you must install the Google Play Services SDK. The Google Play Services SDK installation procedure is as follows.
- Add the following to
dependenciesofModule> build.gradle.
dependencies {
implementation 'com.google.android.gms:play-services-ads:20.0.0'
}
If you have already installed the Google Play Services SDK, no addition is required.
- Google Developers Official Site Setting Up Google Play Services
- Make sure that it is added to
DependenciesofProject Structure.
Geniee SDK
From the start guide below, you need to install Geniee SDK (
GNAdSDK) in the application.
Start GuideAndroidManifest.xml
Please set the following permissions to AndroidManifest.xml.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />1
2
3
4
5
6SDK for each add network and adapters
It is necessary to set the SDK for each ad network and the adapter to distribute using Mediation function of AdMob/AdManager and Geniee SDK.
To set all the ad networks collectively, please refer to the following link introduction method.
Bulk Implementation of All Ad NetworksAlso, in order to use the ad network individually, please select the ad network link from the following and refer to the introduction method.
Ad Network Verified version maio 1.1.13 AppLovin 9.14.5 Nend 5.4.2 Zucks 4.7.0 Tapjoy 12.7.0 UnityAds 3.4.8 Vungle 6.8.0 Imobile 2.0.20
Implementation of SDK for AdMob/AdManager Interstitial Mediation
When implementing with Maven(recommended)
Add the following to
allprojects> repositoriesinProject> build.gradle.allprojects { repositories { // GenieeSDK maven { url 'https://raw.github.com/geniee-ssp/Geniee-Android-SDK/master/repository' } } }1
2
3
4
5
6
7
8Add the following to
dependenciesofModule> build.gradle.dependencies { implementation 'jp.co.geniee.gnadgooglemediationadapter:GNAdGoogleMediationAdapter:8.5.0.0' }Implementation example
Project>build.gradle
allprojects { repositories { jcenter() google() // GenieeSDK maven { url 'https://raw.github.com/geniee-ssp/Geniee-Android-SDK/master/repository' } // nendSDK maven { url 'http://fan-adn.github.io/nendSDK-Android-lib/library' } // Maio SDK maven{ url "https://imobile-maio.github.io/maven" } // ZucksSDK maven { url 'https://github.com/zucks/ZucksAdNetworkSDK-Maven/raw/master/' } // Tapjoy SDK maven { url "https://tapjoy.bintray.com/maven" } } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26Module>build.gradle
dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') // Google SDK implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.1.1' implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0' // Geniee implementation 'jp.co.geniee.gnadsdk:GNAdSDK:8.5.1' // GenieeSDK implementation 'jp.co.geniee.gnadgooglemediationadapter:GNAdGoogleMediationAdapter:8.5.0.0' // Nend implementation 'com.android.support:cardview-v7:26.1.0' // Vungle Optional Google Play Services implementation 'com.google.android.gms:play-services-location:15.0.1' }
Introduce libraries manually
If it followed the Installing libraries with Maven procedure, you do not need to do this step.
Manual introduction procedure here
Download Geniee Adapter SDK
Download Geniee Android SDK from the following URL.
Placing the Local Library
Extract Geniee Android SDK.
Add GNSFullscreenInterstitialAdapter to the project.
If the
libsfolder does not exist, create it as necessary.Copy the following files under the
GNAdGoogleMediationAdapterfolder to thelibsfolder.
- GNAdGoogleMediationAdapter-8.5.0.0.jarAdd to
dependenciesofModule / build.gradle.dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') }1
2
3
Implementation of AdMob/AdManager interstitial advertisement
You can mediate AdMob/AdManager by calling it with the UnitID of the video rewinding mediated in AdMob/AdManager's management screen.
For details on how to implement AdMob/AdManager fullscreen interstitial, please refer to the following site.
https://developers.google.com/ad-manager/mobile-ads-sdk/android/interstitial
※ Implementation notes when using mediation
When creating the interstitial instantance, specify Activity instead of Context.
If you specify Context, mediation may not work.
Correspondence when the AdMob/AdManager interstitial ad becomes No fill
If AdMob/AdManager's interstitial fails to load, you can prevent the vacancy of ads by calling Geniee SDK. The implementation procedure is as follows.
Import the neccesary classes of Geniee SDK and AdMob SDK.
import com.google.android.gms.ads.AdError; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.FullScreenContentCallback; import com.google.android.gms.ads.LoadAdError; import com.google.android.gms.ads.interstitial.InterstitialAd; import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback; import jp.co.geniee.gnadsdk.fullscreeninterstitial.GNSFullscreenInterstitialAd;1
2
3
4
5
6
7
8
9Create an instance of
GNSFullscreenInterstitialAdin Geniee SDK by specifyingZoneIDand initialize AdMobInterstitialAd// Declare AdMob Interstitial private InterstitialAd mInterstitialAd; // Delare Geniee Interstitial private GNSFullscreenInterstitialAd mGNSFullscreenInterstitialAd; // Geniee Interstitial mGNSFullscreenInterstitialAd = new GNSFullscreenInterstitialAd("YOUR_ZONE_ID", this); // AdMob/AdManager AdRequest adRequest = new AdRequest.Builder().build(); InterstitialAd.load(this, "YOUR_AD_UNIT_ID", adRequest, new InterstitialAdLoadCallback() { @Override public void onAdLoaded(@NonNull InterstitialAd interstitialAd) { // The mInterstitialAd reference will be null until // an ad is loaded. mInterstitialAd = interstitialAd; mInterstitialAd.setFullScreenContentCallback(mFullScreenContentCallback); Log.i(TAG, "onAdLoaded"); } @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { // Handle the error Log.i(TAG, loadAdError.getMessage()); mInterstitialAd = null; //Geniee SDK Load if (mGNSFullscreenInterstitialAd != null) { mGNSFullscreenInterstitialAd.loadRequest(); } } });1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34Implement the Geniee SDK
GNSFullscreenInterstitialAdListenerinterface.mGNSFullscreenInterstitialAd.setFullscreenInterstitialAdListener(new GNSFullscreenInterstitialAdListener() { @Override public void fullscreenInterstitialAdDidReceiveAd() { Log.i("GNSFullscreen", "Fullscreen interstitial loaded."); } @Override public void fullscreenInterstitialAdWillPresentScreen(String adName) { Log.i("GNSFullscreen", "Fullscreen interstitial present.(" + adName + ")"); } @Override public void fullscreenInterstitialAdDidClose(String adName) { Log.i("GNSFullscreen", "Fullscreen interstitial has been closed(" + adName + ")"); } @Override public void didFailToLoadWithError(GNSException e) { Log.i("GNSFullscreen", "Fullscreen interstitial load failed。(" + e.getAdnetworkName() + " Code:" + e.getCode() + " " + e.getMessage()); } });1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Implement the AdMob/AdManager SDK
FullScreenContentCallbackfinal FullScreenContentCallback mFullScreenContentCallback = new FullScreenContentCallback() { @Override public void onAdShowedFullScreenContent() { // Called when ad is shown. Log.d(TAG, "Ad was shown."); mInterstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent(AdError adError) { // Called when ad fails to show. Log.d(TAG, "Ad failed to show."); } @Override public void onAdDismissedFullScreenContent() { // Called when ad is dismissed. // Don't forget to set the ad reference to null so you // don't show the ad a second time. Log.d(TAG, "Ad was dismissed."); } };1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Implement the
loadRequestmethod of the Geniee SDK RewardVideo on the methodonAdFailedToLoadwhich is invoked if AdMob/AdManager Load fails.@Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { // Handle the error Log.i(TAG, loadAdError.getMessage()); mInterstitialAd = null; //Geniee SDK Load if (mGNSFullscreenInterstitialAd != null) { mGNSFullscreenInterstitialAd.loadRequest(); } }1
2
3
4
5
6
7
8
9
10
11- If you want to show another interstitial after presented one ad, you need to make a load request again.
Check that loadAd / loadRequest is completed in the order of AdMob/AdManager → Geniee SDK and display the FullscreenInterstitial by
showmethod.if (mInterstitialAd != null) { mInterstitialAd.show(this); } else if (mGNSFullscreenInterstitialAd != null && mGNSFullscreenInterstitialAd.canShow()) { mGNSFullscreenInterstitialAd.show(); }1
2
3
4
5- Please be sure to execute show after loading AdMob/AdManager.
We will attach the activity life cycle to
mGNSFullscreenInterstitialAd. This is used to control stop and restart of advertisements.@Override protected void onStart() { super.onStart(); if (mGNSFullscreenInterstitialAd != null) { mGNSFullscreenInterstitialAd.onStart(); } } @Override protected void onResume() { super.onResume(); if (mGNSFullscreenInterstitialAd != null) { mGNSFullscreenInterstitialAd.onResume(); } } @Override protected void onPause() { if (mGNSFullscreenInterstitialAd != null) { mGNSFullscreenInterstitialAd.onPause(); } super.onPause(); } @Override protected void onStop() { if (mGNSFullscreenInterstitialAd != null) { mGNSFullscreenInterstitialAd.onStop(); } super.onStop(); } @Override protected void onDestroy() { if (mGNSFullscreenInterstitialAd != null) { mGNSFullscreenInterstitialAd.onDestroy(); } super.onDestroy(); }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
- Also be sure to link AdMob/AdManager life cycle events.
- When using interstitial for the whole application Please exclude the implementation of mInterstitialAd.onDestroy(). If you implement mInterstitialAd.onDestroy() the data of interstitial will be destroyed.