Commit 6ddcdbc6 authored by maxiaoliang's avatar maxiaoliang

修改广告,添加新需求

parent 9a6ca575
......@@ -115,4 +115,12 @@ dependencies {
//https://docs.tradplusad.com/docs/tradplussdk_android_doc_v6/privacy_policy/google_ump/
implementation 'com.google.android.ump:user-messaging-platform:2.1.0'
implementation 'com.applovin:applovin-sdk:+'
implementation 'com.applovin.mediation:google-adapter:+'
implementation 'com.applovin.mediation:ironsource-adapter:+'
implementation 'com.applovin.mediation:vungle-adapter:+'
implementation 'com.applovin.mediation:facebook-adapter:+'
implementation 'com.applovin.mediation:mintegral-adapter:+'
implementation 'com.applovin.mediation:bytedance-adapter:+'
}
\ No newline at end of file
......@@ -187,6 +187,9 @@
android:name=".activity.photocompress.photo.PreviewCompressionPhotoActivity"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.BackRelsutAt"
android:screenOrientation="portrait" />
<service
android:name=".fcm.FcmService"
......
......@@ -4,24 +4,24 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.text.TextUtils
import android.util.Log
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.google.android.gms.ads.MobileAds
import com.mbridge.msdk.thrid.okhttp.OkHttpClient
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import com.test.easy.easycleanerjunk.activity.splash.NewSplashActivity
import com.test.easy.easycleanerjunk.fcm.ActionBroadcast
import com.test.easy.easycleanerjunk.fcm.FCMUtil
import com.test.easy.easycleanerjunk.fcm.MyTimerManager
import com.test.easy.easycleanerjunk.helps.BaseApplication
import com.test.easy.easycleanerjunk.helps.ComUtils
import com.test.easy.easycleanerjunk.helps.ConfigHelper
import com.test.easy.easycleanerjunk.helps.InstallHelps
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils
import com.test.easy.easycleanerjunk.utils.SPUtils
import java.io.IOException
import java.util.Collections
import java.util.UUID
import java.util.concurrent.Executors
class MyApplication : BaseApplication() {
......@@ -48,11 +48,26 @@ class MyApplication : BaseApplication() {
fun initApp() {
initNotificationWork()
InstallHelps.init()
if (ConfigHelper.ifAgreePrivacy) {
MobileAds.initialize(this) { initializationStatus ->
}
InstallHelps.init()
val executor = Executors.newSingleThreadExecutor()
executor.execute {
val initConfigBuilder = AppLovinSdkInitializationConfiguration.builder(
"05TMDQ5tZabpXQ45_UTbmEGNUtVAzSTzT6KmWQc5_CuWdzccS4DCITZoL3yIWUG3bbq60QC_d4WF28tUC4gVTF",
context
).setMediationProvider(AppLovinMediationProvider.MAX)
val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(context).id
if (currentGaid != null) {
initConfigBuilder.testDeviceAdvertisingIds = Collections.singletonList(currentGaid)
}
val initConfig = initConfigBuilder.build()
// Initialize the SDK with the configuration
AppLovinSdk.getInstance(context).initialize(initConfig) { sdkConfig ->
}
executor.shutdown()
}
}
initLifeListener()
}
......@@ -60,19 +75,11 @@ class MyApplication : BaseApplication() {
private fun initNotificationWork() {
FCMUtil.initFirebase(this)
FCMUtil.subscribeToTopic(ConfigHelper.packageName + "_push")
Thread {
ComUtils.requestCfg {
ActionBroadcast.initBroadcast(this)
val timerS = SPUtils.getInstance().getInt("timerS", 1)
if (timerS == 1) {
val timerDelay = SPUtils.getInstance().getInt("timerDelay", 1)
val timerInterval = SPUtils.getInstance().getInt("timerInterval", 5)
MyTimerManager.getInstance()
.startTimer((timerDelay * 60 * 1000).toLong(), (timerInterval * 60 * 1000).toLong())
}
}
}.start()
// Thread {
//
// }.start()
ActionBroadcast.initBroadcast(this)
}
@SuppressLint("UnspecifiedRegisterReceiverFlag")
......@@ -96,8 +103,8 @@ class MyApplication : BaseApplication() {
}
if (flag) {
if (AdmobUtils.isOpenAdLoaded()) {
AdmobUtils.showAppOpenAd(activity)
if (MaxAdUtils.isOpenAdLoaded()) {
MaxAdUtils.showAppOpenAd(activity)
} else {
topActivity?.startActivity(
Intent(
......
package com.test.easy.easycleanerjunk.activity
import android.app.Activity
import android.content.Intent
import android.graphics.Color
import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.appmanager.AppManagerAnimationActivity
import com.test.easy.easycleanerjunk.activity.batteryinfo.BatteryInfoAnimationActivity
import com.test.easy.easycleanerjunk.activity.largefile.LargeFileAnimationActivity
import com.test.easy.easycleanerjunk.activity.photocompress.photo.StartCompressionPhotoActivity
import com.test.easy.easycleanerjunk.activity.scanjunk.PrepareScanActivity
import com.test.easy.easycleanerjunk.activity.screenshot.ScreenShotAnimationActivity
import com.test.easy.easycleanerjunk.activity.similarphotos.RepeatPhotoAnimationActivity
import com.test.easy.easycleanerjunk.activity.whatsapp.WhatsAppCleanerAnimationActivity
import com.test.easy.easycleanerjunk.databinding.AtLayoutBackRelustBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb
class BackRelsutAt:BaseActivity<AtLayoutBackRelustBinding>() {
override val binding: AtLayoutBackRelustBinding by lazy {
AtLayoutBackRelustBinding.inflate(layoutInflater)
}
companion object {
fun launch(activity: Activity, from: String?) {
activity.startActivity(Intent(activity, BackRelsutAt::class.java).putExtra("type", from))
}
}
private val type by lazy {
intent.getStringExtra("type")
}
override fun initView() {
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.idClose.updatePadding(top=BarUtils.getStatusBarHeight())
val index = listOf(
AFunOb.JUNK_CLEANER,
AFunOb.WHATSAPP_CLEANER,
AFunOb.BATTERY_INFO,
AFunOb.LARGE_FILE_CLEANER,
AFunOb.PHOTO_COMPRESS,
AFunOb.APP_MANAGER,
AFunOb.SIMILAR_PHOTOS,
AFunOb.SCREENSHOT_CLEANER
).indexOf(type)
listOf(
listOf(R.mipmap.b_cleanjunk, "Clean up remaining junk files to free up space", "Clean Up", PrepareScanActivity::class.java),
listOf(R.mipmap.b_whatsapp, "Free up space by cleaning up WhatsApp junk files", "View", WhatsAppCleanerAnimationActivity::class.java),
listOf(R.mipmap.b_battery, "Power consumption too fast? Check your phone's battery status", "View", BatteryInfoAnimationActivity::class.java),
listOf(R.mipmap.b_large, "Free up storage space by cleaning up big files", "Clean Up", LargeFileAnimationActivity::class.java),
listOf(R.mipmap.b_photocompress, "Compress images to save storage space", "Compress", StartCompressionPhotoActivity::class.java),
listOf(R.mipmap.b_appguanli, "Low on storage space? Free up space on your device by managing unused apps!", "View", AppManagerAnimationActivity::class.java),
listOf(R.mipmap.b_similar, "Check similar photos and free up space", "Clean Up", RepeatPhotoAnimationActivity::class.java),
listOf(R.mipmap.b_screenshot, "Free up storage space by cleaning up screenshots", "View", ScreenShotAnimationActivity::class.java),
).let {
val item = it[(index + 1) % it.size]
binding.idImg.setImageResource(item[0] as Int)
binding.idTvDesc.text = item[1] as String
binding.idBtn.text = item[2] as String
binding.idBtn.setOnClickListener { _ ->
if (item[3] is Class<*>) {
startActivity(Intent(this, item[3] as Class<*>))
finish()
}
}
}
}
override fun initListener() {
binding.idClose.setOnClickListener {
finishToMain()
}
}
}
\ No newline at end of file
......@@ -18,7 +18,7 @@ import com.test.easy.easycleanerjunk.adapter.AppFunctionAdapter
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutResultBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.SPUtils
import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER
......@@ -127,15 +127,16 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
val s = SPUtils.getInstance().getInt("isShowBackIntAd", 0)
if (s == 1) {
AdmobUtils.showInterstitialAd(this@ResultActivity) {
finishToMain()
}
} else {
finishToMain()
}
// val s = SPUtils.getInstance().getInt("isShowBackIntAd", 0)
// if (s == 1) {
// MaxAdUtils.showInterstitialAd(this@ResultActivity) {
// finishToMain()
// }
// } else {
// finishToMain()
// }
BackRelsutAt.launch(this@ResultActivity, from)
finish()
}
})
......@@ -145,7 +146,7 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
val ss = SPUtils.getInstance().getInt("isShowResultNaAd", 0)
if (ss == 1) {
binding.flAd.visibility = View.VISIBLE
AdmobUtils.showNativeAd(this@ResultActivity, binding.flAd)
MaxAdUtils.showNativeAd(this@ResultActivity, binding.flAd)
} else {
binding.flAd.visibility = View.GONE
......
......@@ -8,20 +8,18 @@ import android.graphics.Color
import android.net.Uri
import android.view.View
import androidx.activity.addCallback
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.adapter.AppUninstallAdapter
import com.test.easy.easycleanerjunk.bean.AppUninstallBean
import com.test.easy.easycleanerjunk.databinding.ActivityAppManagerBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlin.random.Random
class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
......@@ -51,7 +49,7 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
}
onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.APP_MANAGER) {
AdmobUtils.showInterstitialAd(this@AppManagerActivity) {
MaxAdUtils.showInterstitialAd(this@AppManagerActivity) {
finishToMain()
}
}
......@@ -78,7 +76,7 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
binding.progressBar.visibility = View.GONE
adapter.setData(list)
if (list.size > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this@AppManagerActivity, binding.flAd)
MaxAdUtils.showNativeAd(this@AppManagerActivity, binding.flAd)
}
}
}
......
......@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.appmanager
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityAppManagerAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......@@ -49,7 +42,7 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppManagerAnimationBind
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
AdmobUtils.showInterstitialAd(this@AppManagerAnimationActivity) {
MaxAdUtils.showInterstitialAd(this@AppManagerAnimationActivity) {
binding.lottie.cancelAnimation()
startActivity(Intent(this@AppManagerAnimationActivity, AppManagerActivity::class.java))
finish()
......
......@@ -10,11 +10,10 @@ import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.ResultActivity
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutBatteryInfoBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.service.BatteryReceiver
import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
import kotlin.random.Random
class BatteryInfoActivity : BaseActivity<ActivityLayoutBatteryInfoBinding>() {
override val isLightMode = true
......@@ -67,7 +66,7 @@ class BatteryInfoActivity : BaseActivity<ActivityLayoutBatteryInfoBinding>() {
}
onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.BATTERY_INFO) {
AdmobUtils.showInterstitialAd(this@BatteryInfoActivity, isShowInterVal = false) {
MaxAdUtils.showInterstitialAd(this@BatteryInfoActivity, isShowInterVal = false) {
finishToMain()
}
}
......
......@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.batteryinfo
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityBatteryInfoAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......@@ -51,7 +44,7 @@ class BatteryInfoAnimationActivity : BaseActivity<ActivityBatteryInfoAnimationBi
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
AdmobUtils.showInterstitialAd(this@BatteryInfoAnimationActivity) {
MaxAdUtils.showInterstitialAd(this@BatteryInfoAnimationActivity) {
binding.lottie.clearAnimation()
startActivity(Intent(this@BatteryInfoAnimationActivity, BatteryInfoActivity::class.java))
finish()
......
......@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.largefile
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityLargeFileAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......@@ -49,7 +42,7 @@ class LargeFileAnimationActivity : BaseActivity<ActivityLargeFileAnimationBindin
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
AdmobUtils.showInterstitialAd(this@LargeFileAnimationActivity) {
MaxAdUtils.showInterstitialAd(this@LargeFileAnimationActivity) {
showFinish?.invoke()
startActivity(Intent(this@LargeFileAnimationActivity, LargeFileCleanActivity::class.java))
finish()
......
......@@ -44,7 +44,7 @@ import com.test.easy.easycleanerjunk.helps.MediaStoreUtils
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.TimeUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission
......@@ -189,7 +189,7 @@ class LargeFileCleanActivity : BaseActivity<ActivityLayoutLargeFileBinding>() {
}
onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.LARGE_FILE_CLEANER) {
AdmobUtils.showInterstitialAd(this@LargeFileCleanActivity) {
MaxAdUtils.showInterstitialAd(this@LargeFileCleanActivity) {
finishToMain()
}
}
......@@ -218,7 +218,7 @@ class LargeFileCleanActivity : BaseActivity<ActivityLayoutLargeFileBinding>() {
binding.llTime.isEnabled = true
}
if (largeFileList.size > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this@LargeFileCleanActivity, binding.flAd)
MaxAdUtils.showNativeAd(this@LargeFileCleanActivity, binding.flAd)
}
}
}
......
......@@ -5,7 +5,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.databinding.ActivityCompressionPhotoListBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
......@@ -34,7 +34,7 @@ class CompressionPhotoListActivity : BaseActivity<ActivityCompressionPhotoListBi
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
showDialogFunctionExit(AFunOb.PHOTO_COMPRESS) {
AdmobUtils.showInterstitialAd(this@CompressionPhotoListActivity, isShowInterVal = false) {
MaxAdUtils.showInterstitialAd(this@CompressionPhotoListActivity, isShowInterVal = false) {
PhotoCache.getInstance().clearCache()
finishToMain()
}
......
......@@ -83,7 +83,7 @@ class CompressioningActivity : BaseActivity<ActivityCompressioningBinding>(),
}
private fun onSuccess() {
// AdmobUtils.showInterstitialAd(this){
// MaxAdUtils.showInterstitialAd(this){
val intent = Intent(this, ResultActivity::class.java)
intent.putExtra("from", AFunOb.PHOTO_COMPRESS)
intent.putExtra("num", mNum)
......
......@@ -6,7 +6,6 @@ import android.content.Intent
import android.graphics.drawable.Drawable
import android.view.View
import android.view.View.OnClickListener
import android.widget.FrameLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager
......@@ -14,8 +13,6 @@ import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
class PhotoListManager(val context: Activity) : OnItemClickListener<PhotoBean>, SpanSizeLookup(), OnClickListener {
......@@ -62,7 +59,7 @@ class PhotoListManager(val context: Activity) : OnItemClickListener<PhotoBean>,
override fun onUpdateBtn(isChecked: Boolean, entity: PhotoBean) {
// if (entity.size > 6 || mustShowNativeAd) {
// val flAd = context.findViewById<FrameLayout>(R.id.fl_ad)
// AdmobUtils.showNativeAd(context, flAd)
// MaxAdUtils.showNativeAd(context, flAd)
// }
PhotoCache.getInstance().let {
if (isChecked) it.addPhoto(entity) else it.removePhoto(entity)
......
......@@ -7,7 +7,7 @@ import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityPreviewCompressionPhotoBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
......@@ -39,7 +39,7 @@ class PreviewCompressionPhotoActivity : BaseActivity<ActivityPreviewCompressionP
dialog.setButtonClickListener(R.id.btnContinue) {
dialog.dismiss()
AdmobUtils.showInterstitialAd(this) {
MaxAdUtils.showInterstitialAd(this) {
CompressionPhotoListActivity.mActivity?.finish()
val intent = Intent(this, CompressioningActivity::class.java)
intent.putExtra("mode", manager.getMode())
......
......@@ -3,7 +3,6 @@ package com.test.easy.easycleanerjunk.activity.photocompress.photo
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.os.Handler
import android.view.View
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
......@@ -11,7 +10,7 @@ import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.databinding.ActivityStartCompressionPhotoBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
......@@ -71,7 +70,7 @@ class StartCompressionPhotoActivity : BaseActivity<ActivityStartCompressionPhoto
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
AdmobUtils.showInterstitialAd(aContext) {
MaxAdUtils.showInterstitialAd(aContext) {
val mList = ImagesMediaUtils.getAlbums(aContext)
if (mList.isNotEmpty()) {
startActivity(Intent(aContext, CompressionPhotoListActivity::class.java))
......
......@@ -22,7 +22,7 @@ import com.test.easy.easycleanerjunk.databinding.ItemParentBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.MediaStoreUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
......@@ -85,7 +85,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
showDialogFunctionExit(AFunOb.JUNK_CLEANER) {
AdmobUtils.showInterstitialAd(this@CleanJunkActivity) {
MaxAdUtils.showInterstitialAd(this@CleanJunkActivity) {
finishToMain()
}
}
......@@ -188,7 +188,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
binding.idClBtn.isVisible = scanCount >= 3
binding.idClBtn.isEnabled = sizes.sum() > 0
if (scanCount >= 3 && sizes.sum().toInt() == 0) {
// AdmobUtils.showInterstitialAd(this) {
// MaxAdUtils.showInterstitialAd(this) {
// startActivity(
// Intent(this, ResultActivity::class.java).putExtra(
// "from",
......
......@@ -6,7 +6,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutParepreScanBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
/**
......@@ -58,7 +58,7 @@ class PrepareScanActivity : BaseActivity<ActivityLayoutParepreScanBinding>() {
binding.idJunkScan.setAnimation("easy_junk_scan/data.json")
binding.idJunkScan.playAnimation()
binding.root.postDelayed({
AdmobUtils.showInterstitialAd(this) {
MaxAdUtils.showInterstitialAd(this) {
startActivity(Intent(this, CleanJunkActivity::class.java))
finish()
}
......
......@@ -3,16 +3,13 @@ package com.test.easy.easycleanerjunk.activity.scanjunk
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.view.View
import android.widget.Toast
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutScanJunkBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......@@ -95,7 +92,7 @@ class ScanJunkActivity : BaseActivity<ActivityLayoutScanJunkBinding>() {
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
AdmobUtils.showInterstitialAd(this@ScanJunkActivity) {
MaxAdUtils.showInterstitialAd(this@ScanJunkActivity) {
startActivity(Intent(this@ScanJunkActivity, CleanJunkActivity::class.java))
finish()
}
......
......@@ -14,7 +14,7 @@ import com.test.easy.easycleanerjunk.helps.FileHelps
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.SPUtils
import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
......@@ -26,7 +26,6 @@ import kotlinx.coroutines.launch
import java.io.File
import java.text.SimpleDateFormat
import java.util.Locale
import kotlin.collections.HashSet
class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
override val isLightMode = true
......@@ -79,7 +78,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
binding.tvSize.text = sizeF[0]
binding.tvUnit.text = sizeF[1]
if (list.sumOf { it.screenPhotoBean.size } > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this@ScreenShotActivity, binding.flAd)
MaxAdUtils.showNativeAd(this@ScreenShotActivity, binding.flAd)
}
}
}
......@@ -90,7 +89,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
}
onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.SCREENSHOT_CLEANER) {
AdmobUtils.showInterstitialAd(this@ScreenShotActivity) {
MaxAdUtils.showInterstitialAd(this@ScreenShotActivity) {
finishToMain()
}
}
......@@ -110,7 +109,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
doDelete()
} else {
showFileDeleteDialog {
AdmobUtils.showInterstitialAd(this) {
MaxAdUtils.showInterstitialAd(this) {
doDelete()
}
}
......
......@@ -2,24 +2,13 @@ package com.test.easy.easycleanerjunk.activity.screenshot
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.provider.MediaStore.Audio
import android.view.View
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityScreenShotAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......@@ -61,7 +50,7 @@ class ScreenShotAnimationActivity : BaseActivity<ActivityScreenShotAnimationBind
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
AdmobUtils.showInterstitialAd(this@ScreenShotAnimationActivity) {
MaxAdUtils.showInterstitialAd(this@ScreenShotAnimationActivity) {
startActivity(Intent(this@ScreenShotAnimationActivity, ScreenShotActivity::class.java))
finish()
}
......
......@@ -20,7 +20,7 @@ import com.test.easy.easycleanerjunk.helps.BaseApplication
import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd
import com.test.easy.easycleanerjunk.helps.FileHelps
import com.test.easy.easycleanerjunk.helps.MediaStoreUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.NewFileUtils
import com.test.easy.easycleanerjunk.utils.SPUtils
......@@ -52,7 +52,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
showDialogFunctionExit(AFunOb.SIMILAR_PHOTOS) {
AdmobUtils.showInterstitialAd(this@RepeatPhotoActivity) {
MaxAdUtils.showInterstitialAd(this@RepeatPhotoActivity) {
finishToMain()
}
}
......@@ -79,7 +79,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() {
if (s == 0) {
doDeleteFile()
} else {
AdmobUtils.showInterstitialAd(this) {
MaxAdUtils.showInterstitialAd(this) {
doDeleteFile()
}
}
......@@ -120,7 +120,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() {
binding.idRlList.adapter = mAdapter
if (fileList.size > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this, binding.flAd)
MaxAdUtils.showNativeAd(this, binding.flAd)
}
}
}
......
......@@ -2,19 +2,12 @@ package com.test.easy.easycleanerjunk.activity.similarphotos
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityRepeatPhotoAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......
......@@ -14,7 +14,7 @@ import com.test.easy.easycleanerjunk.fcm.NotificationUtil
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ConfigHelper
import com.test.easy.easycleanerjunk.helps.EventUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.service.PermanentNotificationService.Companion.startNotification
import com.test.easy.easycleanerjunk.utils.BarUtils
......@@ -83,21 +83,21 @@ class NewSplashActivity : BaseActivity<ActivityLayoutSplashBinding>(),
}
private fun loadAd() {
AdmobUtils.loadAppOpenAd {
MaxAdUtils.loadAppOpenAd {
if (isFinishing || isDestroyed) {
return@loadAppOpenAd
} else {
if (!isPause) {
mProgressManager?.pauseProgress()
runOnUiThread {
AdmobUtils.showAppOpenAd(this@NewSplashActivity) {
MaxAdUtils.showAppOpenAd(this@NewSplashActivity) {
mProgressManager?.maxProgress()
}
}
}
}
}
AdmobUtils.loadInterstitialAd(this)
MaxAdUtils.loadInterstitialAd(this)
}
override fun onNewIntent(intent: Intent) {
......
......@@ -24,9 +24,9 @@ class ProgressManager {
initView()
}
private var loadTime: Int = 15
private var loadTime: Int = 20
private fun initView() {
loadTime = SPUtils.getInstance().getInt("loading_page_time", 15)
loadTime = SPUtils.getInstance().getInt("loading_page_time", 20)
binding.pb.max = loadTime
binding.pb.progress = 0
......
......@@ -3,7 +3,6 @@ package com.test.easy.easycleanerjunk.activity.whatsapp
import android.content.Intent
import android.graphics.Color
import android.os.Environment
import android.view.View
import androidx.activity.addCallback
import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
......@@ -18,7 +17,7 @@ import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.LogEx
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.FileHexEx.isImage
import com.test.easy.easycleanerjunk.utils.FileHexEx.isVideo
......@@ -28,7 +27,6 @@ import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
import kotlin.random.Random
class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
......@@ -79,7 +77,7 @@ class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
}
onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.WHATSAPP_CLEANER) {
AdmobUtils.showInterstitialAd(this@WhatsAppCleanerActivity) {
MaxAdUtils.showInterstitialAd(this@WhatsAppCleanerActivity) {
finishToMain()
}
}
......
......@@ -2,25 +2,19 @@ package com.test.easy.easycleanerjunk.activity.whatsapp
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityWhatsAppCleanerAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.random.Random
class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAnimationBinding>() {
override val isLightMode = true
override val binding: ActivityWhatsAppCleanerAnimationBinding by lazy {
ActivityWhatsAppCleanerAnimationBinding.inflate(layoutInflater)
}
......@@ -48,7 +42,7 @@ class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAni
binding.lottieCompleted.playAnimation()
binding.tv.text="Completed!"
delay(1000)
AdmobUtils.showInterstitialAd(this@WhatsAppCleanerAnimationActivity) {
MaxAdUtils.showInterstitialAd(this@WhatsAppCleanerAnimationActivity) {
startActivity(Intent(this@WhatsAppCleanerAnimationActivity, WhatsAppCleanerActivity::class.java))
finish()
}
......
......@@ -12,7 +12,7 @@ import com.test.easy.easycleanerjunk.bean.ImageDataBean
import com.test.easy.easycleanerjunk.databinding.ActivityWhatsAppMessageCleanBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb.WHATSAPP_CLEANER
import com.test.easy.easycleanerjunk.view.FileDeleteDialog.showFileDeleteDialog
......@@ -68,7 +68,7 @@ class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBi
onBackPressedDispatcher.onBackPressed()
}
onBackPressedDispatcher.addCallback {
AdmobUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) {
MaxAdUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) {
finishToMain()
}
}
......@@ -84,7 +84,7 @@ class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBi
binding.tvClean.setOnClickListener {
showFileDeleteDialog {
AdmobUtils.showInterstitialAd(this) {
MaxAdUtils.showInterstitialAd(this) {
val list = adapter.getSelectData()
runCatching {
list.forEach { File(it).delete() }
......
......@@ -9,7 +9,7 @@ import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ItemAdBinding
import com.test.easy.easycleanerjunk.databinding.ItemToolGrid1Binding
import com.test.easy.easycleanerjunk.databinding.ItemToolsGrid1Binding
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER
import com.test.easy.easycleanerjunk.view.AFunOb.BATTERY_INFO
import com.test.easy.easycleanerjunk.view.AFunOb.JUNK_CLEANER
......@@ -68,8 +68,8 @@ class ToolsAdapter(
if (data.isAd) {
val binding = ItemAdBinding.bind(holder.itemView)
AdmobUtils.loadNativeAd()
AdmobUtils.showNativeAd(context, binding.flAd)
MaxAdUtils.loadNativeAd()
MaxAdUtils.showNativeAd(context, binding.flAd)
} else {
val binding = ItemToolsGrid1Binding.bind(holder.itemView)
......
......@@ -9,7 +9,7 @@ import com.google.firebase.messaging.RemoteMessage;
import com.test.easy.easycleanerjunk.MyApplication;
import com.test.easy.easycleanerjunk.helps.EventUtils;
import com.test.easy.easycleanerjunk.helps.ads.AdDisplayUtils;
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils;
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils;
import com.test.easy.easycleanerjunk.utils.SPUtils;
public class FcmService extends FirebaseMessagingService {
......@@ -48,7 +48,7 @@ public class FcmService extends FirebaseMessagingService {
}
}
AdmobUtils.INSTANCE.setAdDisplayInterval(adInterval);
MaxAdUtils.INSTANCE.setAdDisplayInterval(adInterval);
AdDisplayUtils.getInstance().setMaxAdDisplayCount(adShowCount);
AdDisplayUtils.getInstance().setMaxAdClickCount(adClickCount);
......
......@@ -4,8 +4,8 @@ import android.util.Log
import com.google.gson.Gson
import com.test.easy.easycleanerjunk.bean.ConfigBean
import com.test.easy.easycleanerjunk.helps.ads.AdDisplayUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils.adDisplayInterval
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils.maxMultiClick
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils.adDisplayInterval
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils.maxMultiClick
import com.test.easy.easycleanerjunk.utils.SPUtils
import java.io.BufferedReader
import java.io.InputStreamReader
......@@ -22,6 +22,7 @@ object ComUtils {
}spk"
)
url.append("?pkg=$pkg")
url.append("&source=${SPUtils.getInstance().getString("install_source","origin")}")
url.toString()
}
......
......@@ -20,7 +20,10 @@ object ConfigHelper {
const val interAdmobId = "ca-app-pub-3940256099942544/1033173712"
const val nativeAdmobId = "ca-app-pub-3940256099942544/2247696110"
const val openAdmobId = "/6499/example/app-open"
//max广告id
const val interMaxId = "636e57ec33ac5698"
const val nativeMaxId = "63d874bafb4c4841"
const val openMaxId = "1fce760852e47224"
// 正式包名
const val packageName = "com.kk.junkcleaner.easy.zxkk"
......
......@@ -2,6 +2,8 @@ package com.test.easy.easycleanerjunk.helps
import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener
import com.test.easy.easycleanerjunk.fcm.MyTimerManager
import com.test.easy.easycleanerjunk.utils.SPUtils
import org.json.JSONObject
object InstallHelps {
......@@ -20,6 +22,22 @@ object InstallHelps {
obj.put("appInstallTime", response.installBeginTimestampSeconds)
obj.put("instantExperienceLaunched", installInfo.toString())
EventUtils.event("install_referrer", ext = obj, isSingleEvent = true)
if (listOf("gclid", "facebook", "instagram").all { !installInfo.contains(it, true) }) {
//自然用户
SPUtils.getInstance().put("install_source", "origin")
} else {
//渠道用户
SPUtils.getInstance().put("install_source", "channel")
}
ComUtils.requestCfg {
val timerS = SPUtils.getInstance().getInt("timerS", 1)
if (timerS == 1) {
val timerDelay = SPUtils.getInstance().getInt("timerDelay", 1)
val timerInterval = SPUtils.getInstance().getInt("timerInterval", 5)
MyTimerManager.getInstance()
.startTimer((timerDelay * 60 * 1000).toLong(), (timerInterval * 60 * 1000).toLong())
}
}
}
else -> {
......
package com.test.easy.easycleanerjunk.helps.ads;
import android.content.SharedPreferences;
import android.util.Log;
import com.test.easy.easycleanerjunk.MyApplication;
import com.test.easy.easycleanerjunk.helps.BaseApplication;
import java.text.SimpleDateFormat;
import java.util.Calendar;
......@@ -12,26 +13,42 @@ import java.util.Locale;
public class AdDisplayUtils {
private static final int DEFAULT_MAX_AD_DISPLAY_COUNT = 45; // 总广告展示次数限制默认值
private static final int DEFAULT_MAX_AD_CLICK_COUNT = 10; // 单个广告点击次数限制默认值
private static final int DEFAULT_MAX_AD_REQUEST_FAIL_COUNT = 20; // 单个广告点击次数限制默认值
private static final String AD_PREFS_NAME = "ad_prefs"; // SharedPreferences 名称
private static final String AD_DISPLAY_COUNT_KEY = "ad_display_count"; // 广告展示次数的键
private static final String AD_CLICK_COUNT_KEY = "ad_click_count"; // 广告点击次数的键
private static final String MAX_AD_DISPLAY_COUNT_KEY = "max_ad_display_count"; // 总广告展示次数限制的键
private static final String MAX_AD_CLICK_COUNT_KEY = "max_ad_click_count"; // 单个广告点击次数限制的键
private static final String MAX_AD_REQUEST_FAIL_COUNT_KEY = "max_ad_request_fail_count"; // 单个广告点击次数限制的键
private static final String AD_REQUEST_FAIL_COUNT_KEY = "ad_request_fail_count"; // 单个广告点击次数限制的键
private static AdDisplayUtils instance; // 单例对象
private int adDisplayCount = 0; // 当前广告展示次数
private int adClickCount = 0; // 当前广告点击次数
private int maxAdDisplayCount; // 总广告展示次数限制
private int maxAdClickCount; // 单个广告点击次数限制
private int maxAdRequestFailCount; // 请求失败总
private int adRequestFailCount = 0; // 请求失败当前
private String currentDate; // 当前日期
private static final int DEFAULT_MAX_AD_REQUEST_COUNT = 100; // 广告请求次数限制默认值
private static final String MAX_AD_REQUEST_COUNT_KEY = "max_ad_request_count"; // 广告请求次数限制的键
private static final String AD_REQUEST_COUNT_KEY = "ad_request_count";
private int adRequestCount = 0; // 当前广告请求次数
private int maxAdRequestCount = 0; // 当前广告请求次数
private AdDisplayUtils() {
currentDate = getCurrentDate();
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
maxAdDisplayCount = prefs.getInt(MAX_AD_DISPLAY_COUNT_KEY, DEFAULT_MAX_AD_DISPLAY_COUNT);
maxAdClickCount = prefs.getInt(MAX_AD_CLICK_COUNT_KEY, DEFAULT_MAX_AD_CLICK_COUNT);
maxAdRequestFailCount = prefs.getInt(MAX_AD_REQUEST_FAIL_COUNT_KEY, DEFAULT_MAX_AD_REQUEST_FAIL_COUNT);
adDisplayCount = prefs.getInt(getAdDisplayCountKey(), 0);
adClickCount = prefs.getInt(getAdClickCountKey(), 0);
adRequestFailCount = prefs.getInt(getAdRequestFailCountKey(), 0);
adRequestCount = prefs.getInt(getAdRequestCountKey(), 0);
maxAdRequestCount = prefs.getInt(MAX_AD_REQUEST_COUNT_KEY, DEFAULT_MAX_AD_REQUEST_COUNT);
}
public static synchronized AdDisplayUtils getInstance() {
......@@ -45,11 +62,16 @@ public class AdDisplayUtils {
return adDisplayCount < getMaxAdDisplayCount();
}
public boolean shouldIncrementRequestFailAd() {
return adRequestFailCount < getMaxAdRequestFailCount();
}
public boolean shouldIncrementClickCount() {
return adClickCount < getMaxAdClickCount();
}
public boolean shouldShowAd() {
return shouldDisplayAd() || shouldIncrementClickCount();
return shouldDisplayAd() && shouldIncrementClickCount() && shouldIncrementRequestFailAd()&&shouldSendAdRequest();
}
public void incrementAdDisplayCount() {
......@@ -69,6 +91,18 @@ public class AdDisplayUtils {
adClickCount++;
saveAdClickCount();
}
public void incrementAdRequestFailCount() {
if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate();
adRequestFailCount = 0;
}
adRequestFailCount++;
saveAdRequestFailCount();
Log.d("glc","广告请求失败:"+adRequestFailCount);
}
public void setAdClickCount(int s) {
if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate();
......@@ -93,14 +127,14 @@ public class AdDisplayUtils {
}
private void saveAdDisplayCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdDisplayCountKey(), adDisplayCount);
editor.apply();
}
private void saveAdClickCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdClickCountKey(), adClickCount);
editor.apply();
......@@ -118,6 +152,9 @@ public class AdDisplayUtils {
public int getMaxAdClickCount() {
return maxAdClickCount;
}
public int getMaxAdRequestCount() {
return maxAdRequestCount;
}
public void setMaxAdClickCount(int maxAdClickCount) {
this.maxAdClickCount = maxAdClickCount;
......@@ -125,16 +162,68 @@ public class AdDisplayUtils {
}
private void saveMaxAdDisplayCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(MAX_AD_DISPLAY_COUNT_KEY, maxAdDisplayCount);
editor.apply();
}
private void saveMaxAdClickCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(MAX_AD_CLICK_COUNT_KEY, maxAdClickCount);
editor.apply();
}
public int getMaxAdRequestFailCount() {
return maxAdRequestFailCount;
}
public void setMaxAdRequestFailCount(int maxAdRequestFailCount) {
this.maxAdRequestFailCount = maxAdRequestFailCount;
saveMaxAdRequestFailCount();
}
private void saveMaxAdRequestFailCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(MAX_AD_REQUEST_FAIL_COUNT_KEY, maxAdRequestFailCount);
editor.apply();
}
private void saveAdRequestFailCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdRequestFailCountKey(), adRequestFailCount);
editor.apply();
}
private String getAdRequestFailCountKey() {
return AD_REQUEST_FAIL_COUNT_KEY + "_" + currentDate;
}
public boolean shouldSendAdRequest() {
return adRequestCount < getMaxAdRequestCount();
}
public void incrementAdRequestCount() {
if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate();
adRequestCount = 0;
}
adRequestCount++;
saveAdRequestCount();
}
private void saveAdRequestCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdRequestCountKey(), adRequestCount);
editor.apply();
}
private String getAdRequestCountKey() {
return AD_REQUEST_COUNT_KEY + "_" + currentDate;
}
}
package com.test.easy.easycleanerjunk.helps.ads
import android.app.Activity
import android.app.Dialog
import android.os.Bundle
import android.util.Log
import android.view.ViewGroup
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxAdRevenueListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.mediation.ads.MaxInterstitialAd
import com.applovin.mediation.nativeAds.MaxNativeAdListener
import com.applovin.mediation.nativeAds.MaxNativeAdLoader
import com.applovin.mediation.nativeAds.MaxNativeAdView
import com.google.firebase.analytics.FirebaseAnalytics
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.photocompress.photo.CustomDialog
import com.test.easy.easycleanerjunk.helps.BaseApplication
import com.test.easy.easycleanerjunk.helps.ConfigHelper
import com.test.easy.easycleanerjunk.helps.EventUtils
import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils
import org.json.JSONObject
import java.util.UUID
object MaxAdUtils {
private var openLoadTime = Long.MAX_VALUE
private var interLoadTime = Long.MAX_VALUE
private var nativeLoadTime = Long.MAX_VALUE
private var openAdUnit = "1fce760852e47224"
private var interAdUnit = "636e57ec33ac5698"
private var naviteAdUnit = "63d874bafb4c4841"
var mOpenAd: MaxAppOpenAd? = null
fun loadAppOpenAd(skip: Boolean = false, onLoad: (() -> Unit)? = null) {
if (mOpenAd != null || skip) {
onLoad?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onLoad?.invoke()
return
}
openAdUnit = ConfigHelper.openMaxId
mOpenAd = MaxAppOpenAd(openAdUnit, BaseApplication.context)
if (isOpenAdLoaded() || skip) {
onLoad?.invoke()
return
}
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)
mOpenAd?.setListener(
object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
openLoadTime = System.currentTimeMillis()
onLoad?.invoke()
maxAdPullReport(p0, "openAd", reqId = reqId)
Log.e("MXL", "开屏onAdLoaded: ")
}
override fun onAdDisplayed(p0: MaxAd) {}
override fun onAdHidden(p0: MaxAd) {}
override fun onAdClicked(p0: MaxAd) {}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
onLoad?.invoke()
maxAdPullReport(null, "AppOpenAd", p1.message)
Log.e("MXL", "onAdLoadFailed: " + p1)
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {}
}
)
mOpenAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
}
fun isOpenAdLoaded() = mOpenAd?.isReady == true
fun showAppOpenAd(activity: Activity, skip: Boolean = false, onHidden: (() -> Unit)? = null) {
if (activity.isFinishing || activity.isDestroyed) {
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onHidden?.invoke()
return
}
val obj = JSONObject()
obj.put("ad_unit", "openAd")
EventUtils.event("ad_prepare_show", ext = obj)
if (System.currentTimeMillis() - openLoadTime > 1000 * 60 * 60) {
mOpenAd = null
loadAppOpenAd()
onHidden?.invoke()
val obj = JSONObject()
obj.put("ad_unit", "openAd")
EventUtils.event("ad_expire", ext = obj)
return
}
mOpenAd?.setRevenueListener(EventOnPaidEventListener())
mOpenAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
}
override fun onAdDisplayed(p0: MaxAd) {
maxAdShowReport(p0, "openAd")
}
override fun onAdHidden(p0: MaxAd) {
onHidden?.invoke()
loadAppOpenAd()
}
override fun onAdClicked(p0: MaxAd) {
maxAdclickReport(p0, "openAd")
isMultiClick(p0)
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
onHidden?.invoke()
loadAppOpenAd()
val obj = JSONObject()
obj.put("reason", p1.message)
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
}
})
if (isOpenAdLoaded()) {
mOpenAd?.showAd("OpenAd")
} else {
onHidden?.invoke()
mOpenAd?.loadAd()
val obj = JSONObject()
obj.put("reason", "no_ad")
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
}
}
private var interAd: MaxInterstitialAd? = null
private var retryAttempt = 0
fun isInterLoaded() = interAd?.isReady == true
fun loadInterstitialAd(activity: Activity, onLoad: (() -> Unit)? = null) {
if (isInterLoaded()) {
onLoad?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onLoad?.invoke()
return
}
interAdUnit = ConfigHelper.interMaxId
var hasDone = false
activity.window.decorView.postDelayed(Runnable {
if (hasDone) {
return@Runnable
}
hasDone = true
onLoad?.invoke()
}, 15000)
val reqId = UUID.randomUUID().toString()
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "interAd")
obj.put("mediation", "applovin")
obj.put("from", activity.javaClass.simpleName)
EventUtils.event("ad_pull_start", ext = obj)
interAd = MaxInterstitialAd(interAdUnit, activity)
interAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
Log.e("MXL", "interAd:onAdLoaded: ")
maxAdPullReport(p0, "InterstitialAd")
retryAttempt = 0
onLoad?.invoke()
}
override fun onAdDisplayed(p0: MaxAd) {
}
override fun onAdHidden(p0: MaxAd) {
}
override fun onAdClicked(p0: MaxAd) {
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
Log.e("MXL", "InteronAdLoadFailed: " + p1)
maxAdPullReport(null, "InterstitialAd", p1.message)
onLoad?.invoke()
// retryAttempt++
// Handler(Looper.getMainLooper()).postDelayed({
// retryAttempt++
// interAd?.loadAd()
// }, TimeUnit.SECONDS.toMillis(2.0.pow(6.coerceAtMost(retryAttempt)).toLong()))
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
}
})
interAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
}
private fun isAdExpired(): Boolean {
return System.currentTimeMillis() - interLoadTime > 1000 * 60 * 60
}
var adDisplayInterval: Int = 10
var adLastDisplayTime: Long = 0
fun showInterstitialAd(
activity: Activity,
isLoadAdNow: Boolean = false,
isShowInterVal: Boolean = true,
onHidden: (() -> Unit)? = null
) {
if (activity.isFinishing || activity.isDestroyed) {
return
}
val obj = JSONObject()
obj.put("ad_unit", "interAd")
EventUtils.event("ad_prepare_show", ext = obj)
if (isAdExpired()) {
val obj = JSONObject()
obj.put("ad_unit", "interAd")
EventUtils.event("ad_expire", ext = obj)
interAd = null
loadInterstitialAd(activity)
onHidden?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onHidden?.invoke()
return
}
Log.e("MXL", "showInterstitialAd: ", )
if (interAd != null) {
interAd?.setRevenueListener(EventOnPaidEventListener())
showIntervalDialogAndShowAd(activity, isLoadAdNow, isShowInterVal, onHidden, 0)
} else {
showAdDialogAndLoadInterstitial(activity, isLoadAdNow, isShowInterVal, onHidden)
}
}
private var customDialog: CustomDialog? = null
private fun showIntervalDialogAndShowAd(
activity: Activity,
isLoadAdNow: Boolean,
isShowInterVal: Boolean,
onHidden: (() -> Unit)?,
interval: Int
) {
// 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() {
displayInterstitialAd(activity, onHidden)
// if (!activity.isDestroyed && !activity.isFinishing) {
// customDialog?.dismiss()
// }
// customDialog = null
// }
// }
// countdownTimer.start()
// customDialog?.show()
}
private fun showCachedInterstitialAd(
activity: Activity,
isLoadAdNow: Boolean,
isShowInterVal: Boolean = true,
onHidden: (() -> Unit)?
) {
if (interAd != null) {
displayInterstitialAd(activity, onHidden)
} else {
showAdDialogAndLoadInterstitial(activity, isLoadAdNow, isShowInterVal, onHidden)
}
}
private fun isTimeElapsed(): Int {
val nowTime = System.currentTimeMillis() / 1000
return (adDisplayInterval - (nowTime - adLastDisplayTime).toInt())
}
private fun showAdDialogAndLoadInterstitial(
activity: Activity,
isLoadAdNow: Boolean,
isShowInterVal: Boolean,
onHidden: (() -> Unit)?
) {
var mDialog: Dialog? = null
if (!activity.isFinishing && !activity.isDestroyed) {
mDialog = CustomDialog(activity, R.layout.dialog_ad_loading)
// 设置对话框的样式和内容
mDialog?.show()
}
loadInterstitialAd(activity) {
mDialog?.dismiss()
if (!isLoadAdNow) {
showInterstitialAd(activity, true, isShowInterVal) {
onHidden?.invoke()
}
}
}
if (isLoadAdNow) {
mDialog?.dismiss()
onHidden?.invoke()
}
}
private fun displayInterstitialAd(activity: Activity, onHidden: (() -> Unit)? = null) {
val thisInterAd = interAd
interAd = null
thisInterAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
}
override fun onAdDisplayed(p0: MaxAd) {
maxAdShowReport(p0, "interAd", activity)
AdDisplayUtils.getInstance().incrementAdDisplayCount()
adLastDisplayTime = System.currentTimeMillis() / 1000
}
override fun onAdHidden(p0: MaxAd) {
interAd = null
onHidden?.invoke()
loadInterstitialAd(activity)
}
override fun onAdClicked(p0: MaxAd) {
maxAdclickReport(p0, "interAd")
AdDisplayUtils.getInstance().incrementAdClickCount()
isMultiClick(thisInterAd)
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
interAd = null
onHidden?.invoke()
loadInterstitialAd(activity)
val obj = JSONObject()
obj.put("reason", p1.message)
obj.put("ad_unit", "interAd")
EventUtils.event("ad_show_error", ext = obj)
}
})
if (thisInterAd?.isReady == true) {
thisInterAd?.showAd()
} else {
onHidden?.invoke()
interAd?.loadAd()
}
}
var nativeAdLoader: MaxNativeAdLoader? = null
private var currentNativeAd: MaxAd? = null//当前展示的NativeAd
private var showedNativeAd: MaxAd? = null//已经展示过的NativeAd
private var nativeData: Pair<MaxNativeAdView?, MaxAd?>? = null
private var loadingListener: (() -> Unit)? = null
private var isLoading = false
fun loadNativeAd() {
if (currentNativeAd != null) {
return
}
if (nativeData != null) {
return
}
if (isLoading) {
return
}
isLoading = true
naviteAdUnit = ConfigHelper.nativeMaxId
nativeAdLoader = MaxNativeAdLoader(naviteAdUnit, BaseApplication.context)
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
return
}
// val reqId = UUID.randomUUID().toString()
// val obj = JSONObject()
// obj.put("req_id", reqId)
// obj.put("ad_type", "nativeAd")
nativeAdLoader?.setNativeAdListener(object : MaxNativeAdListener() {
override fun onNativeAdLoaded(maxNativeAdView: MaxNativeAdView?, maxAd: MaxAd) {
//Log.e("MXL", "onNativeAdLoaded: " )
nativeData = Pair(maxNativeAdView, maxAd)
currentNativeAd = nativeData?.second
maxAdPullReport(maxAd, "NativeAd")
isLoading = false
loadingListener?.invoke()
}
override fun onNativeAdLoadFailed(p0: String, p1: MaxError) {
maxAdPullReport(null, "NativeAd", p1.message)
isLoading = false
}
})
nativeAdLoader?.loadAd()
}
fun showNativeAd(activity: Activity?, parent: ViewGroup) {
// val obj = JSONObject()
// obj.put("ad_unit", "NativeAd")
// EventUtils.event("ad_prepare_show", ext = obj)
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
return
}
loadingListener = {
//赋值给已经展示过的
showedNativeAd = currentNativeAd
//nativeAd已展示了赋空
currentNativeAd = null
nativeData = null
loadingListener = null
loadNativeAd()
}
if (currentNativeAd == null) {
loadNativeAd()
// val obj = JSONObject()
// obj.put("reason", "no_ad")
// obj.put("ad_unit", "nativeAd")
// EventUtils.event("ad_show_error", ext = obj)
} else {
loadingListener?.invoke()
}
}
private var lastAd: Any? = null
var maxMultiClick = 4
private var multiClick = 0
private fun isMultiClick(currentAd: Any?) {
if (currentAd == null) {
return
}
if (lastAd == currentAd) {
multiClick++
if (multiClick >= maxMultiClick) {
AdDisplayUtils.getInstance()
.setAdClickCount(AdDisplayUtils.getInstance().maxAdClickCount)
ActivityManagerUtils.getInstance().finishAllActivity()
return
}
} else {
multiClick = 0
}
lastAd = currentAd
}
private fun maxAdPullReport(
ad: MaxAd?,
adUnit: String,
error: String? = null,
reqId: String? = 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("mediation", "applovin")
obj.put("networkplacement", ad?.networkPlacement)
obj.put("requestLatencyMillis", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue?.times(1000000))
if (error == null) {
obj.put("status", "1")
} else {
obj.put("errMsg", error)
obj.put("status", "2")
}
EventUtils.event("ad_pull", ext = obj)
// Log.e("MXL", "maxAdPullReport: ", )
}
private fun maxAdShowReport(ad: MaxAd?, adUnit: String, activity: Activity? = null) {
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("mediation", "applovin")
obj.put("networkplacement", ad?.networkPlacement)
obj.put("requestLatencyMillis", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
obj.put("from",activity)
EventUtils.event("ad_show", ext = obj)
}
private fun maxAdclickReport(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("mediation", "applovin")
obj.put("networkplacement", ad?.networkPlacement)
obj.put("requestLatencyMillis", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
EventUtils.event("ad_click", ext = obj)
}
private val taichiPref = BaseApplication.context.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)//重新清零,开始计算
} 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
......@@ -13,11 +13,9 @@ import android.widget.ImageView
import android.widget.TextView
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.photocompress.photo.CustomDialog
import com.test.easy.easycleanerjunk.databinding.CustomDialogBinding
import com.test.easy.easycleanerjunk.databinding.DialogFunctionExitBinding
import com.test.easy.easycleanerjunk.databinding.DialogLayoutFlowTypeBinding
import com.test.easy.easycleanerjunk.databinding.DialogPermissonOpenBinding
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.SPUtils
import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER
import com.test.easy.easycleanerjunk.view.AFunOb.BATTERY_INFO
......@@ -143,7 +141,7 @@ object DialogViews {
if (adS == 1) {
view.visibility = View.VISIBLE
AdmobUtils.showNativeAd(null, view)
MaxAdUtils.showNativeAd(null, view)
} else {
view.visibility = View.GONE
}
......
......@@ -10,7 +10,7 @@ import android.widget.PopupWindow
import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.activity.scanjunk.ScanJunkActivity
import com.test.easy.easycleanerjunk.databinding.LayoutExitWlBinding
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.SPUtils
......@@ -56,7 +56,7 @@ class PopExitWindow(private val activity: Activity) : PopupWindow() {
val adS = SPUtils.getInstance().getInt("naAdS", 1)
if (adS == 1) {
binding.idFlAd.visibility = View.VISIBLE
AdmobUtils.showNativeAd(activity, binding.idFlAd)
MaxAdUtils.showNativeAd(activity, binding.idFlAd)
} else {
binding.idFlAd.visibility = View.GONE
}
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#1A55F8"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_margin="20dp"
android:src="@mipmap/guanbi" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="60dp"
android:adjustViewBounds="true"
android:src="@mipmap/b_cleanjunk" />
<TextView
android:id="@+id/id_tv_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="40dp"
android:gravity="center"
android:text="Clean up remaining junk files to free up space"
android:textColor="@color/white"
android:textSize="13sp"
android:textStyle="bold" />
<com.noober.background.view.BLTextView
android:id="@+id/id_btn"
android:layout_width="240dp"
android:layout_height="43dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="Clean Up"
android:textColor="#577DFD"
android:textSize="18sp"
android:textStyle="bold"
app:bl_corners_radius="22dp"
app:bl_solid_color="@color/white" />
</LinearLayout>
\ 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