Commit 34708c65 authored by songjianyu's avatar songjianyu

添加原生广告数量限制,添加广告是否显示的回调

parent 1dad641d
...@@ -244,22 +244,25 @@ object AdsMgr { ...@@ -244,22 +244,25 @@ object AdsMgr {
fun showNative( fun showNative(
nativeView: NativeParentView, nativeView: NativeParentView,
@LayoutRes layout: Int, @LayoutRes layout: Int,
nativeCallBack: ((Any?) -> Unit)? = null nativeCallBack: ((Any?) -> Unit)? = null,
isShowCallBack: ((Boolean)->Unit)?=null,
) { ) {
if (!adsConfigBean.isAdShow) { if (!adsConfigBean.isAdShow || LimitUtils.isNativeAdLimit(null)) {
nativeCallBack?.invoke(null) nativeCallBack?.invoke(null)
nativeView.visibility = View.GONE nativeView.visibility = View.GONE
isShowCallBack?.invoke(false)
return return
} }
nativeView.visibility = View.VISIBLE nativeView.visibility = View.VISIBLE
if (configBean.isInBlackList) { if (configBean.isInBlackList) {
EventUtils.event("isInBlackList", configBean.isInBlackList.toString()) EventUtils.event("isInBlackList", configBean.isInBlackList.toString())
isShowCallBack?.invoke(false)
return return
} }
val showNative = { val showNative = {
if (adsConfigBean.adSwitch) { if (adsConfigBean.adSwitch) {
adNativeMgr.show(AdmobEvent("nativeAd", "nativeAd"), nativeView, layout, nativeCallBack) adNativeMgr.show(AdmobEvent("nativeAd", "nativeAd"), nativeView, layout, nativeCallBack,isShowCallBack)
} else { } else {
maxNativeMgr.show(AdMaxEvent("nativeAd", "nativeAd"), nativeView, layout, nativeCallBack) maxNativeMgr.show(AdMaxEvent("nativeAd", "nativeAd"), nativeView, layout, nativeCallBack)
} }
......
...@@ -55,6 +55,7 @@ object LimitUtils { ...@@ -55,6 +55,7 @@ object LimitUtils {
return maxCount > -1 && AppPreferences.getInstance() return maxCount > -1 && AppPreferences.getInstance()
.getInt(NUM_DISPLAY, 0) >= maxCount .getInt(NUM_DISPLAY, 0) >= maxCount
} }
/** /**
* 原生广告展示是否到达限制 * 原生广告展示是否到达限制
*/ */
...@@ -62,7 +63,7 @@ object LimitUtils { ...@@ -62,7 +63,7 @@ object LimitUtils {
get() { get() {
val maxCount = AdConfigBean.adsConfigBean.numNativeDisplayLimit val maxCount = AdConfigBean.adsConfigBean.numNativeDisplayLimit
return maxCount > -1 && AppPreferences.getInstance() return maxCount > -1 && AppPreferences.getInstance()
.getInt(NUM_DISPLAY, 0) >= maxCount .getInt(NUM_NATIVE_SHOW, 0) >= maxCount
} }
/** /**
...@@ -103,13 +104,7 @@ object LimitUtils { ...@@ -103,13 +104,7 @@ object LimitUtils {
AppPreferences.getInstance().put(NUM_REQUEST, 0) AppPreferences.getInstance().put(NUM_REQUEST, 0)
AppPreferences.getInstance().put(NUM_CLICK, 0) AppPreferences.getInstance().put(NUM_CLICK, 0)
} }
if (isDisplayNativeLimited){
val value = "current${getAdEventMsg(adsType)} " +
"show=${AppPreferences.getInstance().getInt(NUM_NATIVE_SHOW, 0)} " +
"${getAdEventMsg(adsType).lowercase()}_" + "max_show=${AdConfigBean.adsConfigBean.numNativeDisplayLimit}"
adEvent?.adLimited(value)
}
if (isDisplayLimited) { if (isDisplayLimited) {
val value = "current${getAdEventMsg(adsType)} " + val value = "current${getAdEventMsg(adsType)} " +
...@@ -120,14 +115,18 @@ object LimitUtils { ...@@ -120,14 +115,18 @@ object LimitUtils {
} }
if (isClickLimited) { if (isClickLimited) {
val value = val value =
"current${getAdEventMsg(adsType)}Click=${AppPreferences.getInstance().getInt(NUM_CLICK, 0)} " "current${getAdEventMsg(adsType)}Click=${
AppPreferences.getInstance().getInt(NUM_CLICK, 0)
} "
"${getAdEventMsg(adsType).lowercase()}_max_click=${AdConfigBean.adsConfigBean.numClickLimit}" "${getAdEventMsg(adsType).lowercase()}_max_click=${AdConfigBean.adsConfigBean.numClickLimit}"
adEvent?.adLimited(value) adEvent?.adLimited(value)
} }
if (isRequestLimited) { if (isRequestLimited) {
val value = "current${getAdEventMsg(adsType)}Request=${AppPreferences.getInstance().getInt(NUM_REQUEST, 0)} " + val value = "current${getAdEventMsg(adsType)}Request=${
AppPreferences.getInstance().getInt(NUM_REQUEST, 0)
} " +
"${getAdEventMsg(adsType).lowercase()}_max_request=${AdConfigBean.adsConfigBean.numRequestLimit}" "${getAdEventMsg(adsType).lowercase()}_max_request=${AdConfigBean.adsConfigBean.numRequestLimit}"
adEvent?.adLimited(value) adEvent?.adLimited(value)
...@@ -136,6 +135,18 @@ object LimitUtils { ...@@ -136,6 +135,18 @@ object LimitUtils {
return !(isDisplayLimited || isClickLimited || isRequestLimited || isDisplayNativeLimited) return !(isDisplayLimited || isClickLimited || isRequestLimited || isDisplayNativeLimited)
} }
//是否限制原生广告
fun isNativeAdLimit(adEvent: AdEvent?): Boolean {
if (isDisplayNativeLimited) {
val value = "current${getAdEventMsg(AdsType.NATIVE)} " +
"show=${AppPreferences.getInstance().getInt(NUM_NATIVE_SHOW, 0)} " +
"${getAdEventMsg(AdsType.NATIVE).lowercase()}_" + "max_show=${AdConfigBean.adsConfigBean.numNativeDisplayLimit}"
adEvent?.adLimited(value)
}
return isDisplayNativeLimited
}
private fun addNum(key: String) { private fun addNum(key: String) {
val currentDate = System.currentTimeMillis().toFormatTime4() val currentDate = System.currentTimeMillis().toFormatTime4()
if (saveDate != currentDate) { if (saveDate != currentDate) {
...@@ -159,6 +170,7 @@ object LimitUtils { ...@@ -159,6 +170,7 @@ object LimitUtils {
fun addClickNum() { fun addClickNum() {
addNum(NUM_CLICK) addNum(NUM_CLICK)
} }
fun addNumNative() { fun addNumNative() {
addNum(NUM_NATIVE_SHOW) addNum(NUM_NATIVE_SHOW)
} }
...@@ -167,7 +179,8 @@ object LimitUtils { ...@@ -167,7 +179,8 @@ object LimitUtils {
* 开屏和插页广告的显示间隔限制 * 开屏和插页广告的显示间隔限制
*/ */
fun isIntervalLimited(adEvent: AdEvent): Boolean { fun isIntervalLimited(adEvent: AdEvent): Boolean {
val flag = ((System.currentTimeMillis() - openInterLastShowTime) / 1000).toInt() < (AdConfigBean.adsConfigBean.timeInterval) val flag =
((System.currentTimeMillis() - openInterLastShowTime) / 1000).toInt() < (AdConfigBean.adsConfigBean.timeInterval)
if (flag) { if (flag) {
adEvent.adShowError("ad in timeInterval") adEvent.adShowError("ad in timeInterval")
} }
......
...@@ -88,7 +88,8 @@ class AdNativeMgr { ...@@ -88,7 +88,8 @@ class AdNativeMgr {
admobEvent: AdmobEvent, admobEvent: AdmobEvent,
parent: NativeParentView, parent: NativeParentView,
layout: Int, layout: Int,
nativeCallBack: ((Any?) -> Unit)? = null nativeCallBack: ((Any?) -> Unit)? = null,
isShowCallBack: ((Boolean)-> Unit)? = null,
) { ) {
admobEvent.adPrepareShow() admobEvent.adPrepareShow()
...@@ -96,6 +97,11 @@ class AdNativeMgr { ...@@ -96,6 +97,11 @@ class AdNativeMgr {
if (!LimitUtils.isAdShow(AdsType.NATIVE, admobEvent)) { if (!LimitUtils.isAdShow(AdsType.NATIVE, admobEvent)) {
Log.e(TAG, "!isAdShow") Log.e(TAG, "!isAdShow")
cacheItems.clear() cacheItems.clear()
isShowCallBack?.invoke(false)
return
}
if (LimitUtils.isNativeAdLimit(admobEvent)){
isShowCallBack?.invoke(false)
return return
} }
Log.e(TAG, "adNative can show") Log.e(TAG, "adNative can show")
...@@ -106,6 +112,7 @@ class AdNativeMgr { ...@@ -106,6 +112,7 @@ class AdNativeMgr {
cacheItems.clear() cacheItems.clear()
} }
isShowCallBack?.invoke(true)
val nativeAd = cacheItems.peek() val nativeAd = cacheItems.peek()
var showAction: (ad: NativeAd) -> Unit = { ad -> var showAction: (ad: NativeAd) -> Unit = { ad ->
parent.isAdShowed = true parent.isAdShowed = true
......
...@@ -4,6 +4,7 @@ import android.app.Activity ...@@ -4,6 +4,7 @@ import android.app.Activity
import android.view.View import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatDialog import androidx.appcompat.app.AppCompatDialog
import androidx.core.view.isVisible
import com.easy.clean.R import com.easy.clean.R
import com.easy.clean.bean.config.AdConfigBean import com.easy.clean.bean.config.AdConfigBean
import com.easy.clean.business.ads.AdsMgr import com.easy.clean.business.ads.AdsMgr
...@@ -44,7 +45,9 @@ class ExitDialog(val activity: Activity) { ...@@ -44,7 +45,9 @@ class ExitDialog(val activity: Activity) {
fun show() { fun show() {
dialog.show() dialog.show()
if (AdConfigBean.adsConfigBean.isAdShow) { if (AdConfigBean.adsConfigBean.isAdShow) {
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom_r16) AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom_r16, isShowCallBack = {f->
binding.clAd.isVisible=f
})
} else { } else {
binding.clAd.visibility = View.GONE binding.clAd.visibility = View.GONE
} }
......
...@@ -5,6 +5,7 @@ import android.view.LayoutInflater ...@@ -5,6 +5,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.view.isVisible
import com.easy.clean.R import com.easy.clean.R
import com.easy.clean.bean.config.AdConfigBean import com.easy.clean.bean.config.AdConfigBean
import com.easy.clean.business.ads.AdsMgr import com.easy.clean.business.ads.AdsMgr
...@@ -79,7 +80,9 @@ class FunctionBackDialog( ...@@ -79,7 +80,9 @@ class FunctionBackDialog(
dialog.show() dialog.show()
if (AdConfigBean.adsConfigBean.isAdShow){ if (AdConfigBean.adsConfigBean.isAdShow){
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom_r16) AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom_r16, isShowCallBack = {f->
binding.clAd.isVisible=f
})
}else{ }else{
binding.clAd.visibility= View.GONE binding.clAd.visibility= View.GONE
} }
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
android:id="@+id/cl_exit" android:id="@+id/cl_exit"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/white_background_24"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:background="@drawable/white_background_24"
android:paddingBottom="30dp" android:paddingBottom="30dp"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
...@@ -97,8 +97,8 @@ ...@@ -97,8 +97,8 @@
android:id="@+id/cl_ad" android:id="@+id/cl_ad"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_marginTop="8dp"
android:background="@drawable/bg_ffffff_24" android:background="@drawable/bg_ffffff_24"
android:paddingHorizontal="11dp" android:paddingHorizontal="11dp"
android:paddingVertical="12dp" android:paddingVertical="12dp"
...@@ -117,4 +117,5 @@ ...@@ -117,4 +117,5 @@
</com.easy.clean.business.ads.NativeParentView> </com.easy.clean.business.ads.NativeParentView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment