2018-12-23

【Kotlin】設定 AdMob 廣告



Kotlin 是目前 Google 力推的開發 Android APP 的語言,語法比 Java 更簡潔


* 建立一個新專案


* 輸入專案名稱 Test,選擇專案放置目錄為 D:\test\kotlin\Test,注意 include Kotlin support 要打勾


* 指定最低相容裝置,在本例為 JellyBean4.1(API16)


* 選擇 Activity 樣本


* 設定 Activity 的名字,在本例為 MainActivity,並且不打算相容舊版,所以 Backwards Compatibility(AppCompat) 的打勾取消


* 開啟 strings.xml,加入 AdMob測試帳號
  1.  
  2. <resources>
  3. <string name="app_name">Test</string>
  4.  
  5. <!-- adMob app id 測試 -->
  6. <string name="admob_app_id">ca-app-pub-3940256099942544~3347511713</string>
  7. <!-- 橫幅 測試 -->
  8. <string name="banner_ad_unit_id">ca-app-pub-3940256099942544/6300978111</string>
  9. <!-- 插頁 測試 -->
  10. <string name="interstitial_ad_unit_id">ca-app-pub-3940256099942544/8691691433</string>
  11. <!-- 影片 測試 -->
  12. <string name="video_ad_id">ca-app-pub-3940256099942544/5224354917</string>
  13. </resources>
  14.  



* 切換成 Project 模式,打開 app 層級的 build.gradle,加入 play-services-ads

  1.  
  2. dependencies {
  3. ...
  4. ...
  5.  
  6. // AdMob
  7. implementation 'com.google.android.gms:play-services-ads:17.1.2'
  8. }
  9.  


* 開啟 AndroidManifest.xml
  1.  
  2. <application
  3. ...
  4. ... />
  5.  
  6. <!-- AdMob -->
  7. <meta-data
  8. android:name="com.google.android.gms.ads.APPLICATION_ID"
  9. android:value="@string/admob_app_id"/>
  10.  




* 開啟 activity_main.xml,置換成下述內容,注意第 6 行

xmlns:ads="http://schemas.android.com/apk/res-auto"
  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <RelativeLayout
  4. xmlns:android="http://schemas.android.com/apk/res/android"
  5. xmlns:tools="http://schemas.android.com/tools"
  6. xmlns:ads="http://schemas.android.com/apk/res-auto"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. tools:context=".QbankMainActivity">
  10.  
  11. <com.google.android.gms.ads.AdView
  12. android:id="@+id/adView"
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content"
  15. android:layout_alignParentBottom="true"
  16. android:layout_alignParentLeft="true"
  17. android:layout_alignParentStart="true"
  18. android:layout_alignParentRight="true"
  19. android:layout_alignParentEnd="true"
  20. ads:adSize="SMART_BANNER"
  21. ads:adUnitId="@string/banner_ad_unit_id" />
  22.  
  23.  
  24. </RelativeLayout>
  25.  


開啟 MainActivity.kt
  1.  
  2. package com.example.test
  3.  
  4. import android.app.Activity
  5. import android.os.Bundle
  6. import com.google.android.gms.ads.AdRequest
  7. import com.google.android.gms.ads.MobileAds
  8. import kotlinx.android.synthetic.main.activity_main.* // 注意這一行
  9.  
  10. class MainActivity : Activity()
  11. {
  12.  
  13. override fun onCreate(savedInstanceState: Bundle?)
  14. {
  15. super.onCreate(savedInstanceState)
  16. setContentView(R.layout.activity_qbank_main)
  17.  
  18. // AdMob 初始化
  19. MobileAds.initialize(this, getString(R.string.admob_app_id));
  20.  
  21. // 橫幅廣告
  22. // 透過第 8 列的 import, 直接參照到 adView, 而不用再 findViewById
  23. adView.loadAd(AdRequest.Builder().build())
  24. }
  25.