Commit 71863dc9 authored by wanglei's avatar wanglei

插页广告

parent 12a612cd
package com.base.filerecoveryrecyclebin.ads.max package com.base.filerecoveryrecyclebin.ads.max
import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.app.Dialog
import android.os.CountDownTimer
import android.os.Handler import android.os.Handler
import com.applovin.mediation.MaxAd import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxInterstitialAd import com.applovin.mediation.ads.MaxInterstitialAd
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobCommonUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.help.ConfigHelper import com.base.filerecoveryrecyclebin.help.ConfigHelper
import com.base.filerecoveryrecyclebin.utils.EventUtils import com.base.filerecoveryrecyclebin.utils.EventUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.base.filerecoveryrecyclebin.view.CustomDialog
import com.google.android.gms.ads.AdError
import com.google.android.gms.ads.FullScreenContentCallback
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -19,13 +30,17 @@ import kotlin.math.pow ...@@ -19,13 +30,17 @@ import kotlin.math.pow
object AdMaxInterstitialUtils { object AdMaxInterstitialUtils {
private val TAG = "AdMaxInterstitialUtils"
private var interstitialAd: MaxInterstitialAd? = null private var interstitialAd: MaxInterstitialAd? = null
private var interLoadTime = Long.MAX_VALUE private var interLoadTime = Long.MAX_VALUE
private var onHidden: (() -> Unit)? = null private var onHidden: (() -> Unit)? = null
private var loadingListener: (() -> Unit)? = null private var loadingListener: (() -> Unit)? = null
private var retryAttempt = 0 private var retryAttempt = 0
fun setListener(activity: Activity) { @SuppressLint("StaticFieldLeak")
private var customDialog: CustomDialog? = null
private fun setListener(activity: Activity) {
if (interstitialAd == null) { if (interstitialAd == null) {
interstitialAd = MaxInterstitialAd(ConfigHelper.interAdMaxId, activity) interstitialAd = MaxInterstitialAd(ConfigHelper.interAdMaxId, activity)
} }
...@@ -94,13 +109,12 @@ object AdMaxInterstitialUtils { ...@@ -94,13 +109,12 @@ object AdMaxInterstitialUtils {
this.onHidden = onHidden this.onHidden = onHidden
if (interstitialAd?.isReady == true) { if (interstitialAd?.isReady == true) {
interstitialAd?.showAd() LogEx.logDebug(TAG, "isReady=true")
showIntervalDialogAndShowAd(activity, isShowDialog, onHidden, 2)
} else { } else {
interstitialAd?.loadAd() interstitialAd?.loadAd()
loadingListener = { LogEx.logDebug(TAG, "isReady=false")
interstitialAd?.showAd() showAdDialogAndLoadInterstitial(activity, isReLoadAd, isShowDialog, onHidden)
loadingListener = null
}
} }
} }
...@@ -108,4 +122,69 @@ object AdMaxInterstitialUtils { ...@@ -108,4 +122,69 @@ object AdMaxInterstitialUtils {
private fun isAdExpired(): Boolean { private fun isAdExpired(): Boolean {
return System.currentTimeMillis() - interLoadTime > 1000 * 60 * 60 return System.currentTimeMillis() - interLoadTime > 1000 * 60 * 60
} }
private fun showIntervalDialogAndShowAd(
activity: Activity,
isShowDialog: Boolean,
onHidden: (() -> Unit)?,
interval: Int
) {
if (!isShowDialog) {
return
}
if (customDialog != null && customDialog?.isShowing == true) {
return // 如果对话框已经显示,则不再显示
}
customDialog = CustomDialog(activity, R.layout.dialog_ad_loading)
customDialog?.setCountdownText(R.id.dialog_ad_loading_text)
val countdownTimer = object : CountDownTimer((interval * 1000).toLong(), 1000) {
override fun onTick(millisUntilFinished: Long) {
val seconds = (millisUntilFinished / 1000).toInt()
customDialog?.updateCountdownText("Advertising in preparation ($seconds" + "s)...")
}
override fun onFinish() {
if (!activity.isDestroyed && !activity.isFinishing) {
customDialog?.dismiss()
}
customDialog = null
LogEx.logDebug(TAG, "onFinish")
interstitialAd?.showAd()
}
}
countdownTimer.start()
customDialog?.show()
}
private fun showAdDialogAndLoadInterstitial(
activity: Activity,
isReLoadAd: Boolean,
isShowDialog: Boolean,
onHidden: (() -> Unit)?
) {
if (!isShowDialog) {
return
}
var mDialog: Dialog? = null
if (!activity.isFinishing && !activity.isDestroyed) {
mDialog = CustomDialog(activity, R.layout.dialog_ad_loading)
// 设置对话框的样式和内容
mDialog.show()
}
loadingListener = {
mDialog?.dismiss()
interstitialAd?.showAd()
loadingListener = null
}
// if (isReLoadAd) {
// mDialog?.dismiss()
// onHidden?.invoke()
// }
}
} }
\ 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