今回は事務手続きの話は省略し、コードの変更点を記載します。
参考文献
前提条件
- Android Studio 3.2 以降を使用している
- アプリのビルドファイルで次の値が使用されていることをご確認ください。
- minSdkVersion が
16
以上 - compileSdkVersion が
28
以上
- minSdkVersion が
変更箇所概要
- AdMob広告共通処理
- banner広告固有処理
- レイアウトに AdView を追加する(
.xml
) - 広告を読み込む(Kotlinコード、またはJavaコード)
- レイアウトに AdView を追加する(
変更箇所詳細
プロジェクト レベルの build.gradle
ファイル
buildscript { repositories { google() mavenCentral() } } allprojects { repositories { google() mavenCentral() } }
アプリレベルの Gradle
ファイル(通常はapp/build.gradle
)
dependencies { implementation 'com.google.android.gms:play-services-ads:20.6.0' }
アプリの AndroidManifest.xml ファイル
<manifest> <application> <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> </application> </manifest>
<meta-data> タグを追加しなかった場合、次のメッセージが表示されてクラッシュします。
The Google Mobile Ads SDK was initialized incorrectly.
インスタンス初期化(ここではKotlinコード)
import com.google.android.gms.ads.MobileAds class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this) {} } }
レイアウトに AdView を追加する(.xml
)
画面の最下部に広告を追加する。
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView>
オフィシャルサイトのSampleCode
オフィシャルサイトのSampleCodeはコード的には画面最下部を指定しているようにみえるが、結果はbanner広告が画面最上位に表示された。
xml <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView>
また、以下のようなアプリタイトルを消す記述(
themes.xml
)を行っていたので、広告が表示されなかった。<item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item>
広告を読み込む(Kotlinコード、またはJavaコード)
package ... import ... import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdView class MainActivity : AppCompatActivity() { lateinit var mAdView : AdView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this) {} mAdView = findViewById(R.id.adView) val adRequest = AdRequest.Builder().build() mAdView.loadAd(adRequest) } }
注意
- Googleが公開しているテスト用のAdMob広告IDに関して、
- Banner広告をテストする前にInterstitial広告を試していたが、Interstitial広告とBanner広告でテスト用広告IDに違いがあることを認識できていなかったため、Banner広告のテストにInterstitial広告のテスト用広告IDを使用して動作確認をしたため、最初にbanner広告を表示させることが出来なかった。
以上、が今回のノートになります。