Browse Source

优化广告策略

liuxiaolong 2 years ago
parent
commit
7aac3ba243

+ 1 - 1
app/src/main/java/com/convenient/android/lib/ui/sample/ad/AdMainActivity.kt

@@ -30,7 +30,7 @@ class AdMainActivity : AppCompatActivity() {
 
     private fun initAd(){
         AdManager.instance.init(applicationContext, true)
-        AdManager.instance.initAdvertisersSDK(applicationContext, AdmobInitialize(),CSJInitialize("5320990"), GroMoreInitialize("5320990"))
+        AdManager.instance.initAdvertisersSDK(applicationContext, AdmobInitialize(), CSJInitialize("5320990"), GroMoreInitialize("5320990"))
         val list = mutableListOf<AdUnitBean>()
         list.addAll(Datas.AdmobAdUnitList)
         list.addAll(Datas.CSJAdUnitList)

+ 1 - 1
lib_ad_admob/build.gradle

@@ -56,7 +56,7 @@ android {
 dependencies {
     implementation project(':lib_ad_core')
 
-    implementation 'com.google.android.gms:play-services-ads:21.3.0'
+    api 'com.google.android.gms:play-services-ads:21.3.0'
 
     implementation 'androidx.core:core-ktx:1.8.0'
     implementation 'androidx.appcompat:appcompat:1.5.1'

+ 2 - 0
lib_ad_admob/src/main/java/com/composition/android/ad/admob/impl/AdmobInitialize.kt

@@ -5,6 +5,7 @@ import com.composition.android.lib.ad.AdManager
 import com.composition.android.lib.ad.interfaces.Initialize
 import com.composition.android.lib.ad.util.adLogE
 import com.google.android.gms.ads.MobileAds
+import com.google.android.gms.ads.RequestConfiguration
 
 /**
  * @classname:
@@ -17,5 +18,6 @@ class AdmobInitialize : Initialize {
         MobileAds.initialize(context){
             adLogE(AdManager.TAG,"Admob初始化完成---------->")
         }
+
     }
 }

+ 11 - 0
lib_ad_core/src/main/java/com/composition/android/lib/ad/AdUnitConfigManager.kt

@@ -75,5 +75,16 @@ class AdUnitConfigManager {
         }
     }
 
+    /**
+     * 广告单元是可用的
+     */
+    fun adUnitIsAvailable(adSlotName: String) : Boolean{
+        val adUnitList = getAdUnitBySlotName(adSlotNames = arrayListOf(adSlotName))
+        val hasUnAvailableAdUnit = adUnitList.any {
+            it.isAvailable().not()
+        }
+        return hasUnAvailableAdUnit.not()
+    }
+
 
 }

+ 1 - 0
lib_ad_core/src/main/java/com/composition/android/lib/ad/basic/BasicAdView.kt

@@ -77,6 +77,7 @@ abstract class BasicAdView<T : View> : LinearLayout, DefaultLifecycleObserver {
     override fun onDestroy(owner: LifecycleOwner) {
         super.onDestroy(owner)
         adLog(AdManager.TAG, javaClass.simpleName + " onDestroy")
+        owner.lifecycle.removeObserver(this)
         findViewTreeLifecycleOwner()?.lifecycle?.removeObserver(this)
         onDestroy()
 

+ 1 - 10
lib_ad_core/src/main/java/com/composition/android/lib/ad/widget/NativeAdView.kt

@@ -140,13 +140,6 @@ class NativeAdView : LinearLayout {
             //把广告商的View先加进来
             super.addView(child, index, params)
             Log.e("测试", "if else, child:${child?.javaClass?.simpleName}")
-
-//            if (advertisersContainerView != this) {
-//                如果广告商的view 不是当前view, 让广告商view 添加child
-//                advertisersContainerView?.addView(child, index, params)
-//            } else {
-//                super.addView(child, index, params)
-//            }
         }
     }
 
@@ -180,7 +173,7 @@ class NativeAdView : LinearLayout {
                     override fun onAdDisLike() {
                         super.onAdDisLike()
                         isVisible = false
-                        removeAllViews()
+                        advertisersContainerView?.removeAllViews()
                     }
                 }
             }
@@ -195,7 +188,6 @@ class NativeAdView : LinearLayout {
                 val root = getChildAt(0) as ViewGroup
                 advertisersContainerView = root
                 Log.e("测试", "厂商布局解析完成: root${root.javaClass.simpleName}")
-
             }
         }
     }
@@ -209,7 +201,6 @@ class NativeAdView : LinearLayout {
                 AdLoad.populateNativeAdView(context, adResult as AdResult.Success, viewHolder!!, advertisersContainerView!!)
                 isVisible = true
             }
-
             if (advertisersContainerView == null){
                 adLogE(tag = "原生广告NativeAdView", msg = "厂商的原生广告容器为null, 请指定 ad_admob_native_ad_view_layout 或 其他属性")
             }

+ 2 - 0
lib_ad_csj/src/main/java/com/composition/android/ad/csj/load/view/CSJNativeAdView.kt

@@ -52,6 +52,8 @@ class CSJNativeAdView(context: Context?) : BasicAdView<View>(context) {
     override fun onDestroy() {
         val ttNativeAd = adResult?.adObject as? TTNativeAd
         ttNativeAd?.destroy()
+        adResult?.adObject = null
+
     }
 
     companion object {

BIN
lib_ad_repository/admob/ad_admob_1.0.0_2022-11-04_release.aar


BIN
lib_ad_repository/admob/ad_admob_1.0.0_2022-11-07_release.aar


BIN
lib_ad_repository/core/ad_core_1.0.0_2022-11-04_release.aar


BIN
lib_ad_repository/core/ad_core_1.0.0_2022-11-07_release.aar


BIN
lib_ad_repository/csj/ad_csj_1.0.0_2022-11-02_release.aar


lib_ad_repository/gro_more/ad_gromore_1.0.0_2022-11-04_release.aar → lib_ad_repository/gro_more/ad_gromore_1.0.0_2022-11-07_release.aar