注:
Android Studio と Gradle
次の手順では、Android Studio と Gradle を使用していることを前提としています。 必要な AndroidManifest.xml エントリ (場所のアクセス許可を除く) と ProGuard の変更のほとんどは、アプリに自動的に追加されます。 他のビルド システムを使用している場合、手順が異なる場合があります。
メディエーションを使用すると、複数のネットワークを通じて広告インプレッションを販売して、より多くの収益を生み出すことができます。 これは、"ウォーターフォール" のようなプロセスで 1 つ以上の仲介された SDK を呼び出すメイン (メディエーティング) SDK によって開始されます。 何らかの理由でメイン SDK で広告を表示できない場合は、仲介された SDK の一覧を反復処理し、指定した順序で連絡できます。 これは、インプレッションが満たされるか、仲介された SDK が不足するまで続きます。
別の SDK に仲介する理由は次のとおりです。
- 特定の状況下でより良い収益化を提供するため
- 一意のユーザー ID やデバイスのオペレーティング システム、場所、ID などの情報へのアクセスを提供するには
- 一部のネットワークでは、独自の SDK からの要求のみを受け入れるため、SDK を使用して要求にアクセスする必要があります
サポートされているネットワークとメディアの種類
このセクションでは、仲介アダプターでサポートされるネットワークと、各アダプターがサポートするメディアの種類を示します。 アダプターごとに、アダプターがバナー、スポット、ネイティブ、または 3 つすべてをサポートしているかどうかを示します。
| アダプター | バージョン | バナー | 間隙 | ネイティブ | ドキュメント |
|---|---|---|---|---|---|
| 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 を仲介するアダプターが一覧表示されます。 これらは最上位のブロックであり、ビルドスクリプト ブロックの一部ではないことに注意してください。 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);
NativeAdResponseが AdMob からの場合は、種類のビュー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 仲介アダプターは、 Publisher Provided 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/)' }
警告
スポット
SmartAdServer スポットを使用している場合は、SASInterstitialViewには、モバイル SDK のInterstitialAdViewに対応するloadAd()メソッドとshowAd()メソッドがないことをご注意ください。
SASInterstitialView には、1 回の呼び出しで広告の読み込みと表示の両方を行う loadAd() メソッドのみが含まれます。
モバイル SDK のInterstitialAdView loadAd()とInterstitialAdView.showAd()メソッド呼び出しシーケンスと一致するように、InterstitialAdView.showAd()が呼び出されるまでSASInterstitialViewは表示されません。
つまり、アプリはInterstitialAdView.onAdLoaded()ですぐにshowAd()を呼び出す必要があります。 表示されない場合、 SASInterstitialView は表示されません。
スポット仲介の配置設定
スポット仲介には、次の配置設定を使用します。
スポット仲介
スポット仲介を実行する場合は、次のように配置が設定されていることを確認します。
- サイズ: 1x1
- メディアの種類: スポット
スポット仲介と RTB および/またはマネージド 需要
スポット仲介を行い、同じ配置で RTB とマネージド 需要を受け入れる場合は、次のように配置が設定されていることを確認する必要があります。
- サイズ: 1x1
- メディアの種類: スポット
- メディアの種類: バナー
プレースメントを作成する方法の詳細については、収益化に関するドキュメントの 「配置を作成 する」を参照してください。
仲介されていない需要の場合は、 promo_sizes 配置タグ パラメーターを使用して、広告通話のクリエイティブの実際のサイズを渡す必要があります。
カスタムスポットサイズを渡す手順については、 Android で スポットを表示するドキュメントの「カスタムスポットサイズの使用」を参照してください。
カスタム モバイル ネットワーク
Xandr UI には、多数の一般的なモバイル広告ネットワークのサポートが組み込まれています。 サポートされていないネットワークを仲介する場合は、次の手順を実行する必要があります。
- 仲介する SDK からイベントを受信できる カスタム 仲介アダプター を作成します。
- 「ネットワークの追加」の手順に従って 、カスタム モバイルネットワークを設定します。