このページでは、Android SDK をアプリと統合する方法について説明します。
さまざまな広告タイプの表示手順については、以下を参照してください。
このセクションでは、アプリに広告を表示するように Android SDK を設定する手順について説明します。
要件
- アプリの SDK の最小バージョンは、Android 5.0 (API レベル 21) 以降である必要があります。
- 広告を要求するには、有効なプレースメント ID を使用します。 サポートされている広告ユニットでは、代わりに有効なメンバー ID とインベントリ コードを使用できます。
ヒント
- Google Play サービス フリークエンシー キャップとモバイル アプリのターゲット設定のために Android 広告識別子 (AAID) を有効にするには、Google Play サービス広告識別子ライブラリを含めます。 Android SDK はこのオプションの依存関係なしで機能しますが、AAID ベースの機能は使用できません。
- Android スタジオと Gradle これらの手順では、Android Studio と Gradle を使用していることを前提としています。 Android SDK の必須マニフェスト エントリとコンシューマー ProGuard ルールは、自動的にアプリにマージされます。 別のビルド システムを使用する場合は、手順が異なる場合があります。
インストール
手順 1. SDK を取得する
Maven Central がプロジェクトのリポジトリに含まれていることを確認します。 次に、Android SDK と Google Play サービス広告識別子の依存関係をアプリ モジュールの build.gradle ファイルに追加します。
dependencies {
implementation 'com.appnexus.opensdk:appnexus-sdk:9.14.0'
implementation 'com.google.android.gms:play-services-ads-identifier:18.2.0'
}
Google Play サービスの依存関係は省略可能です。 アプリで AAID ベースのフリークエンシー キャップやモバイル アプリのターゲット設定を使用しない場合は省略します。
メディエーション・アダプターを追加するには、 Androidを使用したメディエーションを参照してください。
手順 2. アプリのアクセス許可の編集 (省略可能)
Android SDK で広告を要求するには、位置情報へのアクセスは必要ありません。 アプリが位置データを提供することを選択した場合は、アプリが必要とするアクセス レベルに一致するアクセス許可を宣言します:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
-
ACCESS_COARSE_LOCATIONおおよその位置情報へのアクセスを許可します。 -
ACCESS_FINE_LOCATION正確な位置情報へのアクセスを許可します。 アプリで正確な位置情報が必要な場合にのみ、これを宣言して要求してください。
Android 6.0(API レベル 23)以降では、アプリは実行時に宣言された位置情報の許可を要求する必要があります。 Android SDK は、ユーザーがアクセス許可を与えた後にのみ位置情報にアクセスします。
詳細については、Android ドキュメントの 「ランタイム アクセス許可の要求 」を参照してください。
注:
Android SDK は位置情報の更新を要求しません。 位置情報を有効にすると、アプリによって提供される位置情報、またはデバイスの利用可能な最後の位置情報が使用されます。
手順 3. AAID のコード縮小を構成する
Android SDK は、リフレクションを通じて Google Play サービス広告識別子ライブラリにアクセスします。 アプリで R8 または ProGuard が有効になり、オプションの AAID 依存関係が含まれている場合は、アプリの ProGuard ルール ファイルに次のルールを追加します。
# Preserve Google Play services classes used to retrieve the AAID.
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
public static com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
public java.lang.String getId();
public boolean isLimitAdTrackingEnabled();
}
手順 4. メディエーションのセットアップ (オプション)
メディエーションのセットアップ手順については、「 Android でメディエーションを行う」を参照してください。
実装メモ: ライフサイクル コールバックの転送
SDK を使用すると、 AdView のサブクラス ( BannerAdView および InterstitialAdView) のライフサイクル コールバックを転送できます。
パフォーマンスを向上させるには、ライフサイクルのコールバックを転送することを強くお勧めします。 AdMob/DFP バナーを仲介するユーザーは、必要に応じてライフサイクル コールバックを AdMob/DFP バナーに転送する必要があるため、バナーを呼び出す必要があります。 どのメソッドをいつ呼び出すかについては、以下のコード サンプルを参照してください。
次の例では、 BannerAdViewを使用します。
InterstitialAdView を操作する場合は、同じライフサイクル方法を使用します。
アクティビティのライフサイクルの詳細については、Android ドキュメントの 「アクティビティ ライフサイクルの管理 」を参照してください。
class BannerActivity : AppCompatActivity() {
private lateinit var banner: BannerAdView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
banner = BannerAdView(this) // Create the banner ad view
banner.setPlacementID("123456") // Set placement ID
setContentView(banner)
}
override fun onResume() {
super.onResume()
banner.activityOnResume() // Forward the resume callback
}
override fun onPause() {
banner.activityOnPause() // Forward the pause callback
super.onPause()
}
override fun onDestroy() {
banner.activityOnDestroy() // Forward the destroy callback
super.onDestroy()
}
}