Commit 23ed4488 authored by xujialang's avatar xujialang

播放广告时,如果5秒内有播放过,则不再播放

广告播放失败时:
  1.调用的destroy方法参数调整
  2.再次播放新增广告是否准备好的条件
清除页面不再判断isDestroyed
parent 184b7112
...@@ -702,10 +702,9 @@ public final class OutHelp implements KPListener { ...@@ -702,10 +702,9 @@ public final class OutHelp implements KPListener {
continue; continue;
} }
if (!activity.isDestroyed()) { LogUtil.d(TAG + " finish activity name=" + activity.getClass().getName());
LogUtil.d(TAG + " finish activity name=" + activity.getClass().getName()); activity.finishAndRemoveTask();
activity.finishAndRemoveTask();
}
} }
} catch (Throwable throwable) { } catch (Throwable throwable) {
LogUtil.d(TAG, " cleanAllAppActivitys e :" + Log.getStackTraceString(throwable)); LogUtil.d(TAG, " cleanAllAppActivitys e :" + Log.getStackTraceString(throwable));
...@@ -799,17 +798,16 @@ public final class OutHelp implements KPListener { ...@@ -799,17 +798,16 @@ public final class OutHelp implements KPListener {
|| activity instanceof LoadingActivity || activity instanceof LoadingActivity
//unit //unit
|| instanceofUnitActivity(activity)) { || instanceofUnitActivity(activity)) {
if (!activity.isDestroyed()) {
hasAdPage = true; hasAdPage = true;
ALog.d(TAG, "activity name :" + activity.getClass().getName()); ALog.d(TAG, "activity name :" + activity.getClass().getName());
Method finish = Activity.class.getDeclaredMethod("finish", new Class[]{int.class}); Method finish = Activity.class.getDeclaredMethod("finish", new Class[]{int.class});
finish.setAccessible(true); finish.setAccessible(true);
finish.invoke(activity, 2); finish.invoke(activity, 2);
}
} }
} }
return hasAdPage; return hasAdPage;
} catch (Throwable throwable) { } catch (Throwable ignored) {
} }
return false; return false;
} }
......
...@@ -13,4 +13,5 @@ public class AdErrorMessage { ...@@ -13,4 +13,5 @@ public class AdErrorMessage {
public static final String AD_TYPE_NOT_SUPPORT = "ad_type_not_support"; public static final String AD_TYPE_NOT_SUPPORT = "ad_type_not_support";
public static final String AD_CLOSE = "ad_close"; public static final String AD_CLOSE = "ad_close";
public static final String AD_TYPE_VIEW_ERROR= "ad_type_view_error"; public static final String AD_TYPE_VIEW_ERROR= "ad_type_view_error";
public static final String AD_SHOWING= "ad_showing";
} }
...@@ -11,6 +11,7 @@ import com.zl.sdk.OutHelp; ...@@ -11,6 +11,7 @@ import com.zl.sdk.OutHelp;
import com.zl.sdk.ad.interstitial.TopOnAdInterstitialCallBack; import com.zl.sdk.ad.interstitial.TopOnAdInterstitialCallBack;
import com.zl.sdk.ad.interstitial.TopOnInterstitialAdLoad; import com.zl.sdk.ad.interstitial.TopOnInterstitialAdLoad;
import com.zl.sdk.bean.OutAdData; import com.zl.sdk.bean.OutAdData;
import com.zl.sdk.event.DialogFailReason;
import com.zl.sdk.event.EventUtils; import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.statistics.Statistics; import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.out.ActionFrom; import com.zl.sdk.out.ActionFrom;
...@@ -45,8 +46,11 @@ public final class TopOnAdLoadManager { ...@@ -45,8 +46,11 @@ public final class TopOnAdLoadManager {
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<>();
private Handler cleanActivityHandler = new Handler(Looper.getMainLooper()); private Handler cleanActivityHandler = new Handler(Looper.getMainLooper());
private long showTimes = 0L;
private TopOnAdInterstitialCallBack adInterstitialCallBack = new TopOnAdInterstitialCallBack() { private TopOnAdInterstitialCallBack adInterstitialCallBack = new TopOnAdInterstitialCallBack() {
@Override @Override
...@@ -68,6 +72,9 @@ public final class TopOnAdLoadManager { ...@@ -68,6 +72,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);
showTimes = System.currentTimeMillis();
callInterstitialAdShow(); callInterstitialAdShow();
countAdShowTimes(adData); countAdShowTimes(adData);
stateAfterShow(adData); stateAfterShow(adData);
...@@ -113,7 +120,9 @@ public final class TopOnAdLoadManager { ...@@ -113,7 +120,9 @@ public final class TopOnAdLoadManager {
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);
if (!TextUtils.isEmpty(errorMsg) boolean isReady = topOnInterstitialAdLoad.isReady(adUnitId);
if (isReady
&& !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"))
) { ) {
...@@ -122,7 +131,7 @@ public final class TopOnAdLoadManager { ...@@ -122,7 +131,7 @@ public final class TopOnAdLoadManager {
LogUtil.d(TAG + "去播放 doWork 333"); LogUtil.d(TAG + "去播放 doWork 333");
OutAdManager.get().doWork(ActionFrom.ACTION_UNKNOWN, false); OutAdManager.get().doWork(ActionFrom.ACTION_UNKNOWN, false);
} else { } else {
topOnInterstitialAdLoad.destroy(showAdBean); topOnInterstitialAdLoad.destroy(adUnitId);
callInterstitialCloseAd(); callInterstitialCloseAd();
} }
} }
...@@ -134,16 +143,17 @@ public final class TopOnAdLoadManager { ...@@ -134,16 +143,17 @@ public final class TopOnAdLoadManager {
@Override @Override
public void adVideoStart(String adUnitId) { public void adVideoStart(String adUnitId) {
} }
@Override @Override
public void adVideoEnd(String adUnitId) { public void adVideoEnd(String adUnitId) {
// LogUtil.d(TAG, "clean all activity 222");
// OutHelp.get().cleanAllActivity();
} }
}; };
public boolean canShowAd() {
return System.currentTimeMillis() - showTimes >= 5 * 1000L;
}
private void stateAfterShow(OutAdData.NormalAdData adData) { private void stateAfterShow(OutAdData.NormalAdData adData) {
try { try {
boolean isReady = topOnInterstitialAdLoad.isReady(adData.cpAdslot); boolean isReady = topOnInterstitialAdLoad.isReady(adData.cpAdslot);
...@@ -160,7 +170,7 @@ public final class TopOnAdLoadManager { ...@@ -160,7 +170,7 @@ public final class TopOnAdLoadManager {
Map<String, Object> para = new HashMap<>(); Map<String, Object> para = new HashMap<>();
para.put("isReady", String.valueOf(isReady)); para.put("isReady", String.valueOf(isReady));
para.put("screen_state", String.valueOf(AppOutUtils.isScreenOn())); para.put("screen_state", String.valueOf(AppOutUtils.isScreenOn()));
para.put("foreground",OutHelp.get().isAppForeground()); para.put("foreground", OutHelp.get().isAppForeground());
String adPage = OutHelp.get().getPage(); String adPage = OutHelp.get().getPage();
if (!TextUtils.isEmpty(adPage)) { if (!TextUtils.isEmpty(adPage)) {
para.put("page", adPage); para.put("page", adPage);
...@@ -246,6 +256,13 @@ public final class TopOnAdLoadManager { ...@@ -246,6 +256,13 @@ public final class TopOnAdLoadManager {
private AdBean showAdBean = null; private AdBean showAdBean = null;
public void showInterstitialAd(Activity activity, OutAdData.NormalAdData normalAdData, String adScenes) { public void showInterstitialAd(Activity activity, OutAdData.NormalAdData normalAdData, String adScenes) {
if (!canShowAd()) {
LogUtil.d(TAG, "showInterstitialAd 广告播放过于频繁,不能展示");
// callInterstitialNotAd(AdErrorMessage.AD_SHOWING);
return;
}
if (null == normalAdData || TextUtils.isEmpty(normalAdData.cpAdslot)) { if (null == normalAdData || TextUtils.isEmpty(normalAdData.cpAdslot)) {
LogUtil.d(TAG, "showInterstitialAd data or adId empty"); LogUtil.d(TAG, "showInterstitialAd data or adId empty");
callInterstitialNotAd(AdErrorMessage.AD_DATA_IS_NULL_OR_NOT_ADUNITID); callInterstitialNotAd(AdErrorMessage.AD_DATA_IS_NULL_OR_NOT_ADUNITID);
......
...@@ -46,12 +46,8 @@ public class TopOnInterstitialAdLoad { ...@@ -46,12 +46,8 @@ public class TopOnInterstitialAdLoad {
} }
} }
public void destroy(AdBean adBean) { public void destroy(String adUnitId) {
if (adBean == null) { TopOnInterstitialAdManager maxInterstitialAdManager = hashMap.get(adUnitId);
return;
}
String keyId = adBean.getAdUnitId();
TopOnInterstitialAdManager maxInterstitialAdManager = hashMap.get(keyId);
if (null != maxInterstitialAdManager) { if (null != maxInterstitialAdManager) {
maxInterstitialAdManager.destroy(); maxInterstitialAdManager.destroy();
} }
......
...@@ -102,9 +102,6 @@ class PureAdDialog extends AbsView { ...@@ -102,9 +102,6 @@ class PureAdDialog extends AbsView {
registerCallBack(adType); registerCallBack(adType);
checkCanShowItAd(cpName, adUnitId); checkCanShowItAd(cpName, adUnitId);
// LogUtil.d(TAG + "initAd no support adType=" + adType);
// finishActivity();
} }
......
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