TokyoFacebookTwitterHatenaPocketアプリのマネタイズの基本といえば、やはり広告。AndroidアプリならまずAdMobが候補に挙がりますよね。広告タイプの違いと実装方法をコードを見ながら押さえましょう。AdMobはグーグルによるモバイル広告プラットホームであり、開発者はAdMobを使ってアプリ内の広告から収益を得られます。AdMobによってバナー広告、インタースティシャル広告、ビデオ広告、ネイティブのUIコンポーネントと一体化したネイティブ広告などさまざまな種類の広告が提供されます。SDKを使って収益を最大化でき、グーグルの広告ソリューションによって大規模なビジネスを実現します。本記事はAdMobのアプリへの組み込みに焦点をあてますが、その前に広告の実装方法に関するベストプラクティスやポリシーを理解しておいたほうが理解が進みます。YouTubeビデオの視聴をおすすめします。AdMobの開始AdMobサービスにサインアップします。広告からFirebaseへのリンクを選択可能。今回はこのステップは省略さまざまな広告フォーマットをアプリに追加できます。本記事でこれから説明するサンプルアプリのために、3つの異なる広告フォーマット、バナー、インタースティシャル、ネイティブ広告を作成しました。新しい広告をアプリに追加するには、タブを開いてアプリを選択します。app)への依存オブジェクトを追加します。}res/values/strings.xmlでユニットIDを追加します。このケースではIDは以下のようになります。Adsで必要なパーミッションを追加します。android:name="android.permission.ACCESS_NETWORK_STATE"/>Androidアプリへの組み込み広告このあとは、生成した広告をAndroidアプリに組み込む方法に関する3つの事例です。それぞれの事例はスタンドアローンのアプリに組み込み可能ですが、本記事のGitHubリポジトリでは別のフラグメントとして同様のプロセスの広告を追加しました。本項ではバナーの追加およびイベント処理に焦点をあてます。Androidプロジェクトにバナーを追加するのは、ほかの広告タイプの組み込みに比べるともっとも簡単な選択肢です。レイアウトファイルで適切な場所を選択し、以下のコードスニペットを追加します。これがActivityのレイアウトファイルの例になります。ads:adUnitId="@string/admob_banner_ad"></com.google.android.gms.ads.AdView>広告サイズをSMART_BANNERとして指定するとバナーの横幅が画面サイズにフィットするように設定されます。AdMobではさまざまなサイズが利用できますので、詳細についてはこのドキュメントを参照してください。以下のように、レイアウトファイルのLayoutコンテナに広告用に使用するネームスペースを追加してください。</com.google.android.gms.ads.AdView></RelativeLayout>すでにAdViewをレイアウトファイルに追加したので、コンテンツをその中へロードする必要があります。広告を表示するActivityクラスで、以下のグローバルインスタンスを生成します。adView;アクティビティのonCreate()メソッドで以下のコードスニペットを追加します。.build();adView.loadAd(adRequest);開発中に広告をテストする場合はテストデバイスとしてAdRequestを指定するのがおすすめです。本記事ではテストデバイスは指定していません。.build();広告の管理における重要なポイントの1つはActivityのライフサイクルメソッドであり、以下のメソッドをMainActivityクラスに追加する必要があります。adView.destroy();}Androidプロジェクトを実行して広告の表示を確認します。広告イベント広告の管理におけるもう1つの重要なポイントはライフサイクルイベントです。load、AdLeftApplicationなどのイベントが含まれます。監視するライフサイクルイベントを選択可能であり、onCreateで発生するすべてのイベントのリスナーを以下のコードでセットアップします。}});これらのイベントはバナー広告でもインタースティシャル広告でも動作します。インタースティシャル広告インタースティシャル広告とはアプリのインターフェイス全体を覆う全画面広告のことです。その名のとおり、広告の全画面表示によって、ユーザーとアプリのインターフェイスが阻害されます。そのため、インタースティシャル広告を表示するタイミングには注意を払う必要があります。アプリが遷移するタイミングで広告を表示するのは良い方法ですが、頻繁に広告を表示するのはあまり良くありません。インタースティシャル広告はロードするためのレイアウトを持っているわけではなく、Javaコードでロードします。MainActivityにインタースティシャル広告を追加するためのグローバルインスタンスを生成します。interstitialAd;インタースティシャル広告を表示するには以下の関数を呼び出します。});}インタースティシャル広告は多くの帯域幅を使用し、ロード時間も必要だということに留意してください。そのため、ロード処理が完了したあとに広告を表示することが重要です。インタースティシャル広告とともに前に説明したライフサイクルイベントを使用して、特定の広告イベントを監視できます。ネイティブ広告ネイティブ広告はアプリのコンテンツに合わせて広告をカスタマイズするとても良い方法です。ネイティブ広告は広告ビューのCSSテンプレートです。Advanced」を提供しています。Expressは事前に定義されたビューおよび広告のテンプレートをベースにしたAdMobパネル内で生成されたCSSテンプレートです。Advancedが提供されています。Adsを使用して作業します。Androidプロジェクト内でネイティブ広告を追加するプロセスはバナー広告と同様であり、次の項の主なポイントはそのアイテムとして含まれるネイティブ広告を使用してRecyclerViewをビルドすることです。RecyclerViewのビルドにはRecyclerView.Adapter、RecyclerView.ViewHolder、RecyclerViewアイテム用のレイアウトファイルが必要です。広告をアプリにうまく組み込むには、アイテムのレイアウトがネイティブ広告のレイアウトのように見えるようにするのが望ましいです。この例では、以下のレイアウトを使用します。res/layout/item_layout.xmlを生成して以下の記述を追加します。</LinearLayout></LinearLayout>そして、res/layout/native_ad.xmlには以下を記述します。</com.google.android.gms.ads.NativeExpressAdView></LinearLayout>MainActivityレイアウトファイル内でRecyclerViewレイアウトを追加します。android:layout_height="match_parent"/>RecyclerViewアダプターの設定RecyclerViewがコンテンツを表示するにはアダプターとViewHolderが必要です。RV_Adapterと呼ばれる新しいJavaクラスを生成し、以下のコードを追加します。}}このクラスにはRecyclerView.Adapterと、異なるRecyclerViewアイテム用の3つのViewHolderクラスが含まれます。たくさんのコードが存在しますが、3つのほかのJavaクラスはこのアダプター内でのみ使用されます。それらを別々のファイルで実行しても良いですが、それぞれのクラスへの正しい参照をインポートするようにしてください。onBindViewHolder()アダプター内のRecyclerViewでネイティブ広告を読み込みます。この広告のバインドはバナー広告と類似しています。RecyclerViewはDataオブジェクトのリストで埋まっているため、Androidプロジェクト内に以下のクラスを生成します。}}広告リストの表示RecyclerViewにネイティブ広告を組み込むための最終ステップではMainActivity内に以下の関数を生成します。LinearLayoutManager(this));}この関数では50個のDataアイテムのリストを生成し、5アイテムごとにネイティブ広告を挿入します。実際のプロジェクトでは、ユーザーエクスペリエンスの低下につながるため、このように頻繁には広告を挿入しません。RecyclerViewアダプターの起動時にそのコンストラクターがIntegerの配列を渡し、広告の表示時にアダプターに通知します。MainActivityonCreate()メソッド内でこの関数を呼び出し、プロジェクトを実行します。ターゲティングAdMobのもう1つのすばらしい特徴は、特定のユーザーをターゲットにし、特定の条件に関する広告を表示できることです。ターゲティングの例としては特定の場所やユーザーの性別に関連する広告を表示することなどが挙げられます。ターゲットグループに基づいた広告を表示するにはAdRequest.Builder()でターゲティング仕様を指定します。以下が場所に基づいてユーザーをターゲティングする方法の例です。.build();性別に基づく場合は、以下のとおりです。.build();誕生日に基づく場合は、以下のとおりです。.build();子供向けのポリシーおよびグーグルが子供向け広告コンテンツを取り扱うべきか否かに基づく場合は、以下のとおりです。.build();収益を上げよう以上がAdMobを使ったAndroidアプリへの広告組み込みの基本になります。このプロセスを使うと簡単な方法ですべてのアプリに収益化の可能性を生み出します。AdMobに関してさらに詳しく知りたい場合はグーグルサポートのページを参照すると役立つヒントがあります。Anchetaが査読を担当しています。最高のコンテンツに仕上げるために尽力してくれたSitePointの査読担当者のみなさんに感謝します。Veliuコンピューターエンジニアの学生で、現在「クラウドコンピューティング」内で学士論文を執筆しています。いままでに、C言語、Java、phpなどの言語を学び、最近はJavaやモバイルWeb開発に集中して取り組んでいます。