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