Commit de4dc4b5 authored by wanglei's avatar wanglei

三个方法

parent 59346ab3
package com.base.filerecoveryrecyclebin.ads; package com.base.filerecoveryrecyclebin.ads;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.util.Log;
import com.base.filerecoveryrecyclebin.help.BaseApplication;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
...@@ -12,26 +10,35 @@ import java.util.Locale; ...@@ -12,26 +10,35 @@ import java.util.Locale;
public class AdDisplayUtils { public class AdDisplayUtils {
private static final int DEFAULT_MAX_AD_DISPLAY_COUNT = 45; // 总广告展示次数限制默认值 private static final int DEFAULT_MAX_AD_DISPLAY_COUNT = 45; // 总广告展示次数限制默认值
private static final int DEFAULT_MAX_AD_CLICK_COUNT = 10; // 单个广告点击次数限制默认值 private static final int DEFAULT_MAX_AD_CLICK_COUNT = 10; // 单个广告点击次数限制默认值
private static final int DEFAULT_MAX_AD_REQUEST_FAIL_COUNT = 20; // 单个广告点击次数限制默认值
private static final String AD_PREFS_NAME = "ad_prefs"; // SharedPreferences 名称 private static final String AD_PREFS_NAME = "ad_prefs"; // SharedPreferences 名称
private static final String AD_DISPLAY_COUNT_KEY = "ad_display_count"; // 广告展示次数的键 private static final String AD_DISPLAY_COUNT_KEY = "ad_display_count"; // 广告展示次数的键
private static final String AD_CLICK_COUNT_KEY = "ad_click_count"; // 广告点击次数的键 private static final String AD_CLICK_COUNT_KEY = "ad_click_count"; // 广告点击次数的键
private static final String MAX_AD_DISPLAY_COUNT_KEY = "max_ad_display_count"; // 总广告展示次数限制的键 private static final String MAX_AD_DISPLAY_COUNT_KEY = "max_ad_display_count"; // 总广告展示次数限制的键
private static final String MAX_AD_CLICK_COUNT_KEY = "max_ad_click_count"; // 单个广告点击次数限制的键 private static final String MAX_AD_CLICK_COUNT_KEY = "max_ad_click_count"; // 单个广告点击次数限制的键
private static final String MAX_AD_REQUEST_FAIL_COUNT_KEY = "max_ad_request_fail_count"; // 单个广告点击次数限制的键
private static final String AD_REQUEST_FAIL_COUNT_KEY = "ad_request_fail_count"; // 单个广告点击次数限制的键
private static AdDisplayUtils instance; // 单例对象 private static AdDisplayUtils instance; // 单例对象
private int adDisplayCount = 0; // 当前广告展示次数 private int adDisplayCount = 0; // 当前广告展示次数
private int adClickCount = 0; // 当前广告点击次数 private int adClickCount = 0; // 当前广告点击次数
private int maxAdDisplayCount; // 总广告展示次数限制 private int maxAdDisplayCount; // 总广告展示次数限制
private int maxAdClickCount; // 单个广告点击次数限制 private int maxAdClickCount; // 单个广告点击次数限制
private int maxAdRequestFailCount; // 请求失败总
private int adRequestFailCount = 0; // 请求失败当前
private String currentDate; // 当前日期 private String currentDate; // 当前日期
private AdDisplayUtils() { private AdDisplayUtils() {
currentDate = getCurrentDate(); currentDate = getCurrentDate();
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0); SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
maxAdDisplayCount = prefs.getInt(MAX_AD_DISPLAY_COUNT_KEY, DEFAULT_MAX_AD_DISPLAY_COUNT); maxAdDisplayCount = prefs.getInt(MAX_AD_DISPLAY_COUNT_KEY, DEFAULT_MAX_AD_DISPLAY_COUNT);
maxAdClickCount = prefs.getInt(MAX_AD_CLICK_COUNT_KEY, DEFAULT_MAX_AD_CLICK_COUNT); maxAdClickCount = prefs.getInt(MAX_AD_CLICK_COUNT_KEY, DEFAULT_MAX_AD_CLICK_COUNT);
maxAdRequestFailCount = prefs.getInt(MAX_AD_REQUEST_FAIL_COUNT_KEY, DEFAULT_MAX_AD_REQUEST_FAIL_COUNT);
adDisplayCount = prefs.getInt(getAdDisplayCountKey(), 0); adDisplayCount = prefs.getInt(getAdDisplayCountKey(), 0);
adClickCount = prefs.getInt(getAdClickCountKey(), 0); adClickCount = prefs.getInt(getAdClickCountKey(), 0);
adRequestFailCount = prefs.getInt(getAdRequestFailCountKey(), 0);
} }
public static synchronized AdDisplayUtils getInstance() { public static synchronized AdDisplayUtils getInstance() {
...@@ -45,12 +52,16 @@ public class AdDisplayUtils { ...@@ -45,12 +52,16 @@ public class AdDisplayUtils {
return adDisplayCount < getMaxAdDisplayCount(); return adDisplayCount < getMaxAdDisplayCount();
} }
public boolean shouldIncrementRequestFailAd() {
return adRequestFailCount < getMaxAdRequestFailCount();
}
public boolean shouldIncrementClickCount() { public boolean shouldIncrementClickCount() {
return adClickCount < getMaxAdClickCount(); return adClickCount < getMaxAdClickCount();
} }
public boolean shouldShowAd() { public boolean shouldShowAd() {
return shouldDisplayAd() || shouldIncrementClickCount(); return shouldDisplayAd() && shouldIncrementClickCount() && shouldIncrementRequestFailAd();
} }
public void incrementAdDisplayCount() { public void incrementAdDisplayCount() {
...@@ -71,6 +82,17 @@ public class AdDisplayUtils { ...@@ -71,6 +82,17 @@ public class AdDisplayUtils {
saveAdClickCount(); saveAdClickCount();
} }
public void incrementAdRequestFailCount() {
if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate();
adRequestFailCount = 0;
}
adRequestFailCount++;
saveAdRequestFailCount();
Log.d("glc", "广告请求失败:" + adRequestFailCount);
}
public void setAdClickCount(int s) { public void setAdClickCount(int s) {
if (!currentDate.equals(getCurrentDate())) { if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate(); currentDate = getCurrentDate();
...@@ -80,7 +102,7 @@ public class AdDisplayUtils { ...@@ -80,7 +102,7 @@ public class AdDisplayUtils {
saveAdClickCount(); saveAdClickCount();
} }
private String getCurrentDate() { public String getCurrentDate() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
Date currentDate = Calendar.getInstance().getTime(); Date currentDate = Calendar.getInstance().getTime();
return dateFormat.format(currentDate); return dateFormat.format(currentDate);
...@@ -139,4 +161,31 @@ public class AdDisplayUtils { ...@@ -139,4 +161,31 @@ public class AdDisplayUtils {
editor.putInt(MAX_AD_CLICK_COUNT_KEY, maxAdClickCount); editor.putInt(MAX_AD_CLICK_COUNT_KEY, maxAdClickCount);
editor.apply(); editor.apply();
} }
public int getMaxAdRequestFailCount() {
return maxAdRequestFailCount;
}
public void setMaxAdRequestFailCount(int maxAdRequestFailCount) {
this.maxAdRequestFailCount = maxAdRequestFailCount;
saveMaxAdRequestFailCount();
}
private void saveMaxAdRequestFailCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(MAX_AD_REQUEST_FAIL_COUNT_KEY, maxAdRequestFailCount);
editor.apply();
}
private void saveAdRequestFailCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdRequestFailCountKey(), adRequestFailCount);
editor.apply();
}
private String getAdRequestFailCountKey() {
return AD_REQUEST_FAIL_COUNT_KEY + "_" + currentDate;
}
} }
...@@ -55,6 +55,7 @@ object AdMaxInterstitialUtils { ...@@ -55,6 +55,7 @@ object AdMaxInterstitialUtils {
override fun onAdLoadFailed(p0: String, p1: MaxError) { override fun onAdLoadFailed(p0: String, p1: MaxError) {
LogEx.logDebug(TAG, "onAdLoadFailed") LogEx.logDebug(TAG, "onAdLoadFailed")
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
retryAttempt++ retryAttempt++
val delayMillis = TimeUnit.SECONDS.toMillis(2.0.pow(min(6, retryAttempt)).toLong()) val delayMillis = TimeUnit.SECONDS.toMillis(2.0.pow(min(6, retryAttempt)).toLong())
...@@ -66,6 +67,7 @@ object AdMaxInterstitialUtils { ...@@ -66,6 +67,7 @@ object AdMaxInterstitialUtils {
override fun onAdDisplayed(p0: MaxAd) { override fun onAdDisplayed(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdDisplayed") LogEx.logDebug(TAG, "onAdDisplayed")
AdDisplayUtils.getInstance().incrementAdDisplayCount()
} }
override fun onAdHidden(p0: MaxAd) { override fun onAdHidden(p0: MaxAd) {
...@@ -75,6 +77,7 @@ object AdMaxInterstitialUtils { ...@@ -75,6 +77,7 @@ object AdMaxInterstitialUtils {
override fun onAdClicked(p0: MaxAd) { override fun onAdClicked(p0: MaxAd) {
LogEx.logDebug(TAG, "onAdClicked") LogEx.logDebug(TAG, "onAdClicked")
AdDisplayUtils.getInstance().incrementAdClickCount()
} }
......
...@@ -48,12 +48,11 @@ object AdMaxNativeUtils { ...@@ -48,12 +48,11 @@ object AdMaxNativeUtils {
override fun onNativeAdLoadFailed(p0: String, p1: MaxError) { override fun onNativeAdLoadFailed(p0: String, p1: MaxError) {
super.onNativeAdLoadFailed(p0, p1) super.onNativeAdLoadFailed(p0, p1)
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
val obj2 = JSONObject() val obj2 = JSONObject()
obj2.put("reason", "no_ad") obj2.put("reason", "no_ad")
obj2.put("ad_unit", "nativeAd") obj2.put("ad_unit", "nativeAd")
EventUtils.event("ad_show_error", ext = obj2) EventUtils.event("ad_show_error", ext = obj2)
} }
override fun onNativeAdClicked(p0: MaxAd) { override fun onNativeAdClicked(p0: MaxAd) {
......
...@@ -44,6 +44,7 @@ object AdMaxOpenUtils { ...@@ -44,6 +44,7 @@ object AdMaxOpenUtils {
} }
override fun onAdLoadFailed(p0: String, p1: MaxError) { override fun onAdLoadFailed(p0: String, p1: MaxError) {
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
// retryAttempt++ // retryAttempt++
// val delayMillis = TimeUnit.SECONDS.toMillis(2.0.pow(min(6, retryAttempt)).toLong()) // val delayMillis = TimeUnit.SECONDS.toMillis(2.0.pow(min(6, retryAttempt)).toLong())
// LogEx.logDebug(TAG, "onAdLoadFailed retryAttempt=$retryAttempt delayMillis=$delayMillis") // LogEx.logDebug(TAG, "onAdLoadFailed retryAttempt=$retryAttempt delayMillis=$delayMillis")
......
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