2023-04-16

【Kotlin】AdMob 插頁式廣告(InterstitialAd AdMob20[含]↑)

參考資料 ----

插页式广告

InterstitialAd

不允許的插頁式廣告導入方式

 

 

app 層級的 build.gradle 

  1.  
  2. dependencies {
  3. ...
  4. ...
  5. // adMob
  6. implementation 'com.google.android.gms:play-services-ads:22.0.0'
  7. }
  8.  
  9. apply plugin: 'com.google.gms.google-services'
  10.  

 

 

AndroidManifest.xml 

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

 

 

string.xml 

  1.  
  2. <!-- adMob app id 測試 -->
  3. <string name="admob_app_id">ca-app-pub-3940256099942544~3347511713</string>
  4. <!-- 橫幅 測試 -->
  5. <string name="banner_ad_unit_id">ca-app-pub-3940256099942544/6300978111</string>;
  6. <!-- 插頁 測試 -->
  7. <string name="interstitial_ad_unit_id">ca-app-pub-3940256099942544/8691691433</string>
  8. <!-- 影片 測試 -->
  9. <string name="video_ad_id">ca-app-pub-3940256099942544/5224354917</string>
  10.  

 

 

MainActivity.kt 

  1.  
  2. ...
  3. ...
  4. import com.google.android.gms.ads.AdError
  5. import com.google.android.gms.ads.AdRequest
  6. import com.google.android.gms.ads.FullScreenContentCallback
  7. import com.google.android.gms.ads.interstitial.InterstitialAd
  8. import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback
  9.  
  10.  
  11.  
  12. class MyActivity : Activity()
  13. {
  14. var mInterstitialAd: InterstitialAd? = null
  15. ...
  16. ...
  17. override fun onResume()
  18. {
  19. var adRequest = AdRequest.Builder().build()
  20. InterstitialAd.load(this,getString(R.string.interstitial_ad_unit_id), adRequest, object : InterstitialAdLoadCallback() {
  21. override fun onAdFailedToLoad(adError: LoadAdError) {
  22. Log.d(TAG, adError.toString())
  23. mInterstitialAd = null
  24. }
  25.  
  26. override fun onAdLoaded(interstitialAd: InterstitialAd) {
  27. Log.d(TAG, "Ad was loaded.")
  28. mInterstitialAd = interstitialAd
  29. }
  30. })
  31. super.onResume()
  32. }
  33. // 當 usser 按了按鈕時
  34. fun onImgClicked(vv: View)
  35. {
  36. toWatchIntersticialAd()
  37. }
  38. // 觀看插頁廣告
  39. private fun toWatchIntersticialAd()
  40. {
  41. val random = Random()
  42. if ((mInterstitialAd!=null) && (random.nextInt(3)==0))
  43. // if(mInterstitialAd!= null) // 測試用, 每次都播放
  44. {
  45. // 若廣告已載入, 且亂數是 3 的倍數, 則播放
  46. // (AdMob 規定: 插頁播放的比例須 < 50%)
  47. mInterstitialAd?.fullScreenContentCallback =
  48. object : FullScreenContentCallback() {
  49. override fun onAdDismissedFullScreenContent() {
  50. Log.d(TAG, "Ad was dismissed.")
  51. // user 關閉廣告, 回主畫面
  52. mInterstitialAd = null
  53. // 返回主畫面
  54. NavUtils.navigateUpFromSameTask(this@MyActivity)
  55. }
  56.  
  57. override fun onAdFailedToShowFullScreenContent(adError: AdError) {
  58. Log.d(TAG, "Ad failed to show.")
  59. mInterstitialAd = null
  60. // 返回主畫面
  61. NavUtils.navigateUpFromSameTask(this@MyActivity)
  62. }
  63.  
  64. override fun onAdShowedFullScreenContent() {
  65. Log.d(TAG, "Ad showed fullscreen content.")
  66. // Called when ad is dismissed.
  67. }
  68. }
  69. mInterstitialAd!!.show(this)
  70. }
  71. else
  72. // 直接返回主畫面
  73. NavUtils.navigateUpFromSameTask(this)
  74. }
  75. }
  76.  


 

 

 

 

沒有留言:

張貼留言