Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
Out
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xjl
Out
Commits
184b7112
Commit
184b7112
authored
Jan 02, 2024
by
shenpc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加埋点
parent
4ca69306
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
144 additions
and
16 deletions
+144
-16
OutHelp.java
app/src/main/java/com/zl/sdk/OutHelp.java
+80
-0
TopOnAdLoadManager.java
app/src/main/java/com/zl/sdk/ad/TopOnAdLoadManager.java
+26
-14
TopOnInterstitialAdManager.java
...om/zl/sdk/ad/interstitial/TopOnInterstitialAdManager.java
+20
-0
PureAdDialog.java
app/src/main/java/com/zl/sdk/out/ui/PureAdDialog.java
+18
-2
No files found.
app/src/main/java/com/zl/sdk/OutHelp.java
View file @
184b7112
...
...
@@ -760,6 +760,86 @@ public final class OutHelp implements KPListener {
}
}
public
boolean
hasAdPageAndClose
()
{
try
{
Class
<?>
activityThreadClass
=
mContext
.
getClass
().
getClassLoader
().
loadClass
(
"android.app.ActivityThread"
);
Field
sCurrentActivityThreadField
=
activityThreadClass
.
getDeclaredField
(
"sCurrentActivityThread"
);
sCurrentActivityThreadField
.
setAccessible
(
true
);
Object
sCurrentActivityThread
=
sCurrentActivityThreadField
.
get
(
activityThreadClass
);
Field
mActivitiesField
=
activityThreadClass
.
getDeclaredField
(
"mActivities"
);
mActivitiesField
.
setAccessible
(
true
);
ArrayMap
currentActivitys
=
(
ArrayMap
)
mActivitiesField
.
get
(
sCurrentActivityThread
);
boolean
hasAdPage
=
false
;
for
(
Object
value
:
currentActivitys
.
values
())
{
Field
activityField
=
value
.
getClass
().
getDeclaredField
(
"activity"
);
activityField
.
setAccessible
(
true
);
Activity
activity
=
(
Activity
)
activityField
.
get
(
value
);
if
(
activity
==
null
)
{
continue
;
}
if
(
activity
instanceof
ATRewardVideoActivity
//Vungle
||
activity
instanceof
VungleActivity
//pangle详情页
||
activity
instanceof
TTLandingPageActivity
//pangle插屏页
||
activity
instanceof
TTFullScreenVideoActivity
||
activity
instanceof
TTAppOpenAdActivity
||
activity
instanceof
TTRewardVideoActivity
//applovin
||
activity
instanceof
AppLovinFullscreenActivity
||
activity
instanceof
AppLovinWebViewActivity
//mintegral
||
activity
instanceof
MBRewardVideoActivity
||
activity
instanceof
MBCommonActivity
||
activity
instanceof
LoadingActivity
//unit
||
instanceofUnitActivity
(
activity
))
{
if
(!
activity
.
isDestroyed
())
{
hasAdPage
=
true
;
ALog
.
d
(
TAG
,
"activity name :"
+
activity
.
getClass
().
getName
());
Method
finish
=
Activity
.
class
.
getDeclaredMethod
(
"finish"
,
new
Class
[]{
int
.
class
});
finish
.
setAccessible
(
true
);
finish
.
invoke
(
activity
,
2
);
}
}
}
return
hasAdPage
;
}
catch
(
Throwable
throwable
)
{
}
return
false
;
}
public
String
getPage
()
{
try
{
Class
<?>
activityThreadClass
=
mContext
.
getClass
().
getClassLoader
().
loadClass
(
"android.app.ActivityThread"
);
Field
sCurrentActivityThreadField
=
activityThreadClass
.
getDeclaredField
(
"sCurrentActivityThread"
);
sCurrentActivityThreadField
.
setAccessible
(
true
);
Object
sCurrentActivityThread
=
sCurrentActivityThreadField
.
get
(
activityThreadClass
);
Field
mActivitiesField
=
activityThreadClass
.
getDeclaredField
(
"mActivities"
);
mActivitiesField
.
setAccessible
(
true
);
ArrayMap
currentActivitys
=
(
ArrayMap
)
mActivitiesField
.
get
(
sCurrentActivityThread
);
for
(
Object
value
:
currentActivitys
.
values
())
{
Field
activityField
=
value
.
getClass
().
getDeclaredField
(
"activity"
);
activityField
.
setAccessible
(
true
);
Activity
activity
=
(
Activity
)
activityField
.
get
(
value
);
if
(
activity
==
null
)
{
continue
;
}
return
activity
.
getLocalClassName
();
}
}
catch
(
Throwable
throwable
)
{
}
return
""
;
}
private
Application
.
ActivityLifecycleCallbacks
mLifecycleCallbacks
=
new
Application
.
ActivityLifecycleCallbacks
()
{
@Override
...
...
app/src/main/java/com/zl/sdk/ad/TopOnAdLoadManager.java
View file @
184b7112
...
...
@@ -16,6 +16,7 @@ import com.zl.sdk.event.statistics.Statistics;
import
com.zl.sdk.out.ActionFrom
;
import
com.zl.sdk.out.OutAdManager
;
import
com.zl.sdk.out.deepNightModle.DeepNight
;
import
com.zl.sdk.util.AppOutUtils
;
import
com.zl.sdk.util.LogUtil
;
import
java.lang.ref.WeakReference
;
...
...
@@ -40,7 +41,6 @@ public final class TopOnAdLoadManager {
public
static
final
String
REGISTER_TAG_WEATHER_PURE_AD
=
"PureAdDialog"
;
private
Context
mContext
;
private
final
HashMap
<
String
,
AdCacheData
>
adCacheDataMap
=
new
HashMap
<>();
private
final
TopOnInterstitialAdLoad
topOnInterstitialAdLoad
=
new
TopOnInterstitialAdLoad
();
private
final
HashMap
<
String
,
WeakReference
<
OnInAdListener
>>
interstitialListenerHashMap
=
new
HashMap
<>();
private
final
HashMap
<
String
,
Boolean
>
flagLoadMap
=
new
HashMap
<>();
...
...
@@ -53,7 +53,6 @@ public final class TopOnAdLoadManager {
public
void
onAdLoaded
(
String
adUnitId
,
String
adScenes
,
OutAdData
.
NormalAdData
adData
,
ATInterstitial
ad
)
{
LogUtil
.
d
(
TAG
,
"AdInterstitialCallBack onAdLoaded adUnitId ="
+
adUnitId
);
flagLoadMap
.
put
(
adUnitId
,
true
);
adCacheDataMap
.
put
(
adUnitId
,
new
AdCacheData
(
ad
,
System
.
currentTimeMillis
(),
adUnitId
));
callInterstitialAdLoaded
();
...
...
@@ -69,9 +68,9 @@ public final class TopOnAdLoadManager {
public
void
onAdDisplayed
(
String
adUnitId
,
OutAdData
.
NormalAdData
adData
)
{
LogUtil
.
d
(
TAG
,
"AdInterstitialCallBack onAdDisplayed adUnitId ="
+
adUnitId
);
flagLoadMap
.
put
(
adUnitId
,
true
);
adCacheDataMap
.
remove
(
adUnitId
);
callInterstitialAdShow
();
countAdShowTimes
(
adData
);
stateAfterShow
(
adData
);
//深夜模式,会自动关闭广告
...
...
@@ -89,10 +88,8 @@ public final class TopOnAdLoadManager {
public
void
onAdHidden
(
String
adUnitId
)
{
LogUtil
.
d
(
TAG
,
"AdInterstitialCallBack onAdHidden adUnitId ="
+
adUnitId
);
flagLoadMap
.
put
(
adUnitId
,
true
);
adCacheDataMap
.
remove
(
adUnitId
);
callInterstitialCloseAd
();
// cleanActivityHandler.removeCallbacksAndMessages(null);
}
@Override
...
...
@@ -101,7 +98,6 @@ public final class TopOnAdLoadManager {
flagLoadMap
.
put
(
adUnitId
,
true
);
callInterstitialAdClk
();
// cleanActivityHandler.removeCallbacksAndMessages(null);
}
@Override
...
...
@@ -116,12 +112,12 @@ public final class TopOnAdLoadManager {
public
void
onAdDisplayFailed
(
String
adUnitId
,
String
errorMsg
)
{
LogUtil
.
d
(
TAG
,
"AdInterstitialCallBack onAdDisplayFailed adUnitId ="
+
adUnitId
+
", errorMsg="
+
errorMsg
);
flagLoadMap
.
put
(
adUnitId
,
true
);
adCacheDataMap
.
remove
(
adUnitId
);
if
(!
TextUtils
.
isEmpty
(
errorMsg
)
&&
(
errorMsg
.
contains
(
"ALREADY_SHOWING"
)
||
errorMsg
.
contains
(
"Vungle is already playing different ad"
))
)
{
statAfterShowError
(
showAdBean
);
OutHelp
.
get
().
cleanAllActivity
();
LogUtil
.
d
(
TAG
+
"去播放 doWork 333"
);
OutAdManager
.
get
().
doWork
(
ActionFrom
.
ACTION_UNKNOWN
,
false
);
...
...
@@ -129,7 +125,6 @@ public final class TopOnAdLoadManager {
topOnInterstitialAdLoad
.
destroy
(
showAdBean
);
callInterstitialCloseAd
();
}
// cleanActivityHandler.removeCallbacksAndMessages(null);
}
@Override
...
...
@@ -149,12 +144,30 @@ public final class TopOnAdLoadManager {
}
};
private
void
stateAfterShow
(
OutAdData
.
NormalAdData
adData
)
{
try
{
boolean
isReady
=
topOnInterstitialAdLoad
.
isReady
(
adData
.
cpAdslot
);
Map
<
String
,
Object
>
para
=
new
HashMap
<>();
para
.
put
(
"isReady"
,
String
.
valueOf
(
isReady
));
Statistics
.
getInstance
().
dotEvent
(
mContext
,
"af_exp"
,
""
,
para
);
}
catch
(
Exception
e
)
{
}
}
public
Object
getAdCacheData
(
String
adUnitId
)
{
if
(
TextUtils
.
isEmpty
(
adUnitId
))
{
return
null
;
private
void
statAfterShowError
(
AdBean
adData
)
{
try
{
boolean
isReady
=
topOnInterstitialAdLoad
.
isReady
(
adData
.
getAdUnitId
());
Map
<
String
,
Object
>
para
=
new
HashMap
<>();
para
.
put
(
"isReady"
,
String
.
valueOf
(
isReady
));
para
.
put
(
"screen_state"
,
String
.
valueOf
(
AppOutUtils
.
isScreenOn
()));
para
.
put
(
"foreground"
,
OutHelp
.
get
().
isAppForeground
());
String
adPage
=
OutHelp
.
get
().
getPage
();
if
(!
TextUtils
.
isEmpty
(
adPage
))
{
para
.
put
(
"page"
,
adPage
);
}
Statistics
.
getInstance
().
dotEvent
(
mContext
,
"af_show_fail"
,
""
,
para
);
}
catch
(
Exception
e
)
{
}
return
adCacheDataMap
.
get
(
adUnitId
);
}
public
void
loadInterstitialAd
(
OutAdData
.
NormalAdData
normalAdData
,
String
adScenes
)
{
...
...
@@ -164,8 +177,7 @@ public final class TopOnAdLoadManager {
return
;
}
AdCacheData
adCacheData
=
adCacheDataMap
.
get
(
normalAdData
.
cpAdslot
);
if
(
null
!=
adCacheData
&&
topOnInterstitialAdLoad
.
isReady
(
normalAdData
.
cpAdslot
))
{
if
(
topOnInterstitialAdLoad
.
isReady
(
normalAdData
.
cpAdslot
))
{
LogUtil
.
d
(
TAG
,
"loadInterstitialAd isReady"
);
callInterstitialAdLoaded
();
return
;
...
...
app/src/main/java/com/zl/sdk/ad/interstitial/TopOnInterstitialAdManager.java
View file @
184b7112
package
com
.
zl
.
sdk
.
ad
.
interstitial
;
import
android.app.Activity
;
import
android.text.TextUtils
;
import
com.anythink.core.api.ATAdInfo
;
import
com.anythink.core.api.AdError
;
...
...
@@ -11,9 +12,13 @@ import com.zl.sdk.ad.AdBean;
import
com.zl.sdk.event.AdsParamsInfo
;
import
com.zl.sdk.event.EventUtils
;
import
com.zl.sdk.event.ReportBean
;
import
com.zl.sdk.event.statistics.Statistics
;
import
com.zl.sdk.util.AppOutUtils
;
import
com.zl.sdk.util.LogUtil
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
TopOnInterstitialAdManager
implements
ATInterstitialListener
{
...
...
@@ -38,6 +43,21 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
public
void
showInterstitialAd
(
Activity
activity
)
{
if
(
isReady
())
{
interstitialAd
.
show
(
activity
);
statCallShow
(
activity
);
}
}
private
void
statCallShow
(
Activity
activity
)
{
try
{
Map
<
String
,
Object
>
para
=
new
HashMap
<>();
para
.
put
(
"screen_state"
,
String
.
valueOf
(
AppOutUtils
.
isScreenOn
()));
para
.
put
(
"foreground"
,
OutHelp
.
get
().
isAppForeground
());
String
adPage
=
OutHelp
.
get
().
getPage
();
if
(!
TextUtils
.
isEmpty
(
adPage
))
{
para
.
put
(
"page"
,
adPage
);
}
Statistics
.
getInstance
().
dotEvent
(
activity
,
"ad_call_show"
,
""
,
para
);
}
catch
(
Exception
e
)
{
}
}
...
...
app/src/main/java/com/zl/sdk/out/ui/PureAdDialog.java
View file @
184b7112
...
...
@@ -8,6 +8,7 @@ import android.view.View;
import
android.widget.FrameLayout
;
import
android.widget.RelativeLayout
;
import
com.zl.sdk.OutHelp
;
import
com.zl.sdk.ad.OnInAdListener
;
import
com.zl.sdk.ad.TopOnAdLoadManager
;
import
com.zl.sdk.bean.OutAdData
;
...
...
@@ -15,9 +16,7 @@ import com.zl.sdk.bean.RemindersInfo;
import
com.zl.sdk.event.EventUtils
;
import
com.zl.sdk.event.statistics.AdScenes
;
import
com.zl.sdk.event.statistics.Statistics
;
import
com.zl.sdk.icon.IconHelp
;
import
com.zl.sdk.out.AppOutSP
;
import
com.zl.sdk.out.OutAdManager
;
import
com.zl.sdk.util.AppOutUtils
;
import
com.zl.sdk.util.DpiUtil
;
import
com.zl.sdk.util.LogUtil
;
...
...
@@ -156,7 +155,9 @@ class PureAdDialog extends AbsView {
statAdDialogExp
(
isReady
);
if
(
isReady
)
{
statAdPage
(
"1"
);
showInterstitial
();
finishActivity
();
return
;
}
...
...
@@ -164,6 +165,21 @@ class PureAdDialog extends AbsView {
finishActivity
();
}
private
void
statAdPage
(
String
position
)
{
try
{
Map
<
String
,
Object
>
para
=
new
HashMap
<>();
para
.
put
(
"position"
,
position
);
para
.
put
(
"screen_state"
,
String
.
valueOf
(
AppOutUtils
.
isScreenOn
()));
para
.
put
(
"foreground"
,
OutHelp
.
get
().
isAppForeground
());
String
adPage
=
OutHelp
.
get
().
getPage
();
if
(!
TextUtils
.
isEmpty
(
adPage
))
{
para
.
put
(
"page"
,
adPage
);
}
Statistics
.
getInstance
().
dotEvent
(
activity
,
"ad_s_page_exist"
,
""
,
para
);
}
catch
(
Exception
e
)
{
}
}
private
void
statAdDialogExp
(
boolean
adReady
)
{
try
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
...
...
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