Commit 145e98e1 authored by wanglei's avatar wanglei

...ad

parent 63c7a50f
......@@ -87,10 +87,18 @@ 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: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'
// 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.mediation:google-ad-manager-adapter:+'
implementation 'com.applovin.mediation:facebook-adapter:+'
implementation 'com.applovin.mediation:mintegral-adapter:+'
implementation 'com.applovin.mediation:bytedance-adapter:+'
implementation 'com.applovin.mediation:ironsource-adapter:+'
//Google UMP
//https://docs.tradplusad.com/docs/tradplussdk_android_doc_v6/privacy_policy/google_ump/
......
......@@ -6,6 +6,7 @@ import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import com.base.filerecoveryrecyclebin.activity.SplashActivity
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobOpenUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxInit.initAdMax
import com.base.filerecoveryrecyclebin.bean.ConstObject.ifAgreePrivacy
......@@ -74,12 +75,7 @@ class MyApplication : BaseApplication() {
InstallHelps.init()
if (ifAgreePrivacy) {
if (ConfigHelper.admobTrueMaxFlase) {
MobileAds.initialize(this) { initializationStatus ->
}
} else {
initAdMax()
}
AdmobMaxHelper.initAdmobMaxAd()
MainScope().launch(Dispatchers.Main) {
......
......@@ -5,6 +5,7 @@ import android.content.Intent
import android.graphics.Color
import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding
import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyPinOneActivity
import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacySpaceActivity
import com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
......
......@@ -10,6 +10,7 @@ import android.text.style.UnderlineSpan
import android.view.View
import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.MyApplication
import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyPinOneActivity
import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacySpaceActivity
import com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
......@@ -18,6 +19,7 @@ import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotActivity
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxInit
import com.base.filerecoveryrecyclebin.ads.max.AdMaxInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxOpenUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject
......@@ -107,8 +109,10 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
AdmobNativeUtils.loadNativeAd()
AdmobInterstitialUtils.loadInterstitialAd(this)
} else {
AdMaxOpenUtils.loadAppOpenAd(this)
AdMaxInterstitialUtils.loadInterstitialAd(this)
AdMaxInit.maxInitAction = {
AdMaxOpenUtils.loadAppOpenAd(this)
AdMaxInterstitialUtils.loadInterstitialAd(this)
}
}
}
......
......@@ -10,6 +10,7 @@ import android.widget.Toast
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.admobMaxShowInterstitialAd
import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutScanJunkBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
......
package com.base.filerecoveryrecyclebin.ads;
import android.content.SharedPreferences;
import android.util.Log;
import com.base.filerecoveryrecyclebin.BuildConfig;
import com.base.filerecoveryrecyclebin.help.BaseApplication;
import com.base.filerecoveryrecyclebin.utils.EventUtils;
import com.base.filerecoveryrecyclebin.utils.LogEx;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Calendar;
......@@ -63,8 +70,23 @@ public class AdDisplayUtils {
return adClickCount < getMaxAdClickCount();
}
public boolean shouldShowAd() {
return shouldDisplayAd() && shouldIncrementClickCount() && shouldIncrementRequestFailAd();
public boolean shouldShowAd(String ad_unit) {
if (BuildConfig.DEBUG) {
return true;
}
boolean s = shouldDisplayAd() && shouldIncrementClickCount() && shouldIncrementRequestFailAd();
if (!s) {
LogEx.INSTANCE.logDebug("glc", "!shouldShowAd", false);
JSONObject obj2 = new JSONObject();
try {
obj2.put("reason", "ad limit");
obj2.put("ad_unit", ad_unit);
EventUtils.INSTANCE.event("ad_show_error", null, obj2, false);
} catch (JSONException e) {
}
}
return s;
}
public void incrementAdDisplayCount() {
......
......@@ -6,13 +6,40 @@ 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.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.help.ConfigHelper
import com.google.android.gms.ads.MobileAds
import java.util.concurrent.atomic.AtomicBoolean
object AdmobMaxHelper {
private val TAG = "AdmobMaxHelper"
var isAdInit = AtomicBoolean(false)
fun initAdmobMaxAd() {
if (ConfigHelper.admobTrueMaxFlase) {
if (!isAdInit.get()) {
MobileAds.initialize(BaseApplication.context) { initializationStatus ->
isAdInit.set(true)
}
}
} else {
if (!isAdInit.get()) {
BaseApplication.context.initAdMax()
}
}
}
fun isOpenAdLoaded(): Boolean {
return if (ConfigHelper.admobTrueMaxFlase) {
AdmobOpenUtils.isOpenAdLoaded()
} else {
AdMaxOpenUtils.isOpenAdLoaded()
}
}
fun admobMaxShowInterstitialAd(activity: Activity, onHidden: (() -> Unit)? = null) {
if (ConfigHelper.admobTrueMaxFlase) {
......
package com.base.filerecoveryrecyclebin.ads
package com.base.filerecoveryrecyclebin.ads.admob
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.utils.ActivityManagerUtils
object AdmobCommonUtils {
......
......@@ -8,7 +8,7 @@ import android.widget.Toast
import com.base.filerecoveryrecyclebin.BuildConfig
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobCommonUtils.isMultiClick
import com.base.filerecoveryrecyclebin.ads.admob.AdmobCommonUtils.isMultiClick
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.clickAd
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.pullAd
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.showAd
......@@ -70,7 +70,7 @@ object AdmobInterstitialUtils {
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("interAd")) {
onHidden?.invoke()
return
}
......@@ -87,7 +87,7 @@ object AdmobInterstitialUtils {
onLoad?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("")) {
onLoad?.invoke()
return
}
......
......@@ -5,7 +5,7 @@ import android.view.ViewGroup
import androidx.core.view.isVisible
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobCommonUtils.isMultiClick
import com.base.filerecoveryrecyclebin.ads.admob.AdmobCommonUtils.isMultiClick
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.clickAd
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.pullAd
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.showAd
......
......@@ -2,7 +2,7 @@ package com.base.filerecoveryrecyclebin.ads.admob
import android.app.Activity
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobCommonUtils.isMultiClick
import com.base.filerecoveryrecyclebin.ads.admob.AdmobCommonUtils.isMultiClick
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.clickAd
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.pullAd
import com.base.filerecoveryrecyclebin.ads.admob.AdmobEvent.showAd
......@@ -32,7 +32,7 @@ object AdmobOpenUtils {
onLoad?.invoke(1)
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
onLoad?.invoke(2)
return
}
......@@ -69,7 +69,7 @@ object AdmobOpenUtils {
if (activity.isFinishing || activity.isDestroyed) {
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
onHidden?.invoke(1)
return
}
......
package com.base.datarecovery.ads.max
package com.base.filerecoveryrecyclebin.ads.max
import android.app.Activity
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.google.firebase.analytics.FirebaseAnalytics
import org.json.JSONObject
object AdMaxEvent {
fun pullAd(ad: MaxAd?, adUnit: String, error: String? = null, reqId: String? = null) {
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)
......@@ -50,15 +50,15 @@ object AdMaxEvent {
obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
if(!adUnit.equals("nativeAd")){
if (!adUnit.equals("nativeAd")) {
EventUtils.event("ad_click", ext = obj)
}else{
} else {
EventUtils.event("big_imgad_click", ext = obj)
}
}
fun showAd(ad: MaxAd?, adUnit: String) {
fun showAd(ad: MaxAd?, adUnit: String, activity: String?) {
val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit)
......@@ -71,9 +71,12 @@ object AdMaxEvent {
obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
if(!adUnit.equals("nativeAd")){
obj.put("from", activity)
obj.put("mediation", "applovin")
LogEx.logDebug("glc", "from: $activity")
if (adUnit != "nativeAd") {
EventUtils.event("ad_show", ext = obj)
}else{
} else {
EventUtils.event("big_img_show", ext = obj)
}
......
......@@ -3,6 +3,7 @@ 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.LogEx
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import java.util.Collections
......@@ -12,7 +13,6 @@ import java.util.concurrent.atomic.AtomicBoolean
object AdMaxInit {
private val TAG = "AdMaxInit"
var isAdMaxInit = AtomicBoolean(false)
var maxInitAction: (() -> Unit)? = null
fun Context.initAdMax() {
......@@ -35,7 +35,7 @@ object AdMaxInit {
val sdk = AppLovinSdk.getInstance(this)
sdk.initialize(initConfigBuilder.build()) {
LogEx.logDebug(TAG, "max init")
isAdMaxInit.set(true)
isAdInit.set(true)
maxInitAction?.invoke()
}
......
......@@ -6,9 +6,9 @@ import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxInterstitialAd
import com.base.datarecovery.ads.max.AdMaxEvent
import com.base.filerecoveryrecyclebin.R
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
......@@ -28,53 +28,57 @@ object AdMaxInterstitialUtils {
@SuppressLint("StaticFieldLeak")
private var customDialog: CustomDialog? = null
private var activityString: String = ""
private fun setListener(activity: Activity) {
activityString = activity::class.java.toString().split(".").last()
if (interstitialAd == null) {
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 = MaxInterstitialAd(ConfigHelper.interAdMaxId, activity)
interstitialAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdLoaded")
loadingListener?.invoke()
loadingListener = null
interLoadTime = System.currentTimeMillis()
retryAttempt = 0
val reqId = UUID.randomUUID().toString()
AdMaxEvent.pullAd(p0, "interAd", reqId = reqId)
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
LogEx.logDebug(TAG, "onAdLoadFailed")
AdMaxEvent.pullAd(null, "interAd", reqId = reqId)
val reqId = UUID.randomUUID().toString()
AdMaxEvent.pullAd(null, "interAd", reqId = reqId, error = p1.message, code = p1.code)
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
retryAttempt++
LogEx.logDebug(TAG, "onAdLoadFailed retryAttempt=$retryAttempt")
if (retryAttempt == 1) {
customDialog?.dismiss()
onHidden?.invoke()
onHidden = null
retryAttempt = 0
} else {
// interstitialAd?.loadAd()
}
}
override fun onAdDisplayed(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdDisplayed")
AdDisplayUtils.getInstance().incrementAdDisplayCount()
AdMaxEvent.showAd(p0, "interAd")
AdMaxEvent.showAd(p0, "interAd", activityString)
}
override fun onAdHidden(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdHidden")
onHidden?.invoke()
interstitialAd?.loadAd()
onHidden = null
AdMaxOpenUtils.loadAppOpenAd(activity)
loadInterstitialAd(activity)
}
override fun onAdClicked(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdClicked")
LogEx.logDebug(TAG, "onAdClicked activity=$activityString")
AdDisplayUtils.getInstance().incrementAdClickCount()
AdMaxEvent.clickAd(p0, "interAd")
}
......@@ -85,7 +89,7 @@ object AdMaxInterstitialUtils {
val obj2 = JSONObject()
obj2.put("code", p1.code)
obj2.put("reason", p1.message)
obj2.put("ad_unit", "openAd")
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_show_error", ext = obj2)
}
})
......@@ -93,41 +97,45 @@ object AdMaxInterstitialUtils {
}
}
fun showInterstitialAd(
activity: Activity,
onHidden: (() -> Unit)? = null
) {
fun showInterstitialAd(activity: Activity, onHidden: (() -> Unit)? = null) {
setListener(activity)
if (activity.isFinishing || activity.isDestroyed) {
return
}
val obj1 = JSONObject()
obj1.put("ad_unit", "interAd")
EventUtils.event("ad_prepare_show", ext = obj1)
if (isAdExpired()) {
val obj2 = JSONObject()
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_expire", ext = obj2)
interstitialAd?.loadAd()
loadInterstitialAd(activity)
onHidden?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("interAd")) {
onHidden?.invoke()
return
}
AdMaxInterstitialUtils.onHidden = onHidden
LogEx.logDebug(TAG, "showInterstitialAd,展示插屏广告")
val obj1 = JSONObject()
obj1.put("ad_unit", "interAd")
EventUtils.event("ad_prepare_show", ext = obj1)
AdMaxInterstitialUtils.onHidden = onHidden
if (interstitialAd?.isReady == true) {
LogEx.logDebug(TAG, "isReady=true")
interstitialAd?.showAd()
LogEx.logDebug(TAG, "有缓存直接播放。")
interstitialAd?.showAd(activity)
} else {
interstitialAd?.loadAd()
LogEx.logDebug(TAG, "展示广告时,没有缓存,需要拉取。")
val obj2 = JSONObject()
obj2.put("reason", "no ad")
obj2.put("ad_unit", "interAd")
EventUtils.event("ad_show_error", ext = obj2)
loadInterstitialAd(activity)
LogEx.logDebug(TAG, "isReady=false")
showAdDialogAndLoadInterstitial(activity)
}
......@@ -149,8 +157,7 @@ object AdMaxInterstitialUtils {
}
loadingListener = {
customDialog?.dismiss()
interstitialAd?.showAd()
loadingListener = null
interstitialAd?.showAd(activity)
}
}
......@@ -158,15 +165,19 @@ object AdMaxInterstitialUtils {
fun loadInterstitialAd(activity: Activity) {
setListener(activity)
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
LogEx.logDebug(TAG, "!shouldShowAd")
if (!AdDisplayUtils.getInstance().shouldShowAd("interAd")) {
return
}
if (interstitialAd?.isReady == true) {
return
}
if (AdMaxInit.isAdMaxInit.get()) {
if (isAdInit.get()) {
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()
}
}
......
......@@ -10,10 +10,9 @@ 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.datarecovery.ads.max.AdMaxEvent
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobCommonUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobCommonUtils
import com.base.filerecoveryrecyclebin.help.BaseApplication
import com.base.filerecoveryrecyclebin.help.ConfigHelper
import com.base.filerecoveryrecyclebin.utils.EventUtils
......@@ -28,6 +27,7 @@ object AdMaxNativeUtils {
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) {
//加载展示监听
......@@ -109,14 +109,10 @@ object AdMaxNativeUtils {
}
fun showNativeAd(activity: Activity, parent: ViewGroup, layout: Int ) {
fun showNativeAd(activity: Activity, parent: ViewGroup, layout: Int) {
activityString = activity::class.java.toString().split(".").last()
setNativeAdListener()
val obj = JSONObject()
obj.put("ad_unit", "NativeAd")
EventUtils.event("ad_prepare_show", ext = obj)
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("nativeAd")) {
return
}
loadingListener = {
......@@ -133,7 +129,7 @@ object AdMaxNativeUtils {
nativeAdLoader.render(adView, nativeAd)
parent.removeAllViews()
parent.addView(adView)
nativeAd?.let { AdMaxEvent.showAd(it, "nativeAd") }
nativeAd?.let { AdMaxEvent.showAd(it, "nativeAd", activityString) }
AdDisplayUtils.getInstance().incrementAdDisplayCount()
}
}
......
package com.base.filerecoveryrecyclebin.ads.max
import android.app.Activity
import android.content.Context
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.base.datarecovery.ads.max.AdMaxEvent
import com.base.filerecoveryrecyclebin.ads.AdDisplayUtils
import com.base.filerecoveryrecyclebin.ads.AdmobCommonUtils
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobCommonUtils
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 val TAG = "dMaxOpenUtils"
private var appOpenAd: MaxAppOpenAd? = null
private var openLoadTime = Long.MAX_VALUE
private var onHidden: (() -> Unit)? = null
private var loadingListener: (() -> Unit)? = null
private var activityString = ""
private fun setListener(context: Context) {
private fun setListener(activity: Activity) {
activityString = activity::class.java.toString().split(".").last()
if (appOpenAd == null) {
appOpenAd = MaxAppOpenAd(ConfigHelper.openAdMaxId, context)
appOpenAd = MaxAppOpenAd(ConfigHelper.openAdMaxId, activity)
appOpenAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdLoaded")
LogEx.logDebug(TAG, "广告拉取成功")
openLoadTime = System.currentTimeMillis()
loadingListener?.invoke()
loadingListener =null
AdMaxEvent.pullAd(p0, "openAd")
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
LogEx.logDebug(TAG, "onAdLoadFailed:" + p1.message.toString())
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.message.toString())
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p0)
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.code)
loadingListener = null
onHidden?.invoke()
onHidden = null
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
AdMaxEvent.pullAd(null, "openAd")
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")
AdMaxEvent.showAd(p0, "openAd", activityString)
}
override fun onAdHidden(p0: MaxAd) {
onHidden?.invoke()
appOpenAd?.loadAd()
onHidden = null
loadAppOpenAd(activity)
loadingListener = null
}
override fun onAdClicked(p0: MaxAd) {
AdDisplayUtils.getInstance().incrementAdClickCount()
// com.base.datarecovery.ads.max.AdMaxEvent.clickAd(appOpenAd, "openAd")
AdmobCommonUtils.isMultiClick(appOpenAd)
AdMaxEvent.clickAd(p0, "openAd")
}
......@@ -63,7 +70,8 @@ object AdMaxOpenUtils {
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
LogEx.logDebug(TAG, "onAdDisplayFailed")
onHidden?.invoke()
appOpenAd?.loadAd()
onHidden = null
loadAppOpenAd(activity)
val obj = JSONObject()
obj.put("code", p1.code)
obj.put("reason", p1.message)
......@@ -76,7 +84,11 @@ object AdMaxOpenUtils {
}
}
fun showAppOpenAd(activity: Activity, loaded: (() -> Unit)? = null, onHidden: (() -> Unit)? = null) {
fun showAppOpenAd(
activity: Activity,
loaded: (() -> Unit)? = null,
onHidden: (() -> Unit)? = null
) {
setListener(activity)
......@@ -84,7 +96,7 @@ object AdMaxOpenUtils {
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
LogEx.logDebug(TAG, "!shouldShowAd")
onHidden?.invoke()
return
......@@ -99,27 +111,31 @@ object AdMaxOpenUtils {
appOpenAd?.loadAd()
}
if (!AdMaxInit.isAdMaxInit.get()) {
if (!AdmobMaxHelper.isAdInit.get()) {
onHidden?.invoke()
return
}
LogEx.logDebug(TAG, "showAppOpenAd continue")
LogEx.logDebug(TAG, "showAppOpenAd")
val obj1 = JSONObject()
obj1.put("ad_unit", "openAd")
EventUtils.event("ad_prepare_show", ext = obj1)
AdMaxOpenUtils.onHidden = onHidden
if (appOpenAd?.isReady == true) {
LogEx.logDebug(TAG, "isReady=false")
LogEx.logDebug(TAG, "广告准备好了,展示广告")
appOpenAd?.showAd()
} else {
val obj = JSONObject()
obj.put("reason", "no ad")
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
LogEx.logDebug(TAG, "展示时候,发现广告需要拉取")
appOpenAd?.loadAd()
loadingListener = {
LogEx.logDebug(TAG, "loadingListener callback")
loaded?.invoke()
val obj1 = JSONObject()
obj1.put("ad_unit", "openAd")
EventUtils.event("ad_prepare_show", ext = obj1)
appOpenAd?.showAd()
loadingListener = null
}
......@@ -129,19 +145,28 @@ object AdMaxOpenUtils {
fun loadAppOpenAd(activity: Activity) {
setListener(activity)
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
if (!AdDisplayUtils.getInstance().shouldShowAd("openAd")) {
LogEx.logDebug(TAG, "!shouldShowAd")
return
}
if (appOpenAd?.isReady == true) {
LogEx.logDebug(TAG, "appOpenAd?.isReady == true")
return
}
if (AdMaxInit.isAdMaxInit.get()) {
LogEx.logDebug(TAG, "appOpenAd load")
if (AdmobMaxHelper.isAdInit.get()) {
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()
}
}
fun isOpenAdLoaded(): Boolean {
return appOpenAd?.isReady == true
}
}
......@@ -3,6 +3,7 @@ package com.base.filerecoveryrecyclebin.fragment
import android.animation.ValueAnimator
import android.content.Intent
import com.base.filerecoveryrecyclebin.activity.SettingActivity
import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity
import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
......
......@@ -21,6 +21,7 @@ import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.IconCompat
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.activity.MainActivity
import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import com.base.filerecoveryrecyclebin.activity.recyclebin.MediaContentObserver
import com.base.filerecoveryrecyclebin.activity.recyclebin.MyFileObserver
......
......@@ -14,6 +14,7 @@ import android.view.View
import android.view.WindowManager
import androidx.lifecycle.LifecycleCoroutineScope
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils.showInterAdSp
import com.base.filerecoveryrecyclebin.bean.RecycleBinBean
import com.base.filerecoveryrecyclebin.databinding.DialogCameraSettingBinding
......@@ -333,7 +334,7 @@ object DialogViews {
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
val lp: WindowManager.LayoutParams? = dialog.window?.attributes
val lp: WindowManager.LayoutParams? = dialog.window?.attributes
lp?.alpha = 0f
lp?.dimAmount = 0.0f
window.setAttributes(lp)
......
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