Commit d577cc54 authored by wanglei's avatar wanglei

...广告限制类型

parent 60ffef06
......@@ -29,6 +29,9 @@ public class AdDisplayUtils {
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 final String AD_REQUEST_COUNT_KEY = "ad_request_count";//广告请求次数
private static final String MAX_AD_REQUEST_COUNT_KEY = "max_ad_request_count"; // 广告请求次数限制的键
private static AdDisplayUtils instance; // 单例对象
private int adDisplayCount = 0; // 当前广告展示次数
private int adClickCount = 0; // 当前广告点击次数
......@@ -39,6 +42,10 @@ public class AdDisplayUtils {
private int adRequestFailCount = 0; // 请求失败当前
private String currentDate; // 当前日期
private int adRequestCount = 0; // 当前广告请求次数
private int maxAdRequestCount = 0; // 最大广告请求次数
private static final int DEFAULT_MAX_AD_REQUEST_COUNT = 100; // 广告请求次数限制默认值
private AdDisplayUtils() {
currentDate = getCurrentDate();
......@@ -49,6 +56,9 @@ public class AdDisplayUtils {
adDisplayCount = prefs.getInt(getAdDisplayCountKey(), 0);
adClickCount = prefs.getInt(getAdClickCountKey(), 0);
adRequestFailCount = prefs.getInt(getAdRequestFailCountKey(), 0);
adRequestCount = prefs.getInt(getAdRequestCountKey(), 0);
maxAdRequestCount = prefs.getInt(MAX_AD_REQUEST_COUNT_KEY, DEFAULT_MAX_AD_REQUEST_COUNT);
}
public static synchronized AdDisplayUtils getInstance() {
......@@ -58,6 +68,10 @@ public class AdDisplayUtils {
return instance;
}
private String getAdRequestCountKey() {
return AD_REQUEST_COUNT_KEY + "_" + currentDate;
}
public boolean shouldDisplayAd() {
return adDisplayCount < getMaxAdDisplayCount();
}
......@@ -70,6 +84,14 @@ public class AdDisplayUtils {
return adClickCount < getMaxAdClickCount();
}
public boolean shouldSendAdRequest() {
return adRequestCount < getMaxAdRequestCount();
}
public int getMaxAdRequestCount() {
return maxAdRequestCount;
}
public boolean shouldShowAd(String ad_unit) {
if (BuildConfig.DEBUG) {
return true;
......@@ -77,18 +99,20 @@ public class AdDisplayUtils {
boolean shouldDisplayAd = shouldDisplayAd();
boolean shouldIncrementClickCount = shouldIncrementClickCount();
boolean shouldIncrementRequestFailAd = shouldIncrementRequestFailAd();
boolean shouldSendAdRequest = shouldSendAdRequest();
boolean s = shouldDisplayAd && shouldIncrementClickCount && shouldIncrementRequestFailAd;
boolean s = shouldDisplayAd && shouldIncrementClickCount && shouldIncrementRequestFailAd && shouldSendAdRequest;
if (!s) {
LogEx.INSTANCE.logDebug("glc", "!shouldShowAd", false);
JSONObject obj2 = new JSONObject();
try {
obj2.put("reason", "ad limit");
obj2.put("shouldDisplayAd",shouldDisplayAd);
obj2.put("shouldIncrementClickCount",shouldIncrementClickCount);
obj2.put("shouldIncrementRequestFailAd",shouldIncrementRequestFailAd);
obj2.put("shouldDisplayAd", shouldDisplayAd);
obj2.put("shouldIncrementClickCount", shouldIncrementClickCount);
obj2.put("shouldIncrementRequestFailAd", shouldIncrementRequestFailAd);
obj2.put("shouldSendAdRequest", shouldSendAdRequest);
obj2.put("ad_unit", ad_unit);
EventUtils.INSTANCE.event("ad_show_error", null, obj2, false);
} catch (JSONException e) {
......@@ -219,6 +243,23 @@ public class AdDisplayUtils {
editor.apply();
}
public void incrementAdRequestCount() {
if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate();
adRequestCount = 0;
}
adRequestCount++;
saveAdRequestCount();
}
private void saveAdRequestCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdRequestCountKey(), adRequestCount);
editor.apply();
}
private String getAdRequestFailCountKey() {
return AD_REQUEST_FAIL_COUNT_KEY + "_" + currentDate;
}
......
......@@ -182,6 +182,7 @@ object AdMaxInterstitialUtils {
obj.put("ad_type", "interAd")
EventUtils.event("ad_pull_start", ext = obj)
interstitialAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
return true
} else {
EventUtils.event("isAdInit", value = "loadInterstitialAd isAdInit=${isAdInit.get()}")
......
......@@ -174,6 +174,7 @@ object AdMaxOpenUtils {
obj.put("ad_type", "openAd")
EventUtils.event("ad_pull_start", ext = obj)
appOpenAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
return true
}
return false
......
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