GoogleMobileAds全画面インタースティシャルメディエーションの実装
AdMob/AdManagerのメディエーション機能を使用することで、Geniee SDKの全画面インタースティシャルをAdMob/AdManagerから配信することができます。
実装準備
全画面インタースティシャル広告では、以下の実装準備が必要です。
- Google Play Services SDK Geniee 広告SDKを使用するには、Google Play Services SDKを必ず導入する必要があります。 Google Play Services SDKの導入手順は以下の通りです。
Module>build.gradle
のdependencies
に以下を追加します。
dependencies {
implementation 'com.google.android.gms:play-services-ads:20.0.0'
}
Google Play Services SDKを既に導入済み場合、追加は必要ありません。
- Google Developers公式サイトSetting Up Google Play Services
Project Structure
のDependencies
に追加されていることを確認します。
Geniee SDK
下記スタートガイドより、Geniee SDK(
GNAdSDK
) をアプリに導入する必要があります。
スタートガイドAndroidManifest.xml
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
6各アドネットワーク用SDKとアダプター
AdMob/AdManagerのメディエーション機能とGeniee SDKを使用して配信する、アドネットワーク毎のSDKの設定とアダプターの設定が必要です。
全アドネットワークを一括で設定するには、以下リンクの導入方法を参照して下さい。
全アドネットワークの一括実装また、アドネットワークを個別で利用するには、以下よりアドネットワークのリンクを選択して、導入方法を参照して下さい。
アドネットワーク 検証済みバージョン 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
GoogleMobileAds全画面インタースティシャルメディエーション用SDKの実装
Mavenで実装する場合(推奨)
Project>build.gradle
のallprojects>repositories
に以下を追加します。allprojects { repositories { // GenieeSDK maven { url 'https://raw.github.com/geniee-ssp/Geniee-Android-SDK/master/repository' } } }
1
2
3
4
5
6
7
8Module>build.gradle
のdependencies
に以下を追加します。
dependencies {
implementation 'jp.co.geniee.gnadgooglemediationadapter:GNAdGoogleMediationAdapter:8.5.0.0'
}
- 実装例
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:20.0.0' // Geniee implementation 'jp.co.geniee.gnadsdk:GNAdSDK:8.5.1' // GenieeSDK implementation 'jp.co.geniee.gnsfullscreeninterstitialadapter:GNSFullscreenInterstitialAdapter:4.3.0' 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:17.2.0' }
AndroidManifest.xmlを更新する
重要: Google Mobile Ads SDK バージョン 17.0.0 以上 では、この手順は必須です。この <meta-data> タグを 追加しない場合は、クラッシュして次のメッセージが表示されます。"The Google Mobile Ads SDK was initialized incorrectly."
<manifest> <application> <!-- Google AdMob --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="YOUR_ADMOB_APP_ID"/> <!-- Google Ad Manager --> <meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="true"/> </application> </manifest>
1
2
3
4
5
6
7
8
9
10
11
12
13
手動でライブラリを導入する
Mavenでライブラリを導入する
の手順を実行した場合、この手順は実行する必要はありません。
手動導入手順はこちら
Geniee Adapter SDK のダウンロード
以下の URL から Geniee Android SDK をダウンロードします。
Localライブラリの配置
Geniee Android SDK を解凍します。
プロジェクトにGNSFullscreenInterstitialAdapterを追加します。
libs
フォルダーが存在しない場合、必要に応じて作成します。libs
フォルダにGNAdGoogleMediationAdapter
フォルダ配下の以下ファイルをコピーします。
- GNAdGoogleMediationAdapter-8.5.0.0.jarModule/build.gradle
のdependencies
に追加します。dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') }
1
2
3
GoogleMobileAds全画面インタースティシャル広告の実装
- AdManager
管理画面でメディエーション設定した全画面インタースティシャルのUnitIDで呼び出すことで、AdManagerのメディエーションすることが可能です。
全画面インタースティシャルの実装方法については、以下のサイトを参考にしてください。
https://developers.google.com/ad-manager/mobile-ads-sdk/android/interstitial
- AdMob
管理画面でメディエーション設定した全画面インタースティシャルのUnitIDで呼び出すことで、AdMobのメディエーションすることが可能です。
全画面インタースティシャルの実装方法については、以下のサイトを参考にしてください。
https://developers.google.com/admob/android/interstitial
※ メディエーションを使用する場合の実装注意点
インタースティシャルのインスタンタンスを生成する時、ContextではなくActivityを指定してください。
Contextを指定した場合、メディエーションが動作しない場合があります。
GoogleMobileAds全画面インタースティシャル広告がNo fillとなる場合の対応
全画面インタースティシャルがLoad失敗になった場合に、Geniee SDKを呼び出すことで、広告の空き枠を防ぐことができます。実装手順は以下の通りです。
Geniee SDKとAdmobSDKをインポートします。
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
9Geniee SDKの
GNSFullscreenInterstitialAd
のインスタンスをZoneID
を指定して作成します。// 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
34
35Geniee SDKの
GNSFullscreenInterstitialAdListener
インタフェースを実装します。mGNSFullscreenInterstitialAd.setFullscreenInterstitialAdListener(new GNSFullscreenInterstitialAdListener() { @Override public void fullscreenInterstitialAdDidReceiveAd() { Log.i("GNSFullscreen", "全画面インステ広告ロード成功。"); } @Override public void fullscreenInterstitialAdWillPresentScreen(String adName) { Log.i("GNSFullscreen", "全画面インステを表示した。(" + adName + ")"); } @Override public void fullscreenInterstitialAdDidClose(String adName) { Log.i("GNSFullscreen", "全画面インステが閉じられた。(" + adName + ")"); } @Override public void didFailToLoadWithError(GNSException e) { Log.i("GNSFullscreen", "全画面インステ広告ロード失敗。(" + 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
21AdMobSDKの
FullScreenContentCallback
インタフェースを実装します。final 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
22
23- 1つの広告の再生完了後に別の広告を見せる場合、再びロードリクエストを行う必要があります。
GoogleMobileAdsのLoadが失敗した場合に呼び出されるメソッド
onAdFailedToLoad
にGeniee SDK全画面インタースティシャルのloadRequest
メソッドを実装します。@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
11Google Ads SDK → Geniee SDKの順で、loadAd/loadRequestが完了しているかを確認し、
show
メソッドで動画を表示します。if (mInterstitialAd != null) { mInterstitialAd.show(this); } else if (mGNSFullscreenInterstitialAd != null && mGNSFullscreenInterstitialAd.canShow()) { mGNSFullscreenInterstitialAd.show(); }
1
2
3
4
5
6- showは必ずGoolgeMobileAdsのLoad実行後に実施するようにして下さい。
Activityのライフサイクルを処理のつなぎ込みを実施します。このつなぎ込みは広告の停止や再開の制御に使われます。
@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
- Google Ads SDKのライフサイクルイベントのつなぎ込みも必ず実施してください。
- アプリケーション全体で全画面インタースティシャルを使用する場合 mInterstitialAd.onDestroy()の実装は除外してください。 mInterstitialAd.onDestroy()を実装すると全画面インタースティシャル内のデータが破棄されます。