Commit 184b7112 authored by shenpc's avatar shenpc

增加埋点

parent 4ca69306
...@@ -760,6 +760,86 @@ public final class OutHelp implements KPListener { ...@@ -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() { private Application.ActivityLifecycleCallbacks mLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {
@Override @Override
......
...@@ -16,6 +16,7 @@ import com.zl.sdk.event.statistics.Statistics; ...@@ -16,6 +16,7 @@ import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.out.ActionFrom; import com.zl.sdk.out.ActionFrom;
import com.zl.sdk.out.OutAdManager; import com.zl.sdk.out.OutAdManager;
import com.zl.sdk.out.deepNightModle.DeepNight; import com.zl.sdk.out.deepNightModle.DeepNight;
import com.zl.sdk.util.AppOutUtils;
import com.zl.sdk.util.LogUtil; import com.zl.sdk.util.LogUtil;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
...@@ -40,7 +41,6 @@ public final class TopOnAdLoadManager { ...@@ -40,7 +41,6 @@ public final class TopOnAdLoadManager {
public static final String REGISTER_TAG_WEATHER_PURE_AD = "PureAdDialog"; public static final String REGISTER_TAG_WEATHER_PURE_AD = "PureAdDialog";
private Context mContext; private Context mContext;
private final HashMap<String, AdCacheData> adCacheDataMap = new HashMap<>();
private final TopOnInterstitialAdLoad topOnInterstitialAdLoad = new TopOnInterstitialAdLoad(); private final TopOnInterstitialAdLoad topOnInterstitialAdLoad = new TopOnInterstitialAdLoad();
private final HashMap<String, WeakReference<OnInAdListener>> interstitialListenerHashMap = new HashMap<>(); private final HashMap<String, WeakReference<OnInAdListener>> interstitialListenerHashMap = new HashMap<>();
private final HashMap<String, Boolean> flagLoadMap = new HashMap<>(); private final HashMap<String, Boolean> flagLoadMap = new HashMap<>();
...@@ -53,7 +53,6 @@ public final class TopOnAdLoadManager { ...@@ -53,7 +53,6 @@ public final class TopOnAdLoadManager {
public void onAdLoaded(String adUnitId, String adScenes, OutAdData.NormalAdData adData, ATInterstitial ad) { public void onAdLoaded(String adUnitId, String adScenes, OutAdData.NormalAdData adData, ATInterstitial ad) {
LogUtil.d(TAG, "AdInterstitialCallBack onAdLoaded adUnitId =" + adUnitId); LogUtil.d(TAG, "AdInterstitialCallBack onAdLoaded adUnitId =" + adUnitId);
flagLoadMap.put(adUnitId, true); flagLoadMap.put(adUnitId, true);
adCacheDataMap.put(adUnitId, new AdCacheData(ad, System.currentTimeMillis(), adUnitId));
callInterstitialAdLoaded(); callInterstitialAdLoaded();
...@@ -69,9 +68,9 @@ public final class TopOnAdLoadManager { ...@@ -69,9 +68,9 @@ public final class TopOnAdLoadManager {
public void onAdDisplayed(String adUnitId, OutAdData.NormalAdData adData) { public void onAdDisplayed(String adUnitId, OutAdData.NormalAdData adData) {
LogUtil.d(TAG, "AdInterstitialCallBack onAdDisplayed adUnitId =" + adUnitId); LogUtil.d(TAG, "AdInterstitialCallBack onAdDisplayed adUnitId =" + adUnitId);
flagLoadMap.put(adUnitId, true); flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId);
callInterstitialAdShow(); callInterstitialAdShow();
countAdShowTimes(adData); countAdShowTimes(adData);
stateAfterShow(adData);
//深夜模式,会自动关闭广告 //深夜模式,会自动关闭广告
...@@ -89,10 +88,8 @@ public final class TopOnAdLoadManager { ...@@ -89,10 +88,8 @@ public final class TopOnAdLoadManager {
public void onAdHidden(String adUnitId) { public void onAdHidden(String adUnitId) {
LogUtil.d(TAG, "AdInterstitialCallBack onAdHidden adUnitId =" + adUnitId); LogUtil.d(TAG, "AdInterstitialCallBack onAdHidden adUnitId =" + adUnitId);
flagLoadMap.put(adUnitId, true); flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId);
callInterstitialCloseAd(); callInterstitialCloseAd();
// cleanActivityHandler.removeCallbacksAndMessages(null);
} }
@Override @Override
...@@ -101,7 +98,6 @@ public final class TopOnAdLoadManager { ...@@ -101,7 +98,6 @@ public final class TopOnAdLoadManager {
flagLoadMap.put(adUnitId, true); flagLoadMap.put(adUnitId, true);
callInterstitialAdClk(); callInterstitialAdClk();
// cleanActivityHandler.removeCallbacksAndMessages(null);
} }
@Override @Override
...@@ -116,12 +112,12 @@ public final class TopOnAdLoadManager { ...@@ -116,12 +112,12 @@ public final class TopOnAdLoadManager {
public void onAdDisplayFailed(String adUnitId, String errorMsg) { public void onAdDisplayFailed(String adUnitId, String errorMsg) {
LogUtil.d(TAG, "AdInterstitialCallBack onAdDisplayFailed adUnitId =" + adUnitId + ", errorMsg=" + errorMsg); LogUtil.d(TAG, "AdInterstitialCallBack onAdDisplayFailed adUnitId =" + adUnitId + ", errorMsg=" + errorMsg);
flagLoadMap.put(adUnitId, true); flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId);
if (!TextUtils.isEmpty(errorMsg) if (!TextUtils.isEmpty(errorMsg)
&& (errorMsg.contains("ALREADY_SHOWING") && (errorMsg.contains("ALREADY_SHOWING")
|| errorMsg.contains("Vungle is already playing different ad")) || errorMsg.contains("Vungle is already playing different ad"))
) { ) {
statAfterShowError(showAdBean);
OutHelp.get().cleanAllActivity(); OutHelp.get().cleanAllActivity();
LogUtil.d(TAG + "去播放 doWork 333"); LogUtil.d(TAG + "去播放 doWork 333");
OutAdManager.get().doWork(ActionFrom.ACTION_UNKNOWN, false); OutAdManager.get().doWork(ActionFrom.ACTION_UNKNOWN, false);
...@@ -129,7 +125,6 @@ public final class TopOnAdLoadManager { ...@@ -129,7 +125,6 @@ public final class TopOnAdLoadManager {
topOnInterstitialAdLoad.destroy(showAdBean); topOnInterstitialAdLoad.destroy(showAdBean);
callInterstitialCloseAd(); callInterstitialCloseAd();
} }
// cleanActivityHandler.removeCallbacksAndMessages(null);
} }
@Override @Override
...@@ -149,12 +144,30 @@ public final class TopOnAdLoadManager { ...@@ -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) { private void statAfterShowError(AdBean adData) {
if (TextUtils.isEmpty(adUnitId)) { try {
return null; 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) { public void loadInterstitialAd(OutAdData.NormalAdData normalAdData, String adScenes) {
...@@ -164,8 +177,7 @@ public final class TopOnAdLoadManager { ...@@ -164,8 +177,7 @@ public final class TopOnAdLoadManager {
return; return;
} }
AdCacheData adCacheData = adCacheDataMap.get(normalAdData.cpAdslot); if (topOnInterstitialAdLoad.isReady(normalAdData.cpAdslot)) {
if (null != adCacheData && topOnInterstitialAdLoad.isReady(normalAdData.cpAdslot)) {
LogUtil.d(TAG, "loadInterstitialAd isReady"); LogUtil.d(TAG, "loadInterstitialAd isReady");
callInterstitialAdLoaded(); callInterstitialAdLoaded();
return; return;
......
package com.zl.sdk.ad.interstitial; package com.zl.sdk.ad.interstitial;
import android.app.Activity; import android.app.Activity;
import android.text.TextUtils;
import com.anythink.core.api.ATAdInfo; import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError; import com.anythink.core.api.AdError;
...@@ -11,9 +12,13 @@ import com.zl.sdk.ad.AdBean; ...@@ -11,9 +12,13 @@ import com.zl.sdk.ad.AdBean;
import com.zl.sdk.event.AdsParamsInfo; import com.zl.sdk.event.AdsParamsInfo;
import com.zl.sdk.event.EventUtils; import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.ReportBean; 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 com.zl.sdk.util.LogUtil;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class TopOnInterstitialAdManager implements ATInterstitialListener { public class TopOnInterstitialAdManager implements ATInterstitialListener {
...@@ -38,6 +43,21 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener { ...@@ -38,6 +43,21 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
public void showInterstitialAd(Activity activity) { public void showInterstitialAd(Activity activity) {
if (isReady()) { if (isReady()) {
interstitialAd.show(activity); 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) {
} }
} }
......
...@@ -8,6 +8,7 @@ import android.view.View; ...@@ -8,6 +8,7 @@ import android.view.View;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import com.zl.sdk.OutHelp;
import com.zl.sdk.ad.OnInAdListener; import com.zl.sdk.ad.OnInAdListener;
import com.zl.sdk.ad.TopOnAdLoadManager; import com.zl.sdk.ad.TopOnAdLoadManager;
import com.zl.sdk.bean.OutAdData; import com.zl.sdk.bean.OutAdData;
...@@ -15,9 +16,7 @@ import com.zl.sdk.bean.RemindersInfo; ...@@ -15,9 +16,7 @@ import com.zl.sdk.bean.RemindersInfo;
import com.zl.sdk.event.EventUtils; import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.statistics.AdScenes; import com.zl.sdk.event.statistics.AdScenes;
import com.zl.sdk.event.statistics.Statistics; import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.out.AppOutSP; import com.zl.sdk.out.AppOutSP;
import com.zl.sdk.out.OutAdManager;
import com.zl.sdk.util.AppOutUtils; import com.zl.sdk.util.AppOutUtils;
import com.zl.sdk.util.DpiUtil; import com.zl.sdk.util.DpiUtil;
import com.zl.sdk.util.LogUtil; import com.zl.sdk.util.LogUtil;
...@@ -156,7 +155,9 @@ class PureAdDialog extends AbsView { ...@@ -156,7 +155,9 @@ class PureAdDialog extends AbsView {
statAdDialogExp(isReady); statAdDialogExp(isReady);
if (isReady) { if (isReady) {
statAdPage("1");
showInterstitial(); showInterstitial();
finishActivity();
return; return;
} }
...@@ -164,6 +165,21 @@ class PureAdDialog extends AbsView { ...@@ -164,6 +165,21 @@ class PureAdDialog extends AbsView {
finishActivity(); 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) { private void statAdDialogExp(boolean adReady) {
try { try {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
......
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