Commit fdf059cd authored by wanglei's avatar wanglei

...移除max

parent 02ba2215
......@@ -92,13 +92,13 @@ dependencies {
//广告
implementation("com.google.android.gms:play-services-ads:23.1.0")
implementation 'com.google.ads.mediation:applovin:12.4.3.0'
// implementation 'com.google.ads.mediation:applovin:12.4.3.0'
implementation 'com.google.ads.mediation:facebook:6.17.0.0'
implementation 'com.google.ads.mediation:mintegral:16.7.21.0'
implementation 'com.google.ads.mediation:pangle:5.9.0.4.0'
//max
implementation 'com.applovin:applovin-sdk:+'
// implementation 'com.applovin:applovin-sdk:+'
// implementation 'com.applovin.mediation:google-adapter:+'
// implementation 'com.applovin.mediation:facebook-adapter:+'
// implementation 'com.applovin.mediation:mintegral-adapter:+'
......
......@@ -3,15 +3,9 @@ package com.base.filerecoveryrecyclebin.ads
import android.app.Activity
import android.util.Log
import android.view.ViewGroup
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobOpenUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxInit
import com.base.filerecoveryrecyclebin.ads.max.AdMaxInit.initAdMax
import com.base.filerecoveryrecyclebin.ads.max.AdMaxInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxNativeUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxOpenUtils
import com.base.filerecoveryrecyclebin.help.BaseApplication
import com.base.filerecoveryrecyclebin.utils.AppPreferences
import com.base.filerecoveryrecyclebin.utils.EventUtils
......@@ -51,7 +45,7 @@ object AdmobMaxHelper {
if (isBlack) {
return
}
if (getSpAdmobTrueMaxFalse()) {
if (true) {
if (!isAdInit.get()) {
LogEx.logDebug(TAG, "init sp Admob")
MobileAds.initialize(BaseApplication.context) { initializationStatus ->
......@@ -59,20 +53,21 @@ object AdmobMaxHelper {
}
}
} else {
if (!isAdInit.get()) {
LogEx.logDebug(TAG, "init sp AdMax")
BaseApplication.context.initAdMax()
}
// if (!isAdInit.get()) {
// LogEx.logDebug(TAG, "init sp AdMax")
// BaseApplication.context.initAdMax()
// }
}
}
//End end
fun isOpenAdLoaded(): Boolean {
return if (getSpAdmobTrueMaxFalse()) {
AdmobOpenUtils.isOpenAdLoaded()
} else {
AdMaxOpenUtils.isOpenAdLoaded()
}
// if (getSpAdmobTrueMaxFalse()) {
//
// } else {
// AdMaxOpenUtils.isOpenAdLoaded()
// }
return AdmobOpenUtils.isOpenAdLoaded()
}
//展示广告关闭时赋值
......@@ -96,14 +91,14 @@ object AdmobMaxHelper {
return
}
if (getSpAdmobTrueMaxFalse()) {
if (true) {
AdmobInterstitialUtils.showInterstitialAd(activity) {
onHidden?.invoke()
}
} else {
AdMaxInterstitialUtils.showInterstitialAd(activity) {
onHidden?.invoke()
}
// AdMaxInterstitialUtils.showInterstitialAd(activity) {
// onHidden?.invoke()
// }
}
}
......@@ -116,14 +111,14 @@ object AdmobMaxHelper {
onHidden?.invoke()
return
}
if (getSpAdmobTrueMaxFalse()) {
if (true) {
AdmobOpenUtils.showAppOpenAd(activity, showBefore = showBeforeAction) {
onHidden?.invoke()
}
} else {
AdMaxOpenUtils.showAppOpenAd(activity, loadCallBack = showBeforeAction) {
onHidden?.invoke()
}
// AdMaxOpenUtils.showAppOpenAd(activity, loadCallBack = showBeforeAction) {
// onHidden?.invoke()
// }
}
}
......@@ -131,20 +126,20 @@ object AdmobMaxHelper {
if (isBlack) {
return
}
if (getSpAdmobTrueMaxFalse()) {
if (true) {
AdmobNativeUtils.showNativeAd(activity, parent)
} else {
var layout = R.layout.layout_max_native_small
if (where == 0) {
layout = R.layout.layout_max_native_small_f8f8f8
}
if (where == 1) {
layout = R.layout.layout_max_native_big
}
if (where == 2) {
layout = R.layout.layout_max_native_big_2
}
AdMaxNativeUtils.showNativeAd(activity, parent, layout)
// var layout = R.layout.layout_max_native_small
// if (where == 0) {
// layout = R.layout.layout_max_native_small_f8f8f8
// }
// if (where == 1) {
// layout = R.layout.layout_max_native_big
// }
// if (where == 2) {
// layout = R.layout.layout_max_native_big_2
// }
// AdMaxNativeUtils.showNativeAd(activity, parent, layout)
}
}
......@@ -153,19 +148,19 @@ object AdmobMaxHelper {
return
}
if (getSpAdmobTrueMaxFalse()) {
if (true) {
// AdmobOpenUtils.loadAppOpenAd()
AdmobInterstitialUtils.loadInterstitialAd(activity)
} else {
if (isAdInit.get()) {
// AdMaxOpenUtils.loadAppOpenAd(activity)
AdMaxInterstitialUtils.loadInterstitialAd(activity)
// AdMaxInterstitialUtils.loadInterstitialAd(activity)
} else {
AdMaxInit.maxInitAction = {
Log.d(TAG, "max init suc")
// AdMaxInit.maxInitAction = {
Log.d(TAG, "max init suc")
// AdMaxOpenUtils.loadAppOpenAd(activity)
// AdMaxInterstitialUtils.loadInterstitialAd(activity)
}
// }
}
}
}
......
package com.base.filerecoveryrecyclebin.ads.max
import android.os.Bundle
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdRevenueListener
import com.applovin.sdk.AppLovinSdk
import com.base.filerecoveryrecyclebin.help.BaseApplication
import com.base.filerecoveryrecyclebin.utils.EventUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.facebook.FacebookSdk
import com.facebook.appevents.AppEventsConstants
import com.facebook.appevents.AppEventsLogger
import com.google.firebase.analytics.FirebaseAnalytics
import org.json.JSONObject
object AdMaxEvent {
fun pullAd(ad: MaxAd?, adUnit: String, error: String? = null, reqId: String? = null, code: Int? = null) {
val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit)
obj.put(
"creativeId",
ad?.creativeId
)
obj.put("req_id", reqId)
obj.put("status", if (ad == null) "0" else "1")
obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement)
obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
if (error == null) {
obj.put("status", "1")
} else {
obj.put("errMsg", error)
obj.put("status", "2")
}
EventUtils.event("ad_pull", ext = obj)
}
fun clickAd(ad: MaxAd?, adUnit: String) {
val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit)
obj.put(
"creativeId",
ad?.creativeId
)
obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement)
obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
if (!adUnit.equals("nativeAd")) {
EventUtils.event("ad_click", ext = obj)
} else {
EventUtils.event("big_imgad_click", ext = obj)
}
}
fun showAd(ad: MaxAd?, adUnit: String, activity: String?) {
val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit)
obj.put(
"creativeId",
ad?.creativeId
)
obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement)
obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
obj.put("from", activity)
obj.put("mediation", "applovin")
LogEx.logDebug("glc", "from: $activity")
if (adUnit != "nativeAd") {
EventUtils.event("ad_show", ext = obj)
} else {
EventUtils.event("big_img_show", ext = obj)
}
}
private val taichiPref = FacebookSdk.getApplicationContext()
.getSharedPreferences("TaichiTroasCache", 0)
private val taichiSharedPreferencesEditor = taichiPref.edit()
class EventOnPaidEventListener : MaxAdRevenueListener {
override fun onAdRevenuePaid(ad: MaxAd) {
val params = Bundle()
val currentImpressionRevenue: Double = ad.revenue // In USD
val mFirebaseAnalytics = FirebaseAnalytics.getInstance(BaseApplication.context)
params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin")
params.putString(FirebaseAnalytics.Param.AD_SOURCE, ad.networkName)
params.putString(FirebaseAnalytics.Param.AD_FORMAT, ad.format.getDisplayName())
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, ad.adUnitId)
params.putDouble(FirebaseAnalytics.Param.VALUE, currentImpressionRevenue)
params.putString(FirebaseAnalytics.Param.CURRENCY, "USD")
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params)
mFirebaseAnalytics.logEvent("Ad_Impression_Revenue", params)
val previousTaichiTroasCache = taichiPref.getFloat("TaichiTroasCache", 0f)
val currentTaichiTroasCache = previousTaichiTroasCache + currentImpressionRevenue
if (currentTaichiTroasCache >= 0.01) {
val roasbundle = Bundle()
roasbundle.putDouble(FirebaseAnalytics.Param.VALUE, currentTaichiTroasCache)
roasbundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD")///(Required)tROAS事件必须
mFirebaseAnalytics.logEvent("Total_Ads_Revenue_001", roasbundle) // 给Taichi用
taichiSharedPreferencesEditor.putFloat("TaichiTroasCache", 0f)//重新清零,开始计算
val logger = AppEventsLogger.newLogger(BaseApplication.context)
val parameters = Bundle()
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD")
logger.logEvent("ad_value", currentTaichiTroasCache, parameters)
} else {
taichiSharedPreferencesEditor.putFloat(
"TaichiTroasCache",
currentTaichiTroasCache.toFloat()
)
taichiSharedPreferencesEditor.commit()
}
val obj = JSONObject()
val revenue = ad.revenue
val countryCode =
AppLovinSdk.getInstance(BaseApplication.context).configuration.countryCode
val networkName = ad.networkName
val adUnitId = ad.adUnitId
val adFormat = ad.format
val placement = ad.placement
val networkPlacement = ad.networkPlacement
obj.put("valueMicros", revenue)
obj.put("currencyCode", countryCode)
obj.put("adUnitId", adUnitId)
obj.put("networkName", networkName)
obj.put("adFormat", adFormat)
obj.put("placement", placement)
obj.put("networkPlacement", networkPlacement)
EventUtils.event("ad_price", ext = obj)
}
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.ads.max
//
//import android.os.Bundle
//import com.applovin.mediation.MaxAd
//import com.applovin.mediation.MaxAdRevenueListener
//import com.applovin.sdk.AppLovinSdk
//import com.base.filerecoveryrecyclebin.help.BaseApplication
//import com.base.filerecoveryrecyclebin.utils.EventUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import com.facebook.FacebookSdk
//import com.facebook.appevents.AppEventsConstants
//import com.facebook.appevents.AppEventsLogger
//import com.google.firebase.analytics.FirebaseAnalytics
//import org.json.JSONObject
//
//object AdMaxEvent {
// fun pullAd(ad: MaxAd?, adUnit: String, error: String? = null, reqId: String? = null, code: Int? = null) {
// val obj = JSONObject()
// obj.put("UnitId", ad?.adUnitId)
// obj.put("ad_unit", adUnit)
// obj.put(
// "creativeId",
// ad?.creativeId
// )
// obj.put("req_id", reqId)
// obj.put("status", if (ad == null) "0" else "1")
// obj.put("networkname", ad?.networkName)
// obj.put("placement", ad?.placement)
// obj.put("networkplacement", ad?.networkPlacement)
// obj.put("latency", ad?.requestLatencyMillis)
// obj.put("valueMicros", ad?.revenue)
// if (error == null) {
// obj.put("status", "1")
// } else {
// obj.put("errMsg", error)
// obj.put("status", "2")
// }
// EventUtils.event("ad_pull", ext = obj)
// }
//
// fun clickAd(ad: MaxAd?, adUnit: String) {
//
// val obj = JSONObject()
// obj.put("UnitId", ad?.adUnitId)
// obj.put("ad_unit", adUnit)
// obj.put(
// "creativeId",
// ad?.creativeId
// )
// obj.put("networkname", ad?.networkName)
// obj.put("placement", ad?.placement)
// obj.put("networkplacement", ad?.networkPlacement)
// obj.put("latency", ad?.requestLatencyMillis)
// obj.put("valueMicros", ad?.revenue)
// if (!adUnit.equals("nativeAd")) {
// EventUtils.event("ad_click", ext = obj)
// } else {
// EventUtils.event("big_imgad_click", ext = obj)
// }
//
// }
//
// fun showAd(ad: MaxAd?, adUnit: String, activity: String?) {
// val obj = JSONObject()
// obj.put("UnitId", ad?.adUnitId)
// obj.put("ad_unit", adUnit)
// obj.put(
// "creativeId",
// ad?.creativeId
// )
// obj.put("networkname", ad?.networkName)
// obj.put("placement", ad?.placement)
// obj.put("networkplacement", ad?.networkPlacement)
// obj.put("latency", ad?.requestLatencyMillis)
// obj.put("valueMicros", ad?.revenue)
// obj.put("from", activity)
// obj.put("mediation", "applovin")
// LogEx.logDebug("glc", "from: $activity")
// if (adUnit != "nativeAd") {
// EventUtils.event("ad_show", ext = obj)
// } else {
// EventUtils.event("big_img_show", ext = obj)
// }
//
// }
//
// private val taichiPref = FacebookSdk.getApplicationContext()
// .getSharedPreferences("TaichiTroasCache", 0)
// private val taichiSharedPreferencesEditor = taichiPref.edit()
//
// class EventOnPaidEventListener : MaxAdRevenueListener {
// override fun onAdRevenuePaid(ad: MaxAd) {
// val params = Bundle()
// val currentImpressionRevenue: Double = ad.revenue // In USD
// val mFirebaseAnalytics = FirebaseAnalytics.getInstance(BaseApplication.context)
// params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin")
// params.putString(FirebaseAnalytics.Param.AD_SOURCE, ad.networkName)
// params.putString(FirebaseAnalytics.Param.AD_FORMAT, ad.format.getDisplayName())
// params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, ad.adUnitId)
// params.putDouble(FirebaseAnalytics.Param.VALUE, currentImpressionRevenue)
// params.putString(FirebaseAnalytics.Param.CURRENCY, "USD")
// mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params)
// mFirebaseAnalytics.logEvent("Ad_Impression_Revenue", params)
// val previousTaichiTroasCache = taichiPref.getFloat("TaichiTroasCache", 0f)
// val currentTaichiTroasCache = previousTaichiTroasCache + currentImpressionRevenue
// if (currentTaichiTroasCache >= 0.01) {
// val roasbundle = Bundle()
// roasbundle.putDouble(FirebaseAnalytics.Param.VALUE, currentTaichiTroasCache)
// roasbundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD")///(Required)tROAS事件必须
// mFirebaseAnalytics.logEvent("Total_Ads_Revenue_001", roasbundle) // 给Taichi用
// taichiSharedPreferencesEditor.putFloat("TaichiTroasCache", 0f)//重新清零,开始计算
//
// val logger = AppEventsLogger.newLogger(BaseApplication.context)
// val parameters = Bundle()
// parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD")
// logger.logEvent("ad_value", currentTaichiTroasCache, parameters)
// } else {
// taichiSharedPreferencesEditor.putFloat(
// "TaichiTroasCache",
// currentTaichiTroasCache.toFloat()
// )
// taichiSharedPreferencesEditor.commit()
// }
// val obj = JSONObject()
// val revenue = ad.revenue
// val countryCode =
// AppLovinSdk.getInstance(BaseApplication.context).configuration.countryCode
// val networkName = ad.networkName
// val adUnitId = ad.adUnitId
// val adFormat = ad.format
// val placement = ad.placement
// val networkPlacement = ad.networkPlacement
// obj.put("valueMicros", revenue)
// obj.put("currencyCode", countryCode)
// obj.put("adUnitId", adUnitId)
// obj.put("networkName", networkName)
// obj.put("adFormat", adFormat)
// obj.put("placement", placement)
// obj.put("networkPlacement", networkPlacement)
// EventUtils.event("ad_price", ext = obj)
// }
//
// }
//}
\ No newline at end of file
package com.base.filerecoveryrecyclebin.ads.max
import android.content.Context
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.isAdInit
import com.base.filerecoveryrecyclebin.utils.EventUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import java.util.concurrent.Executors
object AdMaxInit {
private val TAG = "AdMaxInit"
var maxInitAction: (() -> Unit)? = null
fun Context.initAdMax() {
// If you want to test your own AppLovin SDK key, change the value here and update the package name in the build.gradle
// val YOUR_SDK_KEY = "05TMDQ5tZabpXQ45_UTbmEGNUtVAzSTzT6KmWQc5_CuWdzccS4DCITZoL3yIWUG3bbq60QC_d4WF28tUC4gVTF"
val YOUR_SDK_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
val executor = Executors.newSingleThreadExecutor();
executor.execute {
val initConfigBuilder = AppLovinSdkInitializationConfiguration.builder(YOUR_SDK_KEY, this)
initConfigBuilder.mediationProvider = AppLovinMediationProvider.MAX
// Enable test mode by default for the current device. Cannot be run on the main thread.
// val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(this).id
// if (currentGaid != null) {
// initConfigBuilder.testDeviceAdvertisingIds = Collections.singletonList(currentGaid)
//package com.base.filerecoveryrecyclebin.ads.max
//
//import android.content.Context
//import com.applovin.sdk.AppLovinMediationProvider
//import com.applovin.sdk.AppLovinSdk
//import com.applovin.sdk.AppLovinSdkInitializationConfiguration
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.isAdInit
//import com.base.filerecoveryrecyclebin.utils.EventUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import java.util.concurrent.Executors
//
//object AdMaxInit {
//
// private val TAG = "AdMaxInit"
// var maxInitAction: (() -> Unit)? = null
//
// fun Context.initAdMax() {
// // If you want to test your own AppLovin SDK key, change the value here and update the package name in the build.gradle
//// val YOUR_SDK_KEY = "05TMDQ5tZabpXQ45_UTbmEGNUtVAzSTzT6KmWQc5_CuWdzccS4DCITZoL3yIWUG3bbq60QC_d4WF28tUC4gVTF"
// val YOUR_SDK_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
//
// val executor = Executors.newSingleThreadExecutor();
// executor.execute {
//
// val initConfigBuilder = AppLovinSdkInitializationConfiguration.builder(YOUR_SDK_KEY, this)
// initConfigBuilder.mediationProvider = AppLovinMediationProvider.MAX
//
// // Enable test mode by default for the current device. Cannot be run on the main thread.
//// val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(this).id
//// if (currentGaid != null) {
//// initConfigBuilder.testDeviceAdvertisingIds = Collections.singletonList(currentGaid)
//// }
//
//
// // Initialize the AppLovin SDK
// val sdk = AppLovinSdk.getInstance(this)
// sdk.initialize(initConfigBuilder.build()) {
// LogEx.logDebug(TAG, "max init")
// isAdInit.set(true)
// maxInitAction?.invoke()
// maxInitAction = null
// EventUtils.event("MaxInit", "MaxInit")
// }
// Initialize the AppLovin SDK
val sdk = AppLovinSdk.getInstance(this)
sdk.initialize(initConfigBuilder.build()) {
LogEx.logDebug(TAG, "max init")
isAdInit.set(true)
maxInitAction?.invoke()
maxInitAction = null
EventUtils.event("MaxInit", "MaxInit")
}
executor.shutdown()
}
}
}
\ No newline at end of file
//
// executor.shutdown()
// }
// }
//}
\ No newline at end of file
package com.base.filerecoveryrecyclebin.ads.max
import android.app.Activity
import android.app.Dialog
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxInterstitialAd
import com.base.filerecoveryrecyclebin.MyApplication.Companion.isInterOpenShowing
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.isAdInit
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.lastShowedOnHiddenTime
import com.base.filerecoveryrecyclebin.help.ConfigHelper
import com.base.filerecoveryrecyclebin.utils.EventUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.base.filerecoveryrecyclebin.view.CustomDialog
import org.json.JSONObject
import java.util.UUID
object AdMaxInterstitialUtils {
private val TAG = "AdMaxInterstitialUtils"
private var interstitialAd: MaxInterstitialAd? = null
private var interLoadTime = Long.MAX_VALUE
private var onHidden: (() -> Unit)? = null
private var loadingListener: (() -> Unit)? = null
private var activityString: String = ""
private fun setListener(activity: Activity) {
activityString = activity::class.java.toString().split(".").last()
if (interstitialAd == null) {
interstitialAd = MaxInterstitialAd(ConfigHelper.interAdMaxId, activity)
interstitialAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdLoaded")
loadingListener?.invoke()
loadingListener = null
interLoadTime = System.currentTimeMillis()
val reqId = UUID.randomUUID().toString()
AdMaxEvent.pullAd(p0, "interAd", reqId = reqId)
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
LogEx.logDebug(TAG, "onAdLoadFailed")
val reqId = UUID.randomUUID().toString()
AdMaxEvent.pullAd(null, "interAd", reqId = reqId, error = p1.message, code = p1.code)
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
loadingListener?.invoke()
loadingListener = null
}
override fun onAdDisplayed(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdDisplayed")
AdDisplayUtils.getInstance().incrementAdDisplayCount()
AdMaxEvent.showAd(p0, "interAd", activityString)
isInterOpenShowing = true
}
override fun onAdHidden(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdHidden")
onHidden?.invoke()
onHidden = null
AdMaxOpenUtils.loadAppOpenAd(activity)
// loadInterstitialAd(activity)
isInterOpenShowing = false
lastShowedOnHiddenTime = System.currentTimeMillis()
}
override fun onAdClicked(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdClicked activity=$activityString")
AdDisplayUtils.getInstance().incrementAdClickCount()
AdMaxEvent.clickAd(p0, "interAd")
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
LogEx.logDebug(TAG, "onAdDisplayFailed")
onHidden?.invoke()
onHidden = null
val obj2 = JSONObject()
obj2.put("code", p1.code)
obj2.put("reason", p1.message)
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_show_error", ext = obj2)
isInterOpenShowing = false
}
})
interstitialAd?.setRevenueListener(AdMaxEvent.EventOnPaidEventListener())
}
}
fun showInterstitialAd(activity: Activity, onHidden: (() -> Unit)? = null) {
setListener(activity)
if (activity.isFinishing || activity.isDestroyed) {
return
}
if (isAdExpired()) {
val obj2 = JSONObject()
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_expire", ext = obj2)
onHidden?.invoke()
loadInterstitialAd(activity)
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd("interAd")) {
onHidden?.invoke()
return
}
LogEx.logDebug(TAG, "showInterstitialAd,展示插屏广告")
val obj1 = JSONObject()
obj1.put("ad_unit", "interAd")
EventUtils.event("ad_prepare_show", ext = obj1)
isInterOpenShowing = false
if (interstitialAd?.isReady == true) {
LogEx.logDebug(TAG, "有缓存直接播放。")
this.onHidden = onHidden
interstitialAd?.showAd(activity)
} else {
LogEx.logDebug(TAG, "展示广告时,没有缓存,需要拉取。")
val obj2 = JSONObject()
obj2.put("reason", "no cache ad")
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_nocache_pull", ext = obj2)
val loaded = loadInterstitialAd(activity)
if (loaded) {
LogEx.logDebug(TAG, "loaded=true")
val dialog = showAdDialogAndLoadInterstitial(activity)
loadingListener = {
dialog?.dismiss()
if (interstitialAd?.isReady == true) {
this.onHidden = onHidden
interstitialAd?.showAd(activity)
} else {
onHidden?.invoke()
}
}
} else {
LogEx.logDebug(TAG, "loaded=false")
onHidden?.invoke()
}
}
}
private fun isAdExpired(): Boolean {
return System.currentTimeMillis() - interLoadTime > 1000 * 60 * 60
}
private fun showAdDialogAndLoadInterstitial(
activity: Activity,
): Dialog? {
var customDialog: Dialog? = null
if (!activity.isFinishing && !activity.isDestroyed) {
customDialog = CustomDialog(activity, R.layout.dialog_ad_loading)
// 设置对话框的样式和内容
customDialog.show()
}
return customDialog
}
fun loadInterstitialAd(activity: Activity): Boolean {
setListener(activity)
if (!AdDisplayUtils.getInstance().shouldShowAd("interAd")) {
return false
}
LogEx.logDebug(TAG, "loadInterstitialAd")
val reqId = UUID.randomUUID().toString()
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "interAd")
EventUtils.event("ad_pull_start", ext = obj)
interstitialAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
return true
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.ads.max
//
//import android.app.Activity
//import android.app.Dialog
//import com.applovin.mediation.MaxAd
//import com.applovin.mediation.MaxAdListener
//import com.applovin.mediation.MaxError
//import com.applovin.mediation.ads.MaxInterstitialAd
//import com.base.filerecoveryrecyclebin.MyApplication.Companion.isInterOpenShowing
//import com.base.filerecoveryrecyclebin.R
//import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.isAdInit
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.lastShowedOnHiddenTime
//import com.base.filerecoveryrecyclebin.help.ConfigHelper
//import com.base.filerecoveryrecyclebin.utils.EventUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import com.base.filerecoveryrecyclebin.view.CustomDialog
//import org.json.JSONObject
//import java.util.UUID
//
//object AdMaxInterstitialUtils {
//
// private val TAG = "AdMaxInterstitialUtils"
// private var interstitialAd: MaxInterstitialAd? = null
// private var interLoadTime = Long.MAX_VALUE
// private var onHidden: (() -> Unit)? = null
// private var loadingListener: (() -> Unit)? = null
// private var activityString: String = ""
//
// private fun setListener(activity: Activity) {
// activityString = activity::class.java.toString().split(".").last()
// if (interstitialAd == null) {
//
// interstitialAd = MaxInterstitialAd(ConfigHelper.interAdMaxId, activity)
// interstitialAd?.setListener(object : MaxAdListener {
// override fun onAdLoaded(p0: MaxAd) {
// LogEx.logDebug(TAG, "onAdLoaded")
//
// loadingListener?.invoke()
// loadingListener = null
//
// interLoadTime = System.currentTimeMillis()
// val reqId = UUID.randomUUID().toString()
// AdMaxEvent.pullAd(p0, "interAd", reqId = reqId)
// }
//
// override fun onAdLoadFailed(p0: String, p1: MaxError) {
// LogEx.logDebug(TAG, "onAdLoadFailed")
// val reqId = UUID.randomUUID().toString()
// AdMaxEvent.pullAd(null, "interAd", reqId = reqId, error = p1.message, code = p1.code)
// AdDisplayUtils.getInstance().incrementAdRequestFailCount()
//
// loadingListener?.invoke()
// loadingListener = null
// }
//
// override fun onAdDisplayed(p0: MaxAd) {
// LogEx.logDebug(TAG, "onAdDisplayed")
// AdDisplayUtils.getInstance().incrementAdDisplayCount()
// AdMaxEvent.showAd(p0, "interAd", activityString)
//
// isInterOpenShowing = true
// }
//
// override fun onAdHidden(p0: MaxAd) {
// LogEx.logDebug(TAG, "onAdHidden")
// onHidden?.invoke()
// onHidden = null
// AdMaxOpenUtils.loadAppOpenAd(activity)
//// loadInterstitialAd(activity)
//
// isInterOpenShowing = false
// lastShowedOnHiddenTime = System.currentTimeMillis()
// }
//
// override fun onAdClicked(p0: MaxAd) {
// LogEx.logDebug(TAG, "onAdClicked activity=$activityString")
// AdDisplayUtils.getInstance().incrementAdClickCount()
// AdMaxEvent.clickAd(p0, "interAd")
// }
//
//
// override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
// LogEx.logDebug(TAG, "onAdDisplayFailed")
// onHidden?.invoke()
// onHidden = null
// val obj2 = JSONObject()
// obj2.put("code", p1.code)
// obj2.put("reason", p1.message)
// obj2.put("ad_unit", "interAd")
// EventUtils.event("ad_show_error", ext = obj2)
//
// isInterOpenShowing = false
// }
// })
// interstitialAd?.setRevenueListener(AdMaxEvent.EventOnPaidEventListener())
// }
// }
//
// fun showInterstitialAd(activity: Activity, onHidden: (() -> Unit)? = null) {
// setListener(activity)
//
// if (activity.isFinishing || activity.isDestroyed) {
// return
// }
//
// if (isAdExpired()) {
// val obj2 = JSONObject()
// obj2.put("ad_unit", "interAd")
// EventUtils.event("ad_expire", ext = obj2)
// onHidden?.invoke()
// loadInterstitialAd(activity)
// return
// }
//
//
// if (!AdDisplayUtils.getInstance().shouldShowAd("interAd")) {
// onHidden?.invoke()
// return
// }
//
// LogEx.logDebug(TAG, "showInterstitialAd,展示插屏广告")
//
// val obj1 = JSONObject()
// obj1.put("ad_unit", "interAd")
// EventUtils.event("ad_prepare_show", ext = obj1)
// isInterOpenShowing = false
//
// if (interstitialAd?.isReady == true) {
// LogEx.logDebug(TAG, "有缓存直接播放。")
// this.onHidden = onHidden
// interstitialAd?.showAd(activity)
// } else {
// LogEx.logDebug(TAG, "展示广告时,没有缓存,需要拉取。")
// val obj2 = JSONObject()
// obj2.put("reason", "no cache ad")
// obj2.put("ad_unit", "interAd")
// EventUtils.event("ad_nocache_pull", ext = obj2)
// val loaded = loadInterstitialAd(activity)
// if (loaded) {
// LogEx.logDebug(TAG, "loaded=true")
// val dialog = showAdDialogAndLoadInterstitial(activity)
// loadingListener = {
// dialog?.dismiss()
// if (interstitialAd?.isReady == true) {
// this.onHidden = onHidden
// interstitialAd?.showAd(activity)
// } else {
// onHidden?.invoke()
// }
// }
// } else {
// LogEx.logDebug(TAG, "loaded=false")
// onHidden?.invoke()
// }
// }
//
// }
//
// private fun isAdExpired(): Boolean {
// return System.currentTimeMillis() - interLoadTime > 1000 * 60 * 60
// }
//
//
// private fun showAdDialogAndLoadInterstitial(
// activity: Activity,
// ): Dialog? {
// var customDialog: Dialog? = null
// if (!activity.isFinishing && !activity.isDestroyed) {
// customDialog = CustomDialog(activity, R.layout.dialog_ad_loading)
// // 设置对话框的样式和内容
// customDialog.show()
// }
// return customDialog
// }
//
// fun loadInterstitialAd(activity: Activity): Boolean {
// setListener(activity)
//
// if (!AdDisplayUtils.getInstance().shouldShowAd("interAd")) {
// return false
// }
//
// LogEx.logDebug(TAG, "loadInterstitialAd")
// val reqId = UUID.randomUUID().toString()
// val obj = JSONObject()
// obj.put("req_id", reqId)
// obj.put("ad_type", "interAd")
// EventUtils.event("ad_pull_start", ext = obj)
// interstitialAd?.loadAd()
// AdDisplayUtils.getInstance().incrementAdRequestCount()
// return true
// }
//
//
//}
\ No newline at end of file
package com.base.filerecoveryrecyclebin.ads.max
import android.app.Activity
import android.content.Context
import android.view.ViewGroup
import androidx.core.view.isVisible
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxError
import com.applovin.mediation.nativeAds.MaxNativeAdListener
import com.applovin.mediation.nativeAds.MaxNativeAdLoader
import com.applovin.mediation.nativeAds.MaxNativeAdView
import com.applovin.mediation.nativeAds.MaxNativeAdViewBinder
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.help.BaseApplication
import com.base.filerecoveryrecyclebin.help.ConfigHelper
import com.base.filerecoveryrecyclebin.utils.EventUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import org.json.JSONObject
object AdMaxNativeUtils {
private val TAG = "AdMaxNativeUtils"
private var nativeAdLoader: MaxNativeAdLoader = MaxNativeAdLoader(ConfigHelper.nativeAdMaxId, BaseApplication.context)
private var nativeAd: MaxAd? = null
private var nativeLoadTime = Long.MAX_VALUE
private var haveSetAdListener: Boolean = false
private var loadingListener: (() -> Unit)? = null
private var activityString: String = ""
private fun setNativeAdListener() {
if (!haveSetAdListener) {
//加载展示监听
nativeAdLoader.setNativeAdListener(object : MaxNativeAdListener() {
override fun onNativeAdLoaded(nativeAdView: MaxNativeAdView?, ad: MaxAd) {
LogEx.logDebug(TAG, "onNativeAdLoaded")
// Cleanup any pre-existing native ad to prevent memory leaks.
if (nativeAd?.nativeAd?.isExpired == true) {
nativeAdLoader.destroy(nativeAd)
}
// Save ad to be rendered later.
nativeAd = ad
nativeLoadTime = System.currentTimeMillis()
loadingListener?.invoke()
loadingListener = null
}
override fun onNativeAdLoadFailed(p0: String, p1: MaxError) {
super.onNativeAdLoadFailed(p0, p1)
loadingListener?.invoke()
loadingListener = null
LogEx.logDebug(TAG, "onNativeAdLoadFailed")
LogEx.logDebug(TAG, "code=${p1.code}")
LogEx.logDebug(TAG, "message=${p1.message}")
// AdDisplayUtils.getInstance().incrementAdRequestFailCount()
val obj2 = JSONObject()
obj2.put("reason", "no_ad")
obj2.put("ad_unit", "nativeAd")
EventUtils.event("ad_show_error", ext = obj2)
}
override fun onNativeAdClicked(p0: MaxAd) {
super.onNativeAdClicked(p0)
LogEx.logDebug(TAG, "onNativeAdClicked")
// AdDisplayUtils.getInstance().incrementAdClickCount()
nativeAd?.let { AdMaxEvent.clickAd(it, "nativeAd") }
}
override fun onNativeAdExpired(p0: MaxAd) {
super.onNativeAdExpired(p0)
}
})
//广告价格监听
nativeAdLoader.setRevenueListener { ad ->
}
haveSetAdListener = true
}
}
private fun createNativeAdView(context: Context, layout: Int): MaxNativeAdView {
// val binder: MaxNativeAdViewBinder = MaxNativeAdViewBinder.Builder(R.layout.layout_max_native_custom)
// .setTitleTextViewId(R.id.title_text_view)
// .setBodyTextViewId(R.id.body_text_view)
// .setAdvertiserTextViewId(R.id.advertiser_text_view)
// .setIconImageViewId(R.id.icon_image_view)
// .setMediaContentViewGroupId(R.id.media_view_container)
// .setOptionsContentViewGroupId(R.id.options_view)
// .setStarRatingContentViewGroupId(R.id.star_rating_view)
// .setCallToActionButtonId(R.id.cta_button)
//package com.base.filerecoveryrecyclebin.ads.max
//
//import android.app.Activity
//import android.content.Context
//import android.view.ViewGroup
//import androidx.core.view.isVisible
//import com.applovin.mediation.MaxAd
//import com.applovin.mediation.MaxError
//import com.applovin.mediation.nativeAds.MaxNativeAdListener
//import com.applovin.mediation.nativeAds.MaxNativeAdLoader
//import com.applovin.mediation.nativeAds.MaxNativeAdView
//import com.applovin.mediation.nativeAds.MaxNativeAdViewBinder
//import com.base.filerecoveryrecyclebin.R
//import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
//import com.base.filerecoveryrecyclebin.help.BaseApplication
//import com.base.filerecoveryrecyclebin.help.ConfigHelper
//import com.base.filerecoveryrecyclebin.utils.EventUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import org.json.JSONObject
//
//object AdMaxNativeUtils {
//
// private val TAG = "AdMaxNativeUtils"
// private var nativeAdLoader: MaxNativeAdLoader = MaxNativeAdLoader(ConfigHelper.nativeAdMaxId, BaseApplication.context)
// private var nativeAd: MaxAd? = null
// private var nativeLoadTime = Long.MAX_VALUE
// private var haveSetAdListener: Boolean = false
// private var loadingListener: (() -> Unit)? = null
// private var activityString: String = ""
// private fun setNativeAdListener() {
// if (!haveSetAdListener) {
// //加载展示监听
// nativeAdLoader.setNativeAdListener(object : MaxNativeAdListener() {
// override fun onNativeAdLoaded(nativeAdView: MaxNativeAdView?, ad: MaxAd) {
// LogEx.logDebug(TAG, "onNativeAdLoaded")
// // Cleanup any pre-existing native ad to prevent memory leaks.
// if (nativeAd?.nativeAd?.isExpired == true) {
// nativeAdLoader.destroy(nativeAd)
// }
//
// // Save ad to be rendered later.
// nativeAd = ad
// nativeLoadTime = System.currentTimeMillis()
// loadingListener?.invoke()
// loadingListener = null
// }
//
// override fun onNativeAdLoadFailed(p0: String, p1: MaxError) {
// super.onNativeAdLoadFailed(p0, p1)
// loadingListener?.invoke()
// loadingListener = null
// LogEx.logDebug(TAG, "onNativeAdLoadFailed")
// LogEx.logDebug(TAG, "code=${p1.code}")
// LogEx.logDebug(TAG, "message=${p1.message}")
//// AdDisplayUtils.getInstance().incrementAdRequestFailCount()
// val obj2 = JSONObject()
// obj2.put("reason", "no_ad")
// obj2.put("ad_unit", "nativeAd")
// EventUtils.event("ad_show_error", ext = obj2)
// }
//
// override fun onNativeAdClicked(p0: MaxAd) {
// super.onNativeAdClicked(p0)
// LogEx.logDebug(TAG, "onNativeAdClicked")
//// AdDisplayUtils.getInstance().incrementAdClickCount()
// nativeAd?.let { AdMaxEvent.clickAd(it, "nativeAd") }
// }
//
// override fun onNativeAdExpired(p0: MaxAd) {
// super.onNativeAdExpired(p0)
// }
// })
//
//
// //广告价格监听
// nativeAdLoader.setRevenueListener { ad ->
//
// }
//
//
// haveSetAdListener = true
//
//
// }
// }
//
// private fun createNativeAdView(context: Context, layout: Int): MaxNativeAdView {
//
//// val binder: MaxNativeAdViewBinder = MaxNativeAdViewBinder.Builder(R.layout.layout_max_native_custom)
//// .setTitleTextViewId(R.id.title_text_view)
//// .setBodyTextViewId(R.id.body_text_view)
//// .setAdvertiserTextViewId(R.id.advertiser_text_view)
//// .setIconImageViewId(R.id.icon_image_view)
//// .setMediaContentViewGroupId(R.id.media_view_container)
//// .setOptionsContentViewGroupId(R.id.options_view)
//// .setStarRatingContentViewGroupId(R.id.star_rating_view)
//// .setCallToActionButtonId(R.id.cta_button)
//// .build()
//// return MaxNativeAdView(binder, context)
//
// val binder: MaxNativeAdViewBinder = MaxNativeAdViewBinder.Builder(layout)
// .setTitleTextViewId(R.id.ad_headline)
// .setBodyTextViewId(R.id.ad_body)
//// .setAdvertiserTextViewId(R.id.advertiser_text_view)
// .setIconImageViewId(R.id.ad_app_icon)
// .setMediaContentViewGroupId(R.id.ad_media)
//// .setOptionsContentViewGroupId(R.id.options_view)
//// .setStarRatingContentViewGroupId(R.id.star_rating_view)
// .setCallToActionButtonId(R.id.ad_call_to_action)
// .build()
// return MaxNativeAdView(binder, context)
val binder: MaxNativeAdViewBinder = MaxNativeAdViewBinder.Builder(layout)
.setTitleTextViewId(R.id.ad_headline)
.setBodyTextViewId(R.id.ad_body)
// .setAdvertiserTextViewId(R.id.advertiser_text_view)
.setIconImageViewId(R.id.ad_app_icon)
.setMediaContentViewGroupId(R.id.ad_media)
// .setOptionsContentViewGroupId(R.id.options_view)
// .setStarRatingContentViewGroupId(R.id.star_rating_view)
.setCallToActionButtonId(R.id.ad_call_to_action)
.build()
return MaxNativeAdView(binder, context)
}
fun loadNativeAd() {
setNativeAdListener()
if (!AdDisplayUtils.getInstance().shouldShowAd("nativeAd")) {
return
}
nativeAdLoader.loadAd()
}
fun showNativeAd(activity: Activity, parent: ViewGroup, layout: Int) {
activityString = activity::class.java.toString().split(".").last()
LogEx.logDebug(TAG, "activityString=$activityString")
setNativeAdListener()
if (!AdDisplayUtils.getInstance().shouldShowAd("nativeAd")) {
LogEx.logDebug(TAG, "!shouldShowAd")
return
}
if (nativeAd?.nativeAd?.isExpired == true || nativeAd == null) {
LogEx.logDebug(TAG, "nativeAd?.nativeAd?.isExpired == true")
nativeAdLoader.destroy(nativeAd)
nativeAdLoader.loadAd()
loadingListener = {
if (nativeAd != null) {
showReadyNative(activity, parent, layout)
}
}
} else {
showReadyNative(activity, parent, layout)
}
}
private fun showReadyNative(activity: Activity, parent: ViewGroup, layout: Int) {
val adView = createNativeAdView(activity, layout)
LogEx.logDebug(TAG, "showReadNative adUnitId=${nativeAd?.adUnitId}")
parent.isVisible = true
parent.removeAllViews()
nativeAdLoader.render(adView, nativeAd)
parent.addView(adView)
nativeAd?.let { AdMaxEvent.showAd(it, "nativeAd", activityString) }
// AdDisplayUtils.getInstance().incrementAdDisplayCount()
LogEx.logDebug(TAG, "loadingListener finish")
}
}
\ No newline at end of file
// }
//
// fun loadNativeAd() {
// setNativeAdListener()
// if (!AdDisplayUtils.getInstance().shouldShowAd("nativeAd")) {
// return
// }
// nativeAdLoader.loadAd()
// }
//
//
// fun showNativeAd(activity: Activity, parent: ViewGroup, layout: Int) {
// activityString = activity::class.java.toString().split(".").last()
// LogEx.logDebug(TAG, "activityString=$activityString")
// setNativeAdListener()
//
// if (!AdDisplayUtils.getInstance().shouldShowAd("nativeAd")) {
// LogEx.logDebug(TAG, "!shouldShowAd")
// return
// }
//
// if (nativeAd?.nativeAd?.isExpired == true || nativeAd == null) {
// LogEx.logDebug(TAG, "nativeAd?.nativeAd?.isExpired == true")
// nativeAdLoader.destroy(nativeAd)
// nativeAdLoader.loadAd()
// loadingListener = {
// if (nativeAd != null) {
// showReadyNative(activity, parent, layout)
// }
// }
// } else {
// showReadyNative(activity, parent, layout)
// }
//
// }
//
// private fun showReadyNative(activity: Activity, parent: ViewGroup, layout: Int) {
// val adView = createNativeAdView(activity, layout)
//
// LogEx.logDebug(TAG, "showReadNative adUnitId=${nativeAd?.adUnitId}")
// parent.isVisible = true
// parent.removeAllViews()
// nativeAdLoader.render(adView, nativeAd)
// parent.addView(adView)
// nativeAd?.let { AdMaxEvent.showAd(it, "nativeAd", activityString) }
//// AdDisplayUtils.getInstance().incrementAdDisplayCount()
//
// LogEx.logDebug(TAG, "loadingListener finish")
// }
//
//}
\ No newline at end of file
package com.base.filerecoveryrecyclebin.ads.max
import android.app.Activity
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.base.filerecoveryrecyclebin.MyApplication.Companion.isInterOpenShowing
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.isAdInit
import com.base.filerecoveryrecyclebin.help.ConfigHelper
import com.base.filerecoveryrecyclebin.utils.EventUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import org.json.JSONObject
import java.util.UUID
object AdMaxOpenUtils {
private val TAG = "AdMaxOpenUtils"
private var appOpenAd: MaxAppOpenAd? = null
private var openLoadTime = Long.MAX_VALUE
private var onHidden: (() -> Unit)? = null
private var loadingListener: ((flag: Boolean) -> Unit)? = null
private var activityString = ""
private fun setListener(activity: Activity) {
activityString = activity::class.java.toString().split(".").last()
if (appOpenAd == null) {
appOpenAd = MaxAppOpenAd(ConfigHelper.openAdMaxId, activity)
appOpenAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
LogEx.logDebug(TAG, "广告拉取成功")
openLoadTime = System.currentTimeMillis()
loadingListener?.invoke(true)
loadingListener = null
AdMaxEvent.pullAd(p0, "openAd")
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p0)
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.message.toString())
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.code)
loadingListener?.invoke(false)
loadingListener = null
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
val reqId = UUID.randomUUID().toString()
AdMaxEvent.pullAd(null, "openAd", reqId = reqId, error = p1.message, code = p1.code)
}
override fun onAdDisplayed(p0: MaxAd) {
AdDisplayUtils.getInstance().incrementAdDisplayCount()
AdMaxEvent.showAd(p0, "openAd", activityString)
isInterOpenShowing = true
}
override fun onAdHidden(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdHidden")
onHidden?.invoke()
onHidden = null
loadAppOpenAd(activity)
isInterOpenShowing = false
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
LogEx.logDebug(TAG, "onAdDisplayFailed")
onHidden?.invoke()
onHidden = null
loadAppOpenAd(activity)
val obj = JSONObject()
obj.put("code", p1.code)
obj.put("reason", p1.message)
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
isInterOpenShowing = false
}
override fun onAdClicked(p0: MaxAd) {
AdDisplayUtils.getInstance().incrementAdClickCount()
AdMaxEvent.clickAd(p0, "openAd")
}
})
appOpenAd?.setRevenueListener(AdMaxEvent.EventOnPaidEventListener())
}
}
fun showAppOpenAd(
activity: Activity,
loadCallBack: ((loaded: Boolean) -> Unit)? = null,
onHidden: (() -> Unit)? = null
) {
setListener(activity)
if (activity.isFinishing || activity.isDestroyed) {
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
LogEx.logDebug(TAG, "!shouldShowAd")
onHidden?.invoke()
return
}
if (System.currentTimeMillis() - openLoadTime > 1000 * 60 * 60) {
LogEx.logDebug(TAG, "openLoadTime > ")
onHidden?.invoke()
val obj2 = JSONObject()
obj2.put("ad_unit", "openAd")
EventUtils.event("ad_expire", ext = obj2)
appOpenAd?.loadAd()
}
LogEx.logDebug(TAG, "showAppOpenAd")
val obj1 = JSONObject()
obj1.put("ad_unit", "openAd")
EventUtils.event("ad_prepare_show", ext = obj1)
isInterOpenShowing = false
if (appOpenAd?.isReady == true) {
LogEx.logDebug(TAG, "广告准备好了,展示广告")
AdMaxOpenUtils.onHidden = onHidden
appOpenAd?.showAd()
} else {
val obj = JSONObject()
obj.put("reason", "no cache ad")
obj.put("ad_unit", "openAd")
EventUtils.event("ad_nocache_pull", ext = obj)
LogEx.logDebug(TAG, "展示时候,发现广告需要拉取")
val loaded = loadAppOpenAd(activity)
if (loaded) {
loadingListener = { loadResult ->
loadCallBack?.invoke(loadResult)
LogEx.logDebug(TAG, "loadingListener callback")
if (appOpenAd?.isReady == true) {
AdMaxOpenUtils.onHidden = onHidden
appOpenAd?.showAd()
} else {
onHidden?.invoke()
}
}
} else {
onHidden?.invoke()
}
}
}
fun loadAppOpenAd(activity: Activity): Boolean {
setListener(activity)
if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
LogEx.logDebug(TAG, "!shouldShowAd")
return false
}
val reqId = UUID.randomUUID().toString()
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "openAd")
EventUtils.event("ad_pull_start", ext = obj)
appOpenAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
return true
}
fun isOpenAdLoaded(): Boolean {
return appOpenAd?.isReady == true
}
}
//package com.base.filerecoveryrecyclebin.ads.max
//
//import android.app.Activity
//import com.applovin.mediation.MaxAd
//import com.applovin.mediation.MaxAdListener
//import com.applovin.mediation.MaxError
//import com.applovin.mediation.ads.MaxAppOpenAd
//import com.base.filerecoveryrecyclebin.MyApplication.Companion.isInterOpenShowing
//import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.isAdInit
//import com.base.filerecoveryrecyclebin.help.ConfigHelper
//import com.base.filerecoveryrecyclebin.utils.EventUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import org.json.JSONObject
//import java.util.UUID
//
//object AdMaxOpenUtils {
// private val TAG = "AdMaxOpenUtils"
// private var appOpenAd: MaxAppOpenAd? = null
// private var openLoadTime = Long.MAX_VALUE
// private var onHidden: (() -> Unit)? = null
// private var loadingListener: ((flag: Boolean) -> Unit)? = null
// private var activityString = ""
//
// private fun setListener(activity: Activity) {
// activityString = activity::class.java.toString().split(".").last()
// if (appOpenAd == null) {
// appOpenAd = MaxAppOpenAd(ConfigHelper.openAdMaxId, activity)
//
// appOpenAd?.setListener(object : MaxAdListener {
// override fun onAdLoaded(p0: MaxAd) {
// LogEx.logDebug(TAG, "广告拉取成功")
// openLoadTime = System.currentTimeMillis()
// loadingListener?.invoke(true)
// loadingListener = null
// AdMaxEvent.pullAd(p0, "openAd")
// }
//
// override fun onAdLoadFailed(p0: String, p1: MaxError) {
// LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p0)
// LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.message.toString())
// LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.code)
// loadingListener?.invoke(false)
// loadingListener = null
// AdDisplayUtils.getInstance().incrementAdRequestFailCount()
// val reqId = UUID.randomUUID().toString()
// AdMaxEvent.pullAd(null, "openAd", reqId = reqId, error = p1.message, code = p1.code)
// }
//
// override fun onAdDisplayed(p0: MaxAd) {
// AdDisplayUtils.getInstance().incrementAdDisplayCount()
// AdMaxEvent.showAd(p0, "openAd", activityString)
//
// isInterOpenShowing = true
// }
//
// override fun onAdHidden(p0: MaxAd) {
// LogEx.logDebug(TAG, "onAdHidden")
// onHidden?.invoke()
// onHidden = null
// loadAppOpenAd(activity)
//
// isInterOpenShowing = false
// }
//
// override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
// LogEx.logDebug(TAG, "onAdDisplayFailed")
// onHidden?.invoke()
// onHidden = null
// loadAppOpenAd(activity)
// val obj = JSONObject()
// obj.put("code", p1.code)
// obj.put("reason", p1.message)
// obj.put("ad_unit", "openAd")
// EventUtils.event("ad_show_error", ext = obj)
//
// isInterOpenShowing = false
// }
//
// override fun onAdClicked(p0: MaxAd) {
// AdDisplayUtils.getInstance().incrementAdClickCount()
// AdMaxEvent.clickAd(p0, "openAd")
// }
//
// })
//
// appOpenAd?.setRevenueListener(AdMaxEvent.EventOnPaidEventListener())
// }
// }
//
// fun showAppOpenAd(
// activity: Activity,
// loadCallBack: ((loaded: Boolean) -> Unit)? = null,
// onHidden: (() -> Unit)? = null
// ) {
//
// setListener(activity)
//
// if (activity.isFinishing || activity.isDestroyed) {
// return
// }
//
// if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
// LogEx.logDebug(TAG, "!shouldShowAd")
// onHidden?.invoke()
// return
// }
//
// if (System.currentTimeMillis() - openLoadTime > 1000 * 60 * 60) {
// LogEx.logDebug(TAG, "openLoadTime > ")
// onHidden?.invoke()
// val obj2 = JSONObject()
// obj2.put("ad_unit", "openAd")
// EventUtils.event("ad_expire", ext = obj2)
// appOpenAd?.loadAd()
// }
//
//
//
// LogEx.logDebug(TAG, "showAppOpenAd")
// val obj1 = JSONObject()
// obj1.put("ad_unit", "openAd")
// EventUtils.event("ad_prepare_show", ext = obj1)
//
// isInterOpenShowing = false
//
// if (appOpenAd?.isReady == true) {
// LogEx.logDebug(TAG, "广告准备好了,展示广告")
// AdMaxOpenUtils.onHidden = onHidden
// appOpenAd?.showAd()
// } else {
// val obj = JSONObject()
// obj.put("reason", "no cache ad")
// obj.put("ad_unit", "openAd")
// EventUtils.event("ad_nocache_pull", ext = obj)
// LogEx.logDebug(TAG, "展示时候,发现广告需要拉取")
// val loaded = loadAppOpenAd(activity)
// if (loaded) {
// loadingListener = { loadResult ->
// loadCallBack?.invoke(loadResult)
// LogEx.logDebug(TAG, "loadingListener callback")
// if (appOpenAd?.isReady == true) {
// AdMaxOpenUtils.onHidden = onHidden
// appOpenAd?.showAd()
// } else {
// onHidden?.invoke()
// }
// }
// } else {
// onHidden?.invoke()
// }
//
// }
// }
//
// fun loadAppOpenAd(activity: Activity): Boolean {
// setListener(activity)
//
// if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
// LogEx.logDebug(TAG, "!shouldShowAd")
// return false
// }
//
// val reqId = UUID.randomUUID().toString()
// val obj = JSONObject()
// obj.put("req_id", reqId)
// obj.put("ad_type", "openAd")
// EventUtils.event("ad_pull_start", ext = obj)
// appOpenAd?.loadAd()
// AdDisplayUtils.getInstance().incrementAdRequestCount()
// return true
// }
//
// fun isOpenAdLoaded(): Boolean {
// return appOpenAd?.isReady == true
// }
//
//}
//
......@@ -104,7 +104,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:backgroundTint="@color/applovin_sdk_brand_color"
android:textColor="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ad_media"
......
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