Commit fb53b85a authored by xujialang's avatar xujialang

场景判断不通过时事件上报参数调整

删除原生广告代码
拉起外展弹窗限制5秒内不能重复执行
修复播放次数重置问题
新增unity广告源
新增拉起弹窗时退出所有应用内页面逻辑
parent 240fdb9e
......@@ -82,6 +82,10 @@ dependencies {
api "com.vungle:vungle-ads:7.0.0"
api "com.google.android.gms:play-services-basement:18.1.0"
api "com.google.android.gms:play-services-ads-identifier:18.0.1"
//UnityAds
api "com.anythink.sdk:adapter-unityads:6.2.81"
api "com.unity3d.ads:unity-ads:4.9.2"
}
task makeJar(type: Copy) {
......
......@@ -239,5 +239,53 @@
android:label="@string/ept_lable"
tools:replace="android:icon, android:excludeFromRecents, android:label" />
<!-- mintegral end-->
<!-- unity start-->
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:excludeFromRecents="true"
android:icon="@android:drawable/divider_horizontal_bright"
android:label="@string/ept_lable"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
tools:replace="android:icon, android:excludeFromRecents, android:label" />
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitTransparentActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:excludeFromRecents="true"
android:icon="@android:drawable/divider_horizontal_bright"
android:label="@string/ept_lable"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
tools:replace="android:icon, android:excludeFromRecents, android:label" />
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:excludeFromRecents="true"
android:icon="@android:drawable/divider_horizontal_bright"
android:label="@string/ept_lable"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
tools:replace="android:icon, android:excludeFromRecents, android:label" />
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitSoftwareActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:excludeFromRecents="true"
android:icon="@android:drawable/divider_horizontal_bright"
android:label="@string/ept_lable"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
tools:replace="android:icon, android:excludeFromRecents, android:label" />
<activity
android:name="com.unity3d.ads.adplayer.FullScreenWebViewDisplay"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:excludeFromRecents="true"
android:icon="@android:drawable/divider_horizontal_bright"
android:label="@string/ept_lable"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
tools:replace="android:icon, android:excludeFromRecents, android:label" />
<!-- unity end-->
</application>
</manifest>
\ No newline at end of file
......@@ -43,4 +43,7 @@ public interface KPListener {
* 显示icon
*/
void showIcon();
void cleanAllAppActivity();
}
......@@ -225,4 +225,9 @@ public class NameInterfaceHelp {
* 显示icon的方法名称
*/
public static String ShowIconMethod = "doActionSw";
/**
* 清除所有应用内页面
*/
public static String CleanAllAppActivityMethod = "cleanAllAppActivity";
}
......@@ -18,6 +18,7 @@ import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.icon.IcOptManager;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.out.ActionFrom;
import com.zl.sdk.out.AppOutSP;
import com.zl.sdk.out.DialogShowStatusCallback;
import com.zl.sdk.out.OutAdManager;
import com.zl.sdk.util.LogUtil;
......@@ -63,6 +64,7 @@ public final class OutHelp implements KPListener {
public void setLastShowTime() {
lastShowTime = System.currentTimeMillis();
AppOutSP.saveOutLastShowTime(System.currentTimeMillis());
}
public long getLastShowTime() {
......@@ -196,7 +198,7 @@ public final class OutHelp implements KPListener {
Method registerMethod = kpClass.getMethod(NameInterfaceHelp.RegisterActionMethod, listenerClass);
LogUtil.d(TAG + "registerAction registerMethod =" + registerMethod.getName());
registerMethod.invoke(null,listenerProxy);
registerMethod.invoke(null, listenerProxy);
} catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException |
IllegalAccessException e) {
......@@ -398,6 +400,8 @@ public final class OutHelp implements KPListener {
public void startOutDialog(Intent intent, DialogShowStatusCallback callback) {
LogUtil.d(TAG + "拉起外展");
cleanAllAppActivity();
try {
String fgPath = NameInterfaceHelp.getFGClassPath();
Class<?> fgClass = Class.forName(fgPath);
......@@ -492,6 +496,18 @@ public final class OutHelp implements KPListener {
}
@Override
public void cleanAllAppActivity() {
try {
Class<?> kpClass = Class.forName(NameInterfaceHelp.getClassPath());
Method clsMethod = kpClass.getMethod(NameInterfaceHelp.CleanAllAppActivityMethod);
clsMethod.invoke(null);
} catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException |
IllegalAccessException e) {
LogUtil.d(TAG + "cleanAllAppActivity (catch) " + e.getMessage());
}
}
/**
* 动态代理fg拉起弹窗回调方法
*/
......@@ -584,7 +600,6 @@ public final class OutHelp implements KPListener {
}
}
private Application.ActivityLifecycleCallbacks mLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityStopped(Activity activity) {
......
package com.zl.sdk.ad;
import static com.zl.sdk.bean.OutAdData.CP_AD_TOPON;
import static com.zl.sdk.bean.OutAdData.CP_AD_TYPE_CHAPING;
import android.text.TextUtils;
......@@ -65,12 +64,10 @@ public class AdDataManager {
for (OutAdData.NormalAdData data : list) {
LogUtil.d(TAG + "getOutAdData data.cpAdtype =" + data.cpAdtype + " ,cpName :" + cpName + ",,," + data.cpName);
if (cpName.equalsIgnoreCase(data.cpName)) {
if (CP_AD_TYPE_CHAPING.equals(data.cpAdtype)) {
LogUtil.d(TAG + "getOutAdData data = " + data);
cpNameList.add(data);
}
}
}
LogUtil.d(TAG + "getOutAdData list size =" + cpNameList.size());
......
package com.zl.sdk.ad;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import com.anythink.interstitial.api.ATInterstitial;
import com.anythink.nativead.api.ATNativeAdView;
import com.zl.sdk.OutHelp;
import com.zl.sdk.ad.interstitial.TopOnAdInterstitialCallBack;
import com.zl.sdk.ad.interstitial.TopOnInterstitialAdLoad;
import com.zl.sdk.ad.natives.TopOnAdNativeCallBack;
import com.zl.sdk.ad.natives.TopOnNativeAdManager;
import com.zl.sdk.bean.OutAdData;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.statistics.Statistics;
......@@ -32,16 +25,12 @@ import java.util.Map;
public final class TopOnAdLoadManager {
public static final String TAG = "OutShow TopOnAdLoadManager";
public static final String REGISTER_TAG_WEATHER_PURE_AD = "WeatherPureAdDialog";
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 TopOnNativeAdManager topOnNativeAdManager = new TopOnNativeAdManager();
private final HashMap<String, WeakReference<OnInAdListener>> interstitialListenerHashMap = new HashMap<>();
private final HashMap<String, WeakReference<OnInAdListener>> nativeListenerHashMap = new HashMap<>();
private final HashMap<String, Boolean> flagLoadMap = new HashMap<>();
private TopOnAdInterstitialCallBack adInterstitialCallBack = new TopOnAdInterstitialCallBack() {
@Override
......@@ -50,25 +39,14 @@ public final class TopOnAdLoadManager {
flagLoadMap.put(adUnitId, true);
adCacheDataMap.put(adUnitId, new AdCacheData(ad, System.currentTimeMillis(), adUnitId));
// AppOutNotifyManager.getInstance().resetOutAdFailCount();
callInterstitialAdLoaded();
OutAdManager.get().cleanLoadAdFailTime();
// if (OutHelp.get().firstLoadAd) {
// LogUtil.d(TAG + "第一次加载广告 不播放");
// OutHelp.get().firstLoadAd = false;
// } else {
//只要有广告加载成功就去走播放逻辑
// new Handler().postDelayed(() -> {
//加载成功,调用播放纯广告逻辑
LogUtil.d(TAG + "加载广告完成 去播放 doWork 222");
OutAdManager.get().doWork(ActionFrom.ACTION_UNKNOWN);
// }, IconHelp.get().isIconHide() ? 0 : 1000);
// }
}
@Override
......@@ -98,7 +76,6 @@ public final class TopOnAdLoadManager {
@Override
public void onAdLoadFailed(String adUnitId, String errorMsg) {
LogUtil.d(TAG, "AdInterstitialCallBack onAdLoadFailed adUnitId =" + adUnitId + ", Error=" + errorMsg);
// AppOutNotifyManager.getInstance().loadOutAdFail();
flagLoadMap.put(adUnitId, true);
OutAdManager.get().showAdFail();
callInterstitialNotAd(null == errorMsg ? "" : errorMsg);
......@@ -117,83 +94,13 @@ public final class TopOnAdLoadManager {
LogUtil.d(TAG, "AdInterstitialCallBack onAdRevenuePaid adUnitId =" + adUnitId);
}
};
private TopOnAdNativeCallBack adNativeCallBack = new TopOnAdNativeCallBack() {
@Override
public void onNativeAdLoaded(String adUnitId, String adScenes, OutAdData.NormalAdData adData, @Nullable ATNativeAdView atNative) {
LogUtil.d(TAG, "AdNativeCallBack onNativeAdLoaded adUnitId =" + adUnitId);
if (null == atNative) {
Statistics.getInstance().onEvent(OutHelp.get().getContext(), EventUtils.TOPON_LOAD_SUCCESS_BUT_CALLBACK_NULL, "");
}
adCacheDataMap.put(adUnitId, new AdCacheData(atNative, System.currentTimeMillis(), adUnitId));
flagLoadMap.put(adUnitId, true);
callNativeAdLoaded();
// if (OutHelp.get().firstLoadAd) {
// OutHelp.get().firstLoadAd = false;
// } else {
//只要有广告加载成功就去走播放逻辑
// new Handler().postDelayed(() -> {
//加载成功,调用播放纯广告逻辑
LogUtil.d(TAG + "doWork 333");
OutAdManager.get().doWork(ActionFrom.ACTION_UNKNOWN);
// }, 1000L);
// }
}
@Override
public void onNativeAdLoadFailed(String adUnitId, String errorMsg) {
LogUtil.d(TAG, "AdNativeCallBack onNativeAdLoadFailed adUnitId =" + adUnitId + ", errorMsg=" + errorMsg);
flagLoadMap.put(adUnitId, true);
OutAdManager.get().showAdFail();
callNativeNotAd(null == errorMsg ? "" : errorMsg.toString());
}
@Override
public void onNativeAdClicked(String adUnitId) {
LogUtil.d(TAG, "AdNativeCallBack onNativeAdClicked adUnitId =" + adUnitId);
flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId);
callNativeAdClk();
}
@Override
public void onNativeAdExpired(String adUnitId) {
LogUtil.d(TAG, "AdNativeCallBack onNativeAdExpired adUnitId =" + adUnitId);
flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId);
callNativeCacheTimeOut();
}
@Override
public void onAdRevenuePaid(String adUnitId) {
LogUtil.d(TAG, "AdNativeCallBack onAdRevenuePaid adUnitId =" + adUnitId);
}
@Override
public void onAdImpression(String adUnitId, OutAdData.NormalAdData adData) {
LogUtil.d(TAG, "AdNativeCallBack onAdImpression adUnitId=" + adUnitId);
flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId);
callNativeAdShow();
countAdShowTimes(adData);
}
@Override
public void onCloseAd() {
callNativeCloseAd();
}
};
private TopOnAdLoadManager() {
mContext = OutHelp.get().getContext();
}
private static class Holder {
@SuppressLint("StaticFieldLeak")
private static final TopOnAdLoadManager INSTANCE = new TopOnAdLoadManager();
}
......@@ -252,7 +159,7 @@ public final class TopOnAdLoadManager {
try {
AdBean adBean = AdBean.getInstance(adScenes)
.setAdUnitId(normalAdData.cpAdslot)
.setAdPosition("home")
.setAdPosition("out")
.setAdData(normalAdData);
topOnInterstitialAdLoad.loadInterstitialAd(adBean, adInterstitialCallBack);
} catch (Exception e) {
......@@ -261,11 +168,8 @@ public final class TopOnAdLoadManager {
}
}
private AdBean showingAdBean = null;
public void showInterstitialAd(Activity activity, AdBean adBean) {
LogUtil.d(TAG, "showInterstitialAd really");
showingAdBean = adBean;
topOnInterstitialAdLoad.showInterstitialAd(activity, adBean);
}
......@@ -285,61 +189,41 @@ public final class TopOnAdLoadManager {
return true;
}
public boolean isNativeReady(String adUnitId) {
AdCacheData adCacheData = adCacheDataMap.get(adUnitId);
if (null != adCacheData
&& adCacheData.object instanceof ATNativeAdView
&& !((AdCacheData) adCacheData).isNativeTimeout()) {
LogUtil.d(TAG, "loadNativeAd isReady");
return true;
}
return false;
}
public void showInterstitialAd(Activity activity, OutAdData.NormalAdData normalAdData, String adScenes) {
if (null == normalAdData || TextUtils.isEmpty(normalAdData.cpAdslot)) {
LogUtil.d(TAG, "showInterstitialAd data or adId empty");
callInterstitialNotAd(AdErrorMessage.AD_DATA_IS_NULL_OR_NOT_ADUNITID);
return;
}
String adType = normalAdData.cpAdtype;
if (TextUtils.isEmpty(adType)) {
LogUtil.d(TAG, "showInterstitialAd adType empty");
callInterstitialNotAd(AdErrorMessage.NOT_ADTYPE);
return;
}
// String adType = normalAdData.cpAdtype;
// if (TextUtils.isEmpty(adType)) {
// LogUtil.d(TAG, "showInterstitialAd adType empty");
// callInterstitialNotAd(AdErrorMessage.NOT_ADTYPE);
// return;
// }
String cpName = normalAdData.cpName;
if (TextUtils.isEmpty(cpName)) {
LogUtil.d(TAG, "showInterstitialAd cpName empty");
callInterstitialNotAd(AdErrorMessage.NOT_AD_CP);
return;
}
if (!cpName.equalsIgnoreCase(OutAdData.CP_AD_TOPON)) {
LogUtil.d(TAG, "showInterstitialAd adCp not support");
callInterstitialNotAd(AdErrorMessage.AD_CP_NOT_SUPPORT);
return;
}
if (!topOnInterstitialAdLoad.isReady(normalAdData.cpAdslot)) {
LogUtil.d(TAG, "showInterstitialAd ad no Ready");
callInterstitialNotAd(AdErrorMessage.AD_NOT_CACHE);
return;
}
boolean adScenesSupport = false;
if (normalAdData.position == OutAdData.POSITION_HOME) {
LogUtil.d(TAG, "showInterstitialAd AdScenes HOME");
adScenesSupport = true;
} else if (normalAdData.position == OutAdData.POSITION_LOCK) {
LogUtil.d(TAG, "showInterstitialAd AdScenes LOCK");
adScenesSupport = true;
}
if (!adScenesSupport) {
LogUtil.d(TAG, "showInterstitialAd adScenes no Support");
callInterstitialNotAd(AdErrorMessage.AD_SCENES_NOT_SUPPORT);
return;
}
AdBean adBean = AdBean.getInstance(adScenes).setAdUnitId(normalAdData.cpAdslot)
.setAdPosition("home")
.setAdPosition("out")
.setAdData(normalAdData);
showInterstitialAd(activity, adBean);
......@@ -350,136 +234,6 @@ public final class TopOnAdLoadManager {
Statistics.getInstance().onEvent(mContext, EventUtils.LOAD_CACHE_AD, "", para);
}
private void statInterstitialAdLoadedState(boolean isScreenOn, boolean isLock) {
Map<String, Object> map = new HashMap<>();
map.put("isScreenOn", String.valueOf(isScreenOn));
map.put("isLock", String.valueOf(isLock));
Statistics.getInstance().dotEvent(mContext, "it_state", "", map);
}
private void statNativeAdLoadedState(boolean isScreenOn, boolean isLock) {
Map<String, Object> map = new HashMap<>();
map.put("isScreenOn", String.valueOf(isScreenOn));
map.put("isLock", String.valueOf(isLock));
Statistics.getInstance().dotEvent(mContext, "nt_state", "", map);
}
public void loadNativeAd(OutAdData.NormalAdData normalAdData, String adScenes) {
if (null == normalAdData || TextUtils.isEmpty(normalAdData.cpAdslot)) {
LogUtil.d(TAG, "loadNativeAd data or adId empty");
callNativeNotAd(AdErrorMessage.AD_DATA_IS_NULL_OR_NOT_ADUNITID);
return;
}
AdCacheData adCacheData = adCacheDataMap.get(normalAdData.cpAdslot);
if (null != adCacheData && adCacheData.object instanceof ATNativeAdView) {
LogUtil.d(TAG, "loadNativeAd isReady");
callNativeAdLoaded();
return;
}
Boolean canLoadAd = flagLoadMap.get(normalAdData.cpAdslot);
if (null != canLoadAd && !canLoadAd) {
LogUtil.d(TAG, "loadNativeAd canLoadAd loading");
return;
}
String adType = normalAdData.cpAdtype;
if (TextUtils.isEmpty(adType)) {
LogUtil.d(TAG, "loadNativeAd adType empty");
callNativeNotAd(AdErrorMessage.NOT_ADTYPE);
return;
}
String cpName = normalAdData.cpName;
if (TextUtils.isEmpty(cpName)) {
LogUtil.d(TAG, "loadNativeAd cpName empty");
callNativeNotAd(AdErrorMessage.NOT_AD_CP);
return;
}
if (!cpName.equalsIgnoreCase(OutAdData.CP_AD_TOPON)) {
LogUtil.d(TAG, "loadNativeAd adCp not support");
callNativeNotAd(AdErrorMessage.AD_CP_NOT_SUPPORT);
return;
}
flagLoadMap.put(normalAdData.cpAdslot, false);
// int layoutId = 0;
// if (normalAdData.adStyle == 3) {
// layoutId = R.layout.m_small_template_view;
// } else if (normalAdData.adStyle == 4 || normalAdData.adStyle == 5) {
// layoutId = R.layout.m_medium_template_view;
// }
try {
AdBean bean = AdBean.getInstance(adScenes).setAdUnitId(normalAdData.cpAdslot)
.setAdPosition("home")
.setNativeTemplate(normalAdData.adStyle)
.setAdData(normalAdData);
LogUtil.d(TAG, "loadNativeAd bean=" + bean);
topOnNativeAdManager.showNative(bean, adNativeCallBack);
} catch (Exception e) {
flagLoadMap.put(normalAdData.cpAdslot, true);
callNativeNotAd(e.toString());
}
}
public void showNativeAd(OutAdData.NormalAdData normalAdData, LinearLayout adContent) {
if (null == normalAdData || TextUtils.isEmpty(normalAdData.cpAdslot)) {
LogUtil.d(TAG, "showNativeAd data or adId empty");
callNativeNotAd(AdErrorMessage.AD_DATA_IS_NULL_OR_NOT_ADUNITID);
return;
}
String adType = normalAdData.cpAdtype;
if (TextUtils.isEmpty(adType)) {
LogUtil.d(TAG, "showNativeAd adType empty");
callNativeNotAd(AdErrorMessage.NOT_ADTYPE);
return;
}
String cpName = normalAdData.cpName;
if (TextUtils.isEmpty(cpName)) {
LogUtil.d(TAG, "showNativeAd cpName empty");
callNativeNotAd(AdErrorMessage.NOT_AD_CP);
return;
}
if (!cpName.equalsIgnoreCase(OutAdData.CP_AD_TOPON)) {
LogUtil.d(TAG, "showNativeAd adCp not support");
callNativeNotAd(AdErrorMessage.AD_CP_NOT_SUPPORT);
return;
}
AdCacheData adCacheData = adCacheDataMap.get(normalAdData.cpAdslot);
if (null == adCacheData || null == adCacheData.object) {
LogUtil.d(TAG, "showNativeAd ad no Ready");
callNativeNotAd(AdErrorMessage.AD_NOT_CACHE);
return;
}
if (adCacheData.isNativeTimeout()) {
LogUtil.d(TAG, "showNativeAd ad Timeout");
adCacheDataMap.remove(normalAdData.cpAdslot);
callNativeCacheTimeOut();
return;
}
new Handler().post(() -> {
if (adCacheData.object instanceof ATNativeAdView) {
adContent.setVisibility(View.VISIBLE);
adContent.removeAllViews();
adCacheDataMap.remove(normalAdData.cpAdslot);
ATNativeAdView adView = (ATNativeAdView) adCacheData.object;
if (adView.getParent() == null) {
adContent.addView(adView);
}
} else {
adCacheDataMap.remove(normalAdData.cpAdslot);
callNativeNotAd(AdErrorMessage.AD_TYPE_VIEW_ERROR);
}
});
}
private void callNativeNotAd(String errorMessage) {
callNotAd(nativeListenerHashMap, errorMessage);
}
private void callInterstitialNotAd(String errorMessage) {
callNotAd(interstitialListenerHashMap, errorMessage);
}
......@@ -512,10 +266,6 @@ public final class TopOnAdLoadManager {
}
}
private void callNativeAdLoaded() {
callAdLoaded(nativeListenerHashMap);
}
private void callInterstitialAdLoaded() {
callAdLoaded(interstitialListenerHashMap);
}
......@@ -548,21 +298,12 @@ public final class TopOnAdLoadManager {
}
}
private void callNativeAdShow() {
// stop5MinTimer();
// OutAdManager.get().refreshShowAdNowRule(android.os.Process.myPid(), false);
callAdShow(nativeListenerHashMap);
}
private void callInterstitialAdShow() {
// stop5MinTimer();
// OutAdManager.get().refreshShowAdNowRule(android.os.Process.myPid(), false);
callAdShow(interstitialListenerHashMap);
}
private void callAdShow(HashMap<String, WeakReference<OnInAdListener>> listenerHashMap) {
LogUtil.d("OutShow 重置最后展示时间");
// AppOutSP.saveHomeLastShowTime(System.currentTimeMillis());
OutHelp.get().setLastShowTime();
Iterator<Map.Entry<String, WeakReference<OnInAdListener>>> iterator = listenerHashMap.entrySet().iterator();
......@@ -592,14 +333,7 @@ public final class TopOnAdLoadManager {
}
}
private void callNativeCloseAd() {
callCloseAd(nativeListenerHashMap);
}
private void callInterstitialCloseAd() {
// stop5MinTimer();
// OutAdManager.get().refreshShowAdNowRule(android.os.Process.myPid(), false);
topOnInterstitialAdLoad.destroy(showingAdBean);
callCloseAd(interstitialListenerHashMap);
}
......@@ -634,10 +368,6 @@ public final class TopOnAdLoadManager {
adClosed();
}
private void callNativeAdClk() {
callAdClk(nativeListenerHashMap);
}
private void callInterstitialAdClk() {
callAdClk(interstitialListenerHashMap);
}
......@@ -670,72 +400,19 @@ public final class TopOnAdLoadManager {
}
}
private void callNativeCacheTimeOut() {
callCacheTimeOut(nativeListenerHashMap);
}
private void callInterstitialCacheTimeOut() {
callCacheTimeOut(interstitialListenerHashMap);
}
private void callCacheTimeOut(HashMap<String, WeakReference<OnInAdListener>> listenerHashMap) {
Iterator<Map.Entry<String, WeakReference<OnInAdListener>>> iterator = listenerHashMap.entrySet().iterator();
ArrayList<String> deleteKeys = new ArrayList<>();
while (iterator.hasNext()) {
Map.Entry<String, WeakReference<OnInAdListener>> entry = iterator.next();
WeakReference<OnInAdListener> reference = entry.getValue();
if (reference != null) {
OnInAdListener adListener = reference.get();
if (adListener != null) {
adListener.cacheDataTimeOut();
} else {
String key = entry.getKey();
if (!TextUtils.isEmpty(key)) {
deleteKeys.add(key);
}
}
} else {
String key = entry.getKey();
if (!TextUtils.isEmpty(key)) {
deleteKeys.add(key);
}
}
}
for (String key : deleteKeys) {
listenerHashMap.remove(key);
}
}
public void registerCallBack(String adType, String tag, OnInAdListener onInAdListener) {
if (TextUtils.isEmpty(adType)) {
return;
}
switch (adType) {
case OutAdData.CP_AD_TYPE_CHAPING:
registerInterstitialCallBack(tag, onInAdListener);
break;
case OutAdData.CP_AD_TYPE_NATIVE:
registerNativeCallBack(tag, onInAdListener);
break;
default:
break;
}
}
public void unregisterCallBack(String adType, String tag) {
if (TextUtils.isEmpty(adType)) {
return;
}
switch (adType) {
case OutAdData.CP_AD_TYPE_CHAPING:
unregisterInterstitialCallBack(tag);
break;
case OutAdData.CP_AD_TYPE_NATIVE:
unregisterNativeCallBack(tag);
break;
default:
break;
}
}
public void registerInterstitialCallBack(String tag, OnInAdListener onInAdListener) {
......@@ -743,11 +420,6 @@ public final class TopOnAdLoadManager {
registerCallBack(interstitialListenerHashMap, tag, onInAdListener);
}
public void registerNativeCallBack(String tag, OnInAdListener onInAdListener) {
LogUtil.d(TAG, "registerNativeCallBack tag =" + tag);
registerCallBack(nativeListenerHashMap, tag, onInAdListener);
}
public void registerCallBack(HashMap<String, WeakReference<OnInAdListener>> listenerHashMap, String tag, OnInAdListener onInAdListener) {
if (TextUtils.isEmpty(tag)) {
return;
......@@ -776,11 +448,6 @@ public final class TopOnAdLoadManager {
unregisterCallBack(interstitialListenerHashMap, tag);
}
public void unregisterNativeCallBack(String tag) {
LogUtil.d(TAG, "unregisterNativeCallBack tag =" + tag);
unregisterCallBack(nativeListenerHashMap, tag);
}
private void unregisterCallBack(HashMap<String, WeakReference<OnInAdListener>> listenerHashMap, String tag) {
if (TextUtils.isEmpty(tag)) {
return;
......
......@@ -14,13 +14,7 @@ import java.util.List;
@Keep
public class OutAdData extends BaseWeatherBean {
public static final String CP_AD_TOPON = "topon";
public static final String CP_AD_PANGLE = "Pangle";
public static final String CP_ADMOD_PARTNER_ADMOD = "admob";
public static final String CP_ADMOD_PARTNER_FACEBOOK = "facebook";
public final static String CP_AD_TYPE_BANNER = "1";//BannerAd
public final static String CP_AD_TYPE_NATIVE = "2";//NativeAd
public final static String CP_AD_TYPE_CHAPING = "3";//ChaPing
public final static String CP_AD_TYPE_CHAPING = "3";
//1=应用每天总展示次数类型
public static final int CONFIG_TYPE_APP_SHOW_TIMES = 1;
......@@ -38,14 +32,9 @@ public class OutAdData extends BaseWeatherBean {
public final static int POSITION_LOCK = 10001;
//桌面
public final static int POSITION_HOME = 10002;
//在屏幕的展示位置类型
public final static int SHOW_TOP = 1;
public final static int SHOW_MID = 2;
public final static int SHOW_BOTTOM = 3;
//自营类
public final static int AD_SELF_FLAG = 1;
public final static int AD_OTHER_FLAG = 0;
@SerializedName("data")
private Data data;
......
......@@ -11,7 +11,9 @@ public enum DialogFailReason {
EXIST_OUT,
NO_DATA,
INTERVAL_TIME,
INTERVAL_TIME_START_DIALOG,
COUNT_EXCEEDS,
NATIVE_EXCEEDS,
CP_EXCEEDS,
NOT_READY,
}
......@@ -50,13 +50,19 @@ public final class EventUtils {
public static final String REMINDER_DIALOG_FG_SURPRISE_START = "reminder_dg_fg_surprise_start";
public static final String SCENES_SHOW = "show";
public static final String SCENES_CHECK = "check";
public static final String SCENES_LOAD = "load";
//外展弹窗事件
public static void staDialogFail(DialogFailReason reason, int actionState, String type) {
public static void staDialogFail(DialogFailReason reason, int actionState, String scenes, String type) {
Map<String, Object> map = new HashMap<>();
map.put("reason", reason.name().toLowerCase());
map.put("action", String.valueOf(actionState));
map.put("type", type);
map.put("hide", String.valueOf(IconHelp.get().isIconHide()));
map.put("scenes", scenes);
Statistics.getInstance().dotEvent(OutHelp.get().getContext(), OUT_DIALOG_FAIL, "", map);
}
......@@ -100,16 +106,8 @@ public final class EventUtils {
return;
}
String type = "";
if (adType.equals(OutAdData.CP_AD_TYPE_BANNER)) {
type = "banner";
} else if (adType.equals(OutAdData.CP_AD_TYPE_NATIVE)) {
type = "native";
} else if (adType.equals(OutAdData.CP_AD_TYPE_CHAPING)) {
type = "interstitial";
}
String scene = "home";
String type = "interstitial";
String scene = "out";
Map<String, Object> map = new HashMap<>();
map.put("adUnitId", data.cpAdslot);
......
......@@ -7,65 +7,29 @@ public final class AppOutSP {
private static final String TAG = "AppOutSP";
private static final String APP_OUT_PREF_FILE_NAME = "pref_app_out_file";
private static final String KEY_LOCK_NATIVE_AD_DAY_SHOW_COUNT = "lock_native_ad_day_show_count";
private static final String KEY_LOCK_INTERSTITIAL_AD_DAY_SHOW_COUNT = "lock_interstitial_ad_day_show_count";
private static final String KEY_HOME_NATIVE_AD_DAY_SHOW_COUNT = "home_native_ad_day_show_count";
private static final String KEY_HOME_INTERSTITIAL_AD_DAY_SHOW_COUNT = "home_interstitial_ad_day_show_count";
private static final String KEY_LOCK_LAST_SHOW_TIME = "lock_last_show_time";
private static final String KEY_HOME_LAST_SHOW_TIME = "home_last_show_time";
private static final String KEY_OUT_INTERSTITIAL_AD_DAY_SHOW_COUNT = "out_interstitial_ad_day_show_count";
private static final String KEY_OUT_LAST_SHOW_TIME = "out_last_show_time";
private static final String KEY_OUT_AD_DIALOG_CLOSE_LAST_TIME = "out_ad_dialog_close_last_time";
private static final String KEY_IS_APP_FIRST_START = "is_app_first_start_in_devices";
public static void saveLockNativeAdDayShowCount(int value) {
getAppOutPref().put(KEY_LOCK_NATIVE_AD_DAY_SHOW_COUNT, value);
public static void saveOutInterstitialAdDayShowCount(int value) {
getAppOutPref().put(KEY_OUT_INTERSTITIAL_AD_DAY_SHOW_COUNT, value);
}
public static int getLockNativeAdDayShowCount() {
return getAppOutPref().getInt(KEY_LOCK_NATIVE_AD_DAY_SHOW_COUNT, 0);
public static int getOutInterstitialAdDayShowCount() {
return getAppOutPref().getInt(KEY_OUT_INTERSTITIAL_AD_DAY_SHOW_COUNT, 0);
}
public static void saveLockInterstitialAdDayShowCount(int value) {
getAppOutPref().put(KEY_LOCK_INTERSTITIAL_AD_DAY_SHOW_COUNT, value);
}
public static int getLockInterstitialAdDayShowCount() {
return getAppOutPref().getInt(KEY_LOCK_INTERSTITIAL_AD_DAY_SHOW_COUNT, 0);
}
public static void saveHomeNativeAdDayShowCount(int value) {
getAppOutPref().put(KEY_HOME_NATIVE_AD_DAY_SHOW_COUNT, value);
}
public static int getHomeNativeAdDayShowCount() {
return getAppOutPref().getInt(KEY_HOME_NATIVE_AD_DAY_SHOW_COUNT, 0);
}
public static void saveHomeInterstitialAdDayShowCount(int value) {
getAppOutPref().put(KEY_HOME_INTERSTITIAL_AD_DAY_SHOW_COUNT, value);
public static void saveOutLastShowTime(long value) {
getAppOutPref().put(KEY_OUT_LAST_SHOW_TIME, value);
}
public static int getHomeInterstitialAdDayShowCount() {
return getAppOutPref().getInt(KEY_HOME_INTERSTITIAL_AD_DAY_SHOW_COUNT, 0);
public static long getOutLastShowTime() {
return getAppOutPref().getLong(KEY_OUT_LAST_SHOW_TIME, 0);
}
public static void saveLockLastShowTime(long value) {
getAppOutPref().put(KEY_LOCK_LAST_SHOW_TIME, value);
}
public static long getLockLastShowTime() {
return getAppOutPref().getLong(KEY_LOCK_LAST_SHOW_TIME, 0);
}
// public static void saveHomeLastShowTime(long value) {
// getAppOutPref().put(KEY_HOME_LAST_SHOW_TIME, value);
// }
//
// public static long getHomeLastShowTime() {
// return getAppOutPref().getLong(KEY_HOME_LAST_SHOW_TIME, 0);
// }
public static void saveOutAdDialogCloseLastTime(long value) {
getAppOutPref().put(KEY_OUT_AD_DIALOG_CLOSE_LAST_TIME, value);
}
......
......@@ -23,7 +23,7 @@ public class CheckHelper {
* 检查当前场景是否能播放外展广告
* 解锁/回到桌面 触发展示的外展广告
*/
public static boolean checkAdCanShowByScene(int actionState) {
public static boolean checkAdCanShowByScene(int actionState, String scenes) {
// boolean isInit = OutHelp.get().isInit();
// if (!isInit) {
// LogUtil.d(TAG + "(场景检查)保活未初始化,不能展示");
......@@ -45,25 +45,25 @@ public class CheckHelper {
if (!AppOutUtils.isScreenOn()) {
LogUtil.d(TAG + "(场景检查)手机未亮屏,不能展示");
EventUtils.staDialogFail(DialogFailReason.SCREEN_OFF, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.SCREEN_OFF, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
if (isTelephonyCalling()) {
LogUtil.d(TAG + "(场景检查)通话中,不能展示");
EventUtils.staDialogFail(DialogFailReason.CALLING, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.CALLING, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
if (OutHelp.get().isAppForeground()) {
LogUtil.d(TAG + "(场景检查)应用在前台,不能展示");
EventUtils.staDialogFail(DialogFailReason.IS_FOREGROUND, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.IS_FOREGROUND, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
if (AppOutUtils.isScreenLock()) {
LogUtil.d(TAG + "(场景检查)锁屏中,不能展示");
EventUtils.staDialogFail(DialogFailReason.LOCK, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.LOCK, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
......@@ -116,34 +116,33 @@ public class CheckHelper {
// }
/**
* 检查广告能否播放
* 广告次数检查
*
* @param data 广告数据
* @param actionState 触发场景
* @return
*/
public static boolean checkCanShowAd(OutAdData.NormalAdData data, int actionState) {
return checkCanShowAdByTimesFromAdData(data, actionState);
}
// /**
// * 检查广告能否播放
// * 广告次数检查
// *
// * @param data 广告数据
// * @param actionState 触发场景
// * @return
// */
// public static boolean checkCanShowAd(OutAdData.NormalAdData data, int actionState) {
// return checkCanShowAdByTimesFromAdData(data, actionState);
// }
/**
* 检查广告数据是否可以播放
*/
public static boolean checkCanShowAdByTimesFromAdData(OutAdData.NormalAdData data, int actionState) {
public static boolean checkCanShowAdByTimesFromAdData(OutAdData.NormalAdData data, int actionState, String scenes) {
if (data == null) {
LogUtil.d(TAG + "(次数检查)广告信息为空 不能播放");
EventUtils.staDialogFail(DialogFailReason.NO_DATA, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.NO_DATA, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
long curTime = System.currentTimeMillis();
long lastShowTime = OutHelp.get().getLastShowTime();
long showIntervalTime = Math.abs(curTime - lastShowTime);
long showIntervalTime = Math.abs(curTime - OutHelp.get().getLastShowTime());
LogUtil.d(TAG + "(次数检查)上次展示时间=" + lastShowTime);
LogUtil.d(TAG + "(次数检查)上次展示时间=" + OutHelp.get().getLastShowTime());
long spaceTime;
......@@ -158,20 +157,18 @@ public class CheckHelper {
if (showIntervalTime < spaceTime) {
LogUtil.d(TAG + "(次数检查)未到间隔时间 不能播放");
EventUtils.staDialogFail(DialogFailReason.INTERVAL_TIME, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.INTERVAL_TIME, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
int homeNativeAdDayShowCount = AppOutSP.getHomeNativeAdDayShowCount();
int homeInterstitialAdDayShowCount = AppOutSP.getHomeInterstitialAdDayShowCount();
int homeDayShowCount = homeNativeAdDayShowCount + homeInterstitialAdDayShowCount;
int homeInterstitialAdDayShowCount = AppOutSP.getOutInterstitialAdDayShowCount();
int homeDayShowCount = homeInterstitialAdDayShowCount;
if (!isSameDay(curTime, lastShowTime)) {
if (!isSameDay(curTime, AppOutSP.getOutLastShowTime())) {
LogUtil.d(TAG + "(次数检查)上次播放不是今天 重置播放次数");
homeDayShowCount = 0;
homeNativeAdDayShowCount = 0;
homeInterstitialAdDayShowCount = 0;
AppOutSP.saveHomeNativeAdDayShowCount(0);
AppOutSP.saveHomeInterstitialAdDayShowCount(0);
AppOutSP.saveOutInterstitialAdDayShowCount(0);
}
if (OutHelp.get().iconIsHide()) {
......@@ -179,7 +176,7 @@ public class CheckHelper {
LogUtil.d(TAG + "(次数检查)总次数 (icon隐藏) 配置次数=" + data.showTimeHide);
if (homeDayShowCount >= data.showTimeHide) {
LogUtil.d(TAG + "(次数检查)总次数 (icon隐藏) 超过播放次数");
EventUtils.staDialogFail(DialogFailReason.COUNT_EXCEEDS, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.COUNT_EXCEEDS, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
} else {
......@@ -187,25 +184,7 @@ public class CheckHelper {
LogUtil.d(TAG + "(次数检查)总次数 (icon未隐藏) 配置次数=" + data.showCount);
if (homeDayShowCount >= data.showCount) {
LogUtil.d(TAG + "(次数检查)总次数 (icon未隐藏) 超过播放次数");
EventUtils.staDialogFail(DialogFailReason.COUNT_EXCEEDS, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
}
if (OutHelp.get().iconIsHide()) {
LogUtil.d(TAG + "(次数检查)原生 (icon隐藏) 当前次数=" + homeNativeAdDayShowCount);
LogUtil.d(TAG + "(次数检查)原生 (icon隐藏) 配置次数=" + data.showTimesHideForAdId);
if (OutAdData.CP_AD_TYPE_NATIVE.equals(data.cpAdtype) && (homeNativeAdDayShowCount >= data.showTimesHideForAdId)) {
LogUtil.d(TAG + "(次数检查)原生 (icon隐藏) 超过播放次数");
EventUtils.staDialogFail(DialogFailReason.NATIVE_EXCEEDS, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
} else {
LogUtil.d(TAG + "(次数检查)原生 (icon未隐藏) 当前次数=" + homeNativeAdDayShowCount);
LogUtil.d(TAG + "(次数检查)原生 (icon未隐藏) 配置次数=" + data.showTimes);
if (OutAdData.CP_AD_TYPE_NATIVE.equals(data.cpAdtype) && (homeNativeAdDayShowCount >= data.showTimes)) {
LogUtil.d(TAG + "(次数检查)原生 (icon未隐藏) 超过播放次数");
EventUtils.staDialogFail(DialogFailReason.NATIVE_EXCEEDS, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.COUNT_EXCEEDS, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
}
......@@ -213,17 +192,17 @@ public class CheckHelper {
if (OutHelp.get().iconIsHide()) {
LogUtil.d(TAG + "(次数检查)插屏 (icon隐藏) 当前次数=" + homeInterstitialAdDayShowCount);
LogUtil.d(TAG + "(次数检查)插屏 (icon隐藏) 配置次数=" + data.showTimesHideForAdId);
if (OutAdData.CP_AD_TYPE_CHAPING.equals(data.cpAdtype) && (homeInterstitialAdDayShowCount >= data.showTimesHideForAdId)) {
if (homeInterstitialAdDayShowCount >= data.showTimesHideForAdId) {
LogUtil.d(TAG + "(次数检查)插屏 (icon隐藏) 超过播放次数");
EventUtils.staDialogFail(DialogFailReason.CP_EXCEEDS, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.CP_EXCEEDS, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
} else {
LogUtil.d(TAG + "(次数检查)插屏 (icon未隐藏) 当前次数=" + homeInterstitialAdDayShowCount);
LogUtil.d(TAG + "(次数检查)插屏 (icon未隐藏) 配置次数=" + data.showTimes);
if (OutAdData.CP_AD_TYPE_CHAPING.equals(data.cpAdtype) && (homeInterstitialAdDayShowCount >= data.showTimes)) {
if (homeInterstitialAdDayShowCount >= data.showTimes) {
LogUtil.d(TAG + "(次数检查)插屏 (icon未隐藏) 超过播放次数");
EventUtils.staDialogFail(DialogFailReason.CP_EXCEEDS, actionState, EventUtils.DIALOG_TYPE_AD);
EventUtils.staDialogFail(DialogFailReason.CP_EXCEEDS, actionState, scenes, EventUtils.DIALOG_TYPE_AD);
return false;
}
}
......@@ -245,18 +224,15 @@ public class CheckHelper {
/**
* 检查广告是否准备好
*/
public static boolean checkAdReady(OutAdData.NormalAdData data) {
public static boolean checkAdReady(OutAdData.NormalAdData data, String scenes) {
if (data == null) {
return false;
}
boolean ready = false;
if (OutAdData.CP_AD_TYPE_CHAPING.equals(data.cpAdtype)) {
ready = TopOnAdLoadManager.getInstance().isInterstitialReady(data.cpName, data.cpAdslot);
} else if (OutAdData.CP_AD_TYPE_NATIVE.equals(data.cpAdtype)) {
ready = TopOnAdLoadManager.getInstance().isNativeReady(data.cpAdslot);
}
boolean ready = TopOnAdLoadManager.getInstance().isInterstitialReady(data.cpName, data.cpAdslot);
LogUtil.d(TAG + "(缓存检查)是否有缓存:" + ready);
if (!ready) {
EventUtils.staDialogFail(DialogFailReason.NOT_READY, -1, scenes, EventUtils.DIALOG_TYPE_AD);
}
return ready;
}
......
......@@ -13,6 +13,7 @@ import com.zl.sdk.ad.AdDataManager;
import com.zl.sdk.ad.TopOnAdLoadManager;
import com.zl.sdk.bean.OutAdData;
import com.zl.sdk.bean.RemindersInfo;
import com.zl.sdk.event.DialogFailReason;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.statistics.AdScenes;
import com.zl.sdk.event.statistics.Statistics;
......@@ -44,10 +45,12 @@ public class OutAdManager extends BaseOutShowManager {
//展示广告失败次数
private int showAdFailTimes = 0;
//是否重试了
private volatile boolean hadStartAdDialogFail = false;
//上次拉起外展弹窗时间
private long lastStartAdDialogTime = 0L;
//限制不能重复拉起外展弹窗的时间
private final long startAdDialogIntervalTime = 5 * 1000L;
public void cleanLoadAdFailTime() {
showAdFailTimes = 0;
......@@ -83,26 +86,15 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil.d(TAG + "广告信息=" + adData);
boolean canShowByScene = CheckHelper.checkAdCanShowByScene(actionState);
boolean adDataCanShow = CheckHelper.checkCanShowAd(adData, actionState);
boolean adReady = CheckHelper.checkAdReady(adData);
boolean canShowByScene = CheckHelper.checkAdCanShowByScene(actionState, EventUtils.SCENES_SHOW);
boolean adDataCanShow = CheckHelper.checkCanShowAdByTimesFromAdData(adData, actionState, EventUtils.SCENES_SHOW);
boolean adReady = CheckHelper.checkAdReady(adData, EventUtils.SCENES_SHOW);
LogUtil.d(TAG + "能否播放(场景检查) :" + canShowByScene);
LogUtil.d(TAG + "能否播放(次数检查):" + adDataCanShow);
LogUtil.d(TAG + "能否播放(缓存检查) :" + adReady);
return canShowByScene && adDataCanShow && adReady;
//TODO 去掉原生数据
/* if (adDataCanShow) {
return true;
} else {
LogUtil.d(TAG + "检查其他广告信息=" + adData);
adData = getNextAdData(adData.cpAdtype);
adDataCanShow = CheckHelper.checkCanShowAd(adData, actionState);
LogUtil.d(TAG + "能否播放(次数和缓存):" + adDataCanShow);
return adDataCanShow;
}*/
}
......@@ -271,7 +263,7 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告");
LogUtil.d(TAG);
boolean canShowByScene = CheckHelper.checkAdCanShowByScene(actionFrom.getAction());
boolean canShowByScene = CheckHelper.checkAdCanShowByScene(actionFrom.getAction(), EventUtils.SCENES_LOAD);
if (canShowByScene) {
LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告 场景检测通过,去加载广告");
......@@ -299,6 +291,8 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil.d(TAG);
LogUtil.d(TAG + ">>>广告逻辑结束<<< ===> END 返回失败");
LogUtil.d(TAG);
}
......@@ -306,6 +300,15 @@ public class OutAdManager extends BaseOutShowManager {
* 去拉起外展弹窗 播放or加载广告
*/
private void startAdDialog(Context context, ActionFrom actionFrom, RemindersInfo remindersInfo, OutAdData.NormalAdData data) {
if (System.currentTimeMillis() - lastStartAdDialogTime <= startAdDialogIntervalTime) {
EventUtils.staDialogFail(DialogFailReason.INTERVAL_TIME_START_DIALOG, actionFrom.getAction(), EventUtils.SCENES_SHOW, EventUtils.DIALOG_TYPE_AD);
LogUtil.d(TAG + "拉起外展弹窗失败 : 5秒内不能重复拉起");
return;
}
lastStartAdDialogTime = System.currentTimeMillis();
try {
Intent intent = new Intent();
intent.setComponent(new ComponentName(context, OutHelp.get().getActivityName()));
......@@ -320,9 +323,6 @@ public class OutAdManager extends BaseOutShowManager {
AppOutUtils.unlockSystem();
}
//TODO 清除隐藏的Activity
// LaunchStart.getInstance().cleanAllActivityExcludeAds();
DxManager.get().setOutRemindersInfo(remindersInfo);
DxManager.get().setOutAdData(data);
......@@ -355,18 +355,18 @@ public class OutAdManager extends BaseOutShowManager {
private void outDialogShowFail(Context context, ActionFrom actionFrom, RemindersInfo remindersInfo, OutAdData.NormalAdData data, String reason) {
LogUtil.d(TAG, "广告弹窗 拉起失败 失败原因:" + reason);
try {
EventUtils.statRemindOutFgSurpriseStart(EventUtils.SLK_START_NO, reason, true, actionFrom.getAction());
OutHelp.get().clearNotification();
if (!hadStartAdDialogFail) {
LogUtil.d(TAG, "广告弹窗 拉起失败 重试一次");
hadStartAdDialogFail = true;
startAdDialog(context, actionFrom, remindersInfo, data);
new Handler().postDelayed(() -> startAdDialog(context, actionFrom, remindersInfo, data), startAdDialogIntervalTime);
} else {
LogUtil.d(TAG + "广告弹窗 拉起失败 已经重试一次,不再重试");
LogUtil.d(TAG + "广告弹窗 拉起失败 ,不再重试");
returnFailCallBack(reason);
}
EventUtils.statRemindOutFgSurpriseStart(EventUtils.SLK_START_NO, reason, true, actionFrom.getAction());
} catch (Throwable ignored) {
}
}
......@@ -374,9 +374,9 @@ public class OutAdManager extends BaseOutShowManager {
private void outDialogShowSuccess(ActionFrom actionFrom) {
LogUtil.d(TAG + "广告弹窗(播放) 拉起成功");
try {
returnSuccessCallBack();
EventUtils.statRemindOutFgSurpriseStart(EventUtils.SLK_START_OK, "", true, actionFrom.getAction());
} catch (Throwable throwable) {
returnSuccessCallBack();
} catch (Throwable ignored) {
}
}
......@@ -406,8 +406,8 @@ public class OutAdManager extends BaseOutShowManager {
OutAdData.NormalAdData localData = getAdData();
if (localData != null
&& CheckHelper.checkCanShowAdByTimesFromAdData(localData, -1)
&& !CheckHelper.checkAdReady(localData)) {
&& CheckHelper.checkCanShowAdByTimesFromAdData(localData, -1, EventUtils.SCENES_CHECK)
&& !CheckHelper.checkAdReady(localData, EventUtils.SCENES_CHECK)) {
LogUtil.d(TAG);
LogUtil.d(TAG + ">>>加载广告<<< =============>>> END 加载广告(使用本地数据)");
LogUtil.d(TAG);
......@@ -423,18 +423,14 @@ public class OutAdManager extends BaseOutShowManager {
OutAdData.NormalAdData preLoadData;
for (int i = 0; i < size; i++) {
preLoadData = list.get(i);
//TODO 如果外展广告为原生,跳过加载
if (OutAdData.CP_AD_TYPE_NATIVE.equals(preLoadData.cpAdtype)) {
continue;
}
LogUtil.d(TAG + ">>>加载广告<<< index:" + i + " 检查广告能否加载:" + preLoadData);
if (CheckHelper.checkCanShowAdByTimesFromAdData(preLoadData, -1)
&& !CheckHelper.checkAdReady(preLoadData)) {
if (CheckHelper.checkCanShowAdByTimesFromAdData(preLoadData, -1, EventUtils.SCENES_CHECK)
&& !CheckHelper.checkAdReady(preLoadData, EventUtils.SCENES_CHECK)) {
LogUtil.d(TAG);
LogUtil.d(TAG + ">>>加载广告<<< =============>>> END 加载广告");
......@@ -462,20 +458,11 @@ public class OutAdManager extends BaseOutShowManager {
return;
}
// if (WeatherAdData.CP_AD_TYPE_NATIVE.equals(normalAdData.cpAdtype)) {
// LogUtil.d(TAG + "加载广告(原生) adData :" + normalAdData);
// TopOnAdLoadManager.getInstance().loadNativeAd(normalAdData, AdScenes.AD_SCENES_PURE);
// } else
if (OutAdData.CP_AD_TYPE_CHAPING.equals(normalAdData.cpAdtype)) {
LogUtil.d(TAG + "加载广告(插屏) adData :" + normalAdData);
hadStartAdDialogFail = false;
LogUtil.d(TAG + ">>>加载广告<<< =============>>> END 去加载广告");
TopOnAdLoadManager.getInstance().loadInterstitialAd(normalAdData, AdScenes.AD_SCENES_PURE);
// startAdDialog(OutHelp.get().getContext(), false, actionFrom, getReminderInfo(), normalAdData);
}
}
......@@ -484,41 +471,11 @@ public class OutAdManager extends BaseOutShowManager {
if (adData == null) {
return;
}
final long curTime = System.currentTimeMillis();
if (adData.position == OutAdData.POSITION_LOCK) {
AppOutSP.saveLockLastShowTime(curTime);
if (OutAdData.CP_AD_TYPE_NATIVE.equals(adData.cpAdtype)) {
int lockNativeAdDayDayShowCount = AppOutSP.getLockNativeAdDayShowCount();
AppOutSP.saveLockNativeAdDayShowCount(++lockNativeAdDayDayShowCount);
LogUtil.d(TAG, "showAdSuccess native lockNativeAdDayDayShowCount =" + lockNativeAdDayDayShowCount);
return;
}
if (OutAdData.CP_AD_TYPE_CHAPING.equals(adData.cpAdtype)) {
int lockInterstitialAdDayShowCount = AppOutSP.getLockInterstitialAdDayShowCount();
AppOutSP.saveLockInterstitialAdDayShowCount(++lockInterstitialAdDayShowCount);
LogUtil.d(TAG, "showAdSuccess interstitial lockInterstitialAdDayShowCount =" + lockInterstitialAdDayShowCount);
return;
}
return;
}
if (adData.position == OutAdData.POSITION_HOME) {
if (OutAdData.CP_AD_TYPE_NATIVE.equals(adData.cpAdtype)) {
int homeNativeAdDayShowCount = AppOutSP.getHomeNativeAdDayShowCount();
AppOutSP.saveHomeNativeAdDayShowCount(++homeNativeAdDayShowCount);
LogUtil.d(TAG, "showAdSuccess native homeNativeAdDayShowCount =" + homeNativeAdDayShowCount);
}
if (OutAdData.CP_AD_TYPE_CHAPING.equals(adData.cpAdtype)) {
int homeInterstitialAdDayShowCount = AppOutSP.getHomeInterstitialAdDayShowCount();
AppOutSP.saveHomeInterstitialAdDayShowCount(++homeInterstitialAdDayShowCount);
LogUtil.d(TAG, "showAdSuccess interstitial homeInterstitialAdDayShowCount =" + homeInterstitialAdDayShowCount);
}
}
int outInterstitialAdDayShowCount = AppOutSP.getOutInterstitialAdDayShowCount();
AppOutSP.saveOutInterstitialAdDayShowCount(++outInterstitialAdDayShowCount);
LogUtil.d(TAG, "showAdSuccess interstitial outInterstitialAdDayShowCount =" + outInterstitialAdDayShowCount);
}
public void adClosed() {
// LogUtil.d(TAG + ">>>广告<<< =============>>> 广告关闭,再去加载广告");
// checkNeedLoadAd(ActionFrom.ACTION_UNKNOWN);
}
}
\ No newline at end of file
......@@ -3,6 +3,6 @@ package com.zl.sdk.out.ui;
import android.app.Activity;
public abstract class AbsView implements IView {
private static final String TAG = "OutWeatherDialog";
private static final String TAG = "OutDialog";
protected Activity activity;
}
\ No newline at end of file
......@@ -8,6 +8,6 @@ public final class DialogFactory {
if (remindersInfo == null) {
return null;
}
return new WeatherPureAdDialog(remindersInfo, data);
return new PureAdDialog(remindersInfo, data);
}
}
......@@ -23,17 +23,14 @@ import com.zl.sdk.util.LogUtil;
import java.util.HashMap;
import java.util.Map;
class WeatherPureAdDialog extends AbsView {
private static final String TAG = "WeatherPureAdDialog";
private FrameLayout rootView;
class PureAdDialog extends AbsView {
private static final String TAG = "PureAdDialog";
private RemindersInfo remindersInfo;
private OutAdData.NormalAdData data;
private View contentView;
// private LinearLayout weatherAdContainer;
private OnInAdListener onInAdListener;
public WeatherPureAdDialog(RemindersInfo remindersInfo, OutAdData.NormalAdData data) {
public PureAdDialog(RemindersInfo remindersInfo, OutAdData.NormalAdData data) {
this.remindersInfo = remindersInfo;
this.data = data;
}
......@@ -41,7 +38,6 @@ class WeatherPureAdDialog extends AbsView {
@Override
public void onCreate(Activity activity, Intent intent, FrameLayout rootView) {
this.activity = activity;
this.rootView = rootView;
if (data == null) {
finishActivity();
return;
......@@ -62,14 +58,6 @@ class WeatherPureAdDialog extends AbsView {
private void initView() {
// contentView = getContentView();
// FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
// FrameLayout.LayoutParams.MATCH_PARENT,
// FrameLayout.LayoutParams.WRAP_CONTENT
// );
//
// rootView.addView(contentView, params);
// weatherAdContainer = contentView.findViewById(R.id.weatherAdContainer);
}
private View getContentView() {
......@@ -109,26 +97,13 @@ class WeatherPureAdDialog extends AbsView {
finishActivity();
return;
}
if (adType.equals(OutAdData.CP_AD_TYPE_BANNER)) {
LogUtil.d(TAG + "initAd adType banner");
finishActivity();
return;
}
registerCallBack(adType);
if (adType.equals(OutAdData.CP_AD_TYPE_CHAPING)) {
checkCanShowItAd(cpName, adUnitId);
return;
}
// if (adType.equals(WeatherAdData.CP_AD_TYPE_NATIVE)) {
// checkCanShowNativeAd();
// return;
// }
LogUtil.d(TAG + "initAd no support adType=" + adType);
finishActivity();
// LogUtil.d(TAG + "initAd no support adType=" + adType);
// finishActivity();
}
......@@ -192,65 +167,23 @@ class WeatherPureAdDialog extends AbsView {
Map<String, Object> map = new HashMap<>();
map.put("ad_ready", String.valueOf(adReady));
Statistics.getInstance().dotEvent(activity, "ad_dialog_exp", "", map);
} catch (Exception e) {
} catch (Exception ignored) {
}
}
// private void checkCanShowNativeAd() {
// Object cacheData = TopOnAdLoadManager.getInstance().getAdCacheData(data.cpAdslot);
// boolean hasCache = cacheData instanceof AdCacheData
// && !((AdCacheData) cacheData).isNativeTimeout();
// LogUtil.d(TAG + "initAd native hasCache == " + hasCache);
// boolean isScreenOn = AppOutUtils.isScreenOn();
// boolean isLock = AppOutUtils.isScreenLock();
//
// if (hasCache) {
// LogUtil.d(TAG + "initAd native isScreenOn == " + isScreenOn + ", isLock =" + isLock);
// if (!isScreenOn || isLock) {
// statNativeScreenState("cache", isScreenOn, isLock);
// finishActivity();
// return;
// }
// showNativeAd();
// return;
// }
//
// statNativeScreenState("load", isScreenOn, isLock);
// TopOnAdLoadManager.getInstance().loadNativeAd(data, AdScenes.AD_SCENES_PURE);
// finishActivity();
// }
// private void statNativeScreenState(String state, boolean isScreenOn, boolean isLock) {
// Map<String, Object> map = new HashMap<>();
// map.put("state", state);
// map.put("isScreenOn", String.valueOf(isScreenOn));
// map.put("isLock", String.valueOf(isLock));
// Statistics.getInstance().dotEvent(activity, "native_state", "", map);
// }
@Override
public void onDestroy() {
LogUtil.d(TAG + "WeatherPureAdDialog onDestroy");
LogUtil.d(TAG + "PureAdDialog onDestroy");
if (data != null) {
TopOnAdLoadManager.getInstance().unregisterCallBack(data.cpAdtype, TopOnAdLoadManager.REGISTER_TAG_WEATHER_PURE_AD);
}
AppOutSP.saveOutAdDialogCloseLastTime(System.currentTimeMillis());
}
// private void showNativeAd() {
// TopOnAdLoadManager.getInstance().showNativeAd(data, weatherAdContainer);
// }
private void showInterstitial() {
TopOnAdLoadManager.getInstance().showInterstitialAd(activity, data, AdScenes.AD_SCENES_PURE);
}
private void showBannerAd() {
// TopOnAdLoadManager.getInstance(activity).showAd(data, weatherAdContainer, activity);
}
/**
* 结束SLK 或者 退到后台
*/
......
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