注:
Android スタジオと Gradle
これらの手順では、Android Studio と Gradle を使用していることを前提としています。 必要なほとんどの AndroidManifest.xml エントリ (場所のアクセス許可を除く) と ProGuard の変更は、自動的にアプリに追加されます。 他のビルド システムを使用している場合は、手順が異なる場合があります。
メディエーションを使用すると、複数のネットワークを介して広告インプレッションを販売し、より多くの収益を生み出すことができます。 これは、"ウォーターフォール" のようなプロセスで 1 つ以上の仲介 SDK を呼び出すメイン (仲介) SDK によって開始されます。 メイン SDK が何らかの理由で広告を表示できない場合は、メディエーション SDK のリストを反復処理し、指定された順序で連絡できます。 これは、インプレッションが埋まるか、メディエーション SDK を使い切るまで続きます。
別の SDK に仲介する理由は次のとおりです。
- 特定の状況下でより良い収益化を提供するため
- 一意のユーザー ID、デバイスのオペレーティング システム、場所、ID などの情報へのアクセスを提供するため
- 一部のネットワークでは、独自の SDK からの要求のみを受け入れるため、その SDK を使用してその要求にアクセスする必要があります
サポートされているネットワークとメディアの種類
このセクションでは、メディエーション アダプターでサポートするネットワークと、各アダプターがサポートするメディアの種類を一覧表示します。 アダプターごとに、アダプターがバナー、インタースティシャル、ネイティブ、または 3 つのすべてをサポートしているかどうかが表示されます。
| アダプター | バージョン | バナー | Interstitial | ネイティブ | ドキュメント |
|---|---|---|---|---|---|
| Google AdMob と DFP | 22.3.0 | はい | はい | はい | Google モバイル広告 - Android メディエーション |
| SmartAdServer | 7.23.0 | はい | はい | 不要 | SmartAdServer SDK ドキュメント |
Maven の設定
これらのネットワークを仲介するには、SDK のサポートされているリリースと、SDK がネットワークの SDK と通信できるようにするメディエーション アダプターが必要です。 SDK とアダプターを取得する最も簡単な方法は、次の例に示すように、 build.gradle から Maven を使用することです。 最初のブロックには、SDK 自体の依存関係が含まれます。 2 番目のブロックには、他の SDK を仲介するためのアダプターが一覧表示されます。 これらは最上位ブロックであり、buildscript ブロックの一部ではないことに注意してください。 2 番目のブロックには、任意のアダプターを含めることも除外することもできます。 アダプターを含めると、適切なサード パーティー製 SDK (Gradle の同期時に CDN からダウンロードされます) が自動的に含まれます。
最後に、 [9,10) 表記は、アプリのコンパイル時に 9.x シリーズの最新バージョンの SDK が含まれることを意味します。 SDK の新しいバージョンがリリースされたら、新しいバージョンを入手するために必要なのは、アプリを再コンパイルすることだけです。
repositories {
mavenCentral()
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.appnexus.opensdk:appnexus-sdk:[9,10)'
implementation 'com.appnexus.opensdk.mediatedviews:appnexus-googleplay-mediation:[9,10)'
implementation 'com.appnexus.opensdk.mediatedviews:appnexus-smartadserver-mediation:[9,10)'
}
警告
メディエーション・アダプターのbuild.gradle・ファイルは変更しないでください。 これにより、ビルドが破損する可能性があります。
ネットワーク固有のセットアップ
このセクションでは、コード サンプル(特別なセットアップが必要な場合)や、その SDK のドキュメントへのリンクなど、メディエーション用に他のネットワークの SDK を設定する方法について説明します。
AdMob
注:
Mobile SDK 7.22 以降の場合、Google Ad Mob バージョンで仲介するには、Android S でアプリがクラッシュする原因となるバグを修正するために、 androidx.work:work-runtime:2.7.0 に明示的に依存しる必要があります。このバグを修正するには、Google Mobile Ads SDK の次の依存関係をモジュールのアプリレベルの Gradle ファイルに追加します:
dependencies {
implementation 'com.google.android.gms:play-services-ads:20.4.0'
// For apps targeting Android 12, add WorkManager dependency.
constraints {
implementation('androidx.work:work-runtime:2.7.0') {
because '''androidx.work:work-runtime:2.1.0 pulled from
play-services-ads has a bug using PendingIntent without
FLAG_IMMUTABLE or FLAG_MUTABLE and will fail in Apps
targeting S+.'''
}
}
}
警告
ライフサイクル コールバックが必要
AdMob/DFP バナーを仲介する場合は、以下のセクションで説明するように、コードにライフサイクル コールバックを追加する必要があります。
実装に関する注意 - ライフサイクル コールバックの転送
必要に応じて、ライフサイクル コールバックを AdMob/DFP バナーに転送する必要があるためです。 アクティビティのライフサイクルの詳細については、Android ドキュメントの 「アクティビティ ライフサイクルの管理 」を参照してください。
SDK を使用すると、 AdView:BannerAdView と InterstitialAdView のサブクラスのライフサイクル コールバックを転送できます。
パフォーマンスを向上させるには、ライフサイクルのコールバックを転送することを強くお勧めします。 AdMob/DFP バナーを仲介するユーザーは、必要に応じてライフサイクル コールバックを AdMob/DFP バナーに転送する必要があるため、バナーを呼び出す必要があります。 どのメソッドをいつ呼び出すかについては、以下のコード サンプルを参照してください。
アクティビティのライフサイクルの詳細については、Android ドキュメントの 「アクティビティ ライフサイクルの管理 」を参照してください。
/**
* To be called by the developer when the fragment/activity's onDestroy() function is called.
*/
abstract public void activityOnDestroy();
/**
* To be called by the developer when the fragment/activity's onPause() function is called.
*/
abstract public void activityOnPause();
/**
* To be called by the developer when the fragment/activity's onResume() function is called.
*/
abstract public void activityOnResume();
ネイティブ・メディエーション
注:
SDK v5.1 より、AdMob ネイティブ メディエーションのアダプター コードが変更され、Google UnifiedNativeAd に対応しました。
以下は関連性がなくなり、削除されました。
AdMobNativeSettings.setEnableAppInstallAd();
AdMobNativeSettings.setEnableContentAd();
ネイティブ・メディエーションの場合は、次に説明するように初期化コードを追加します。
画像/ビデオの表示に MediaView を使用する場合は、広告要求を行う前に MediaView を有効にする必要があります。 明示的に有効にしないと、画像が自動的にダウンロードされ、 MediaView 自動的に画像が入力されることはありません。
AdMobNativeSettings.setEnableMediaView(true);
AdMob の NativeAdResponse の場合は、種類 UnifiedNativeAdView のビューを作成します。
private NativeAdRequestListener nativeAdRequestListener = new NativeAdRequestListener() {
@Override
public void onAdLoaded(NativeAdResponse response) {
if (response.getNetworkIdentifier() == NativeAdResponse.Network.ADMOB) {
// Instantiate UnifiedNativeAdView
// Set MediaView - Sets a media view for media content.
// The media content gets loaded on the MediaView, if attached to the layout hierarchy and is registered using the setMediaView(...)
}
}
@Override
public void onAdFailed(ResultCode errorcode) {
}
}
カスタム キーワード (keyword) の設定
コンテンツ URL を Google SDK に渡すには、contenturl を要求元の広告オブジェクト (BannerAdView、InterstitialAdView、NativeAdRequest) と共にカスタム キーワード (keyword)として渡す必要があります。 使用するキーは content_url です。 次に例を示します:
// Add key content_url with a value (www.appnexus.com).
adView.addCustomKeywords("content_url", "www.appnexus.com");
Google SDK の詳細については、 Google Mobile Ads SDK を参照してください。
PPID 用 Google メディエーション アダプター
Google メディエーション アダプターは、 パブリッシャー提供 ID (PPID) をサポートします。 PPID を使用すると、パブリッシャーはパブリッシャー定義の識別子を Google 広告マネージャーに渡して、拡張広告のターゲティングとレポートをサポートできます。
Google メディエーションの PPID を設定する
Google 仲介用に PPID を構成するには、アダプターで提供されている次のメソッドを呼び出します。 PPID 値は広告要求と共に Google 広告マネージャーに送信されます。
GooglePlayAdsSettings.setGooglePublisherProvidedId("your-ppid-value");
注:
- 広告リクエストを行う前に PPID を設定して、必ず含まれるようにしてください。
- PPID は Google 仲介にのみ 適用され、他の仲介ネットワークには影響しません。
例
// Set PPID before loading ads
GooglePlayAdsSettings.setGooglePublisherProvidedId("example-ppid-123");
// Proceed with loading ads
SmartAdServer
特別な設定は必要ありません。
SmartAdServer SDK の詳細については、 SDK ドキュメントを参照してください。
Google サービスを使用しなくなった Huawei デバイスをサポートする場合は (広告 ID の取得に必要)、Huawei サポートライブラリリポジトリも宣言する必要があります。 SAS アダプターで Huawei デバイスをサポートするには、発行元はプロジェクトのルート レベルの build.gradle に以下を追加する必要があります。
// Optional: Huawei services dependencies repository
maven { url '[https://developer.huawei.com/repo/](https://developer.huawei.com/repo/)' }
警告
Interstitials
SmartAdServer インタースティシャルを使用している場合、SASInterstitialViewにはモバイル SDK のInterstitialAdViewに対応するloadAd()およびshowAd()メソッドがないことに注意してください。
SASInterstitialView 広告の読み込みと表示の両方を 1 回の呼び出しで行う loadAd() メソッドのみがあります。
モバイル SDK のInterstitialAdView loadAd()およびInterstitialAdView.showAd()メソッド呼び出しシーケンスと一貫性を保つために、InterstitialAdView.showAd() が呼び出されるまでSASInterstitialViewは表示されません。
つまり、アプリは InterstitialAdView.onAdLoaded() で showAd() をすぐに呼び出すことが期待されます。 表示されない場合、 SASInterstitialView は表示されません。
インタースティシャル メディエーションの配置セットアップ
インタースティシャル メディエーションには、以下の配置設定を使用します。
Interstitial Media(インタースティシャル メディエーション)
インタースティシャル メディエーションを行う場合は、以下を使用して配置が設定されていることを確認してください。
- サイズ: 1x1
- メディアタイプ: インタースティシャル
Interstitial メディエーションと RTB および/またはマネージド デマンド
インタースティシャル メディエーションを実行し、同じプレースメントを通じて RTB やマネージド デマンドを受け入れる場合は、以下でプレースメントが設定されていることを確認する必要があります。
- サイズ: 1x1
- メディアタイプ: インタースティシャル
- メディアタイプ: バナー
プレースメントの作成の詳細については、「Monetize ドキュメントの プレースメントの作成 」を参照してください。
非メディエーション需要の場合は、 promo_sizes 配置タグ パラメーターを使用して、広告呼び出しでクリエイティブの実際のサイズを渡す必要があります。
カスタム インタースティシャル サイズを渡す手順については、「 Android でインタースティシャルを表示」 ドキュメントの「カスタム インタースティシャル サイズの使用」を参照してください。
カスタム モバイル ネットワーク
Xandr UI には、多くの一般的なモバイル広告ネットワークのサポートが組み込まれています。 サポートされていないネットワークを仲介する場合は、次の操作を行う必要があります。
- 仲介する SDK から SDK がイベントを受信できるようにする カスタム メディエーション アダプター を記述します。
- 「ネットワークの追加」の手順に従ってカスタム モバイル ネットワークを設定します。