Commit 8b446fb4 authored by mengcuiguang2's avatar mengcuiguang2

代码优化

parent 73aa3a4b
......@@ -1105,6 +1105,111 @@ class DeviceInfo private constructor() {
* @param context
* @return true-拉黑
*/
fun getAPPInstalledThreeDay(context: Context, sumCount: Int): Boolean {
if (context == null) return false
val onedayItems: MutableList<String?> =
ArrayList()
val twodayItems: MutableList<String?> =
ArrayList()
val threedayItems: MutableList<String?> =
ArrayList()
val installTime: MutableMap<Long, String> =
HashMap()
try {
val time: MutableList<Long> = ArrayList()
// 获取系统内的所有程序信息
val mainintent = Intent(Intent.ACTION_MAIN, null)
mainintent.addCategory(Intent.CATEGORY_LAUNCHER)
val packageinfo =
context.packageManager.getInstalledPackages(0)
var pinfo: PackageInfo?
val count = packageinfo.size
for (i in 0 until count) {
pinfo = packageinfo[i]
val appInfo = pinfo.applicationInfo
if (appInfo.flags and ApplicationInfo.FLAG_SYSTEM > 0) {
//系统程序 忽略
} else {
//非系统程序
time.add(pinfo.firstInstallTime)
installTime[pinfo.firstInstallTime] =
pinfo.applicationInfo.loadLabel(context.packageManager) as String
}
}
Collections.sort(
time,
Collections.reverseOrder()
) //降序
val now = System.currentTimeMillis()
val sdfOne = SimpleDateFormat("yyyy-MM-dd")
val sdfTime = SimpleDateFormat("yyyy-MM-dd HH-mm-ss")
// 今天已经过完的时间
val overTime: Long = (now - sdfOne.parse(sdfOne.format(now)).time)
for (i in 0 until time.size) {
when {
(time[i] > now - (overTime + AntiAuditManager.ONE_DAY * 2) && time[i] < now - (overTime + AntiAuditManager.ONE_DAY)) -> {
// LogUtil.d(
// "前天安装 -> " + "包名:" + installTime[time[i]] + "-时间:" + sdfTime.format(
// time[i]
// )
// )
// 前三天共安装
threedayItems.add(
"名称:" + installTime[time[i]] + "-时间:" + sdfTime.format(
time[i]
)
)
}
(time[i] > now - (overTime + AntiAuditManager.ONE_DAY) && time[i] < now - overTime) -> {
// LogUtil.d(
// "昨天安装 -> " + "包名:" + installTime[time[i]] + "-时间:" + sdfTime.format(
// time[i]
// )
// )
twodayItems.add("名称:" + installTime[time[i]] + "-时间:" + sdfTime.format(time[i]))
}
time[i] > now - overTime -> {
// LogUtil.d(
// "今天安装 -> " + "包名:" + installTime[time[i]] + "-时间:" + sdfTime.format(
// time[i]
// )
// )
onedayItems.add("名称:" + installTime[time[i]] + "-时间:" + sdfTime.format(time[i]))
}
}
}
// val localApkCount = AntiAuditManager.instance.getCurrentDayCount()
// LogUtil.d("AntiAuditManager", "获取列表-本地个数 -> $localApkCount")
// AntiAuditManager.instance.setCurrentDayCount(if (localApkCount > onedayItems.size) localApkCount else onedayItems.size)
// AntiAuditManager.instance.setCurrentDayCount(onedayItems.size)
LogUtil.d("AntiAuditManager", "前天安装 -> $threedayItems")
LogUtil.d("AntiAuditManager", "昨天安装 -> $twodayItems")
LogUtil.d("AntiAuditManager", "今天安装 -> $onedayItems")
// 拉黑上传反策略打点
if (AntiAuditManager.instance.isBlack()) {
AdReportManager.eventScene(
AdReportManager.INNER_IN,
System.currentTimeMillis(),
Constant.CARRIER_ANTI_STRATEGY,
"反策略阈值=${AntiAuditManager.instance.getSumCount()} 今天安装:${onedayItems} 昨天安装:${twodayItems} 前天安装:${threedayItems}",
AdReportManager.EVENT_TYPE_SCENCE_BLACK
)
}
} catch (e: Exception) {
e.printStackTrace()
}
return onedayItems.size >= sumCount || twodayItems.size >= sumCount || threedayItems.size >= sumCount
}
companion object {
......
......@@ -33,6 +33,7 @@ import cn.mingc.golden.ui.activitys.base.BaseActivity;
import cn.mingc.golden.ui.widgets.CycleProgress;
import cn.mingc.golden.ui.widgets.dialog.DialogListener;
import cn.mingc.golden.ui.widgets.dialog.PowerDialog;
import cn.mingc.golden.utils.AntiAuditManager;
import cn.mingc.golden.utils.LogUtil;
import cn.mingc.golden.utils.rxutil.CommonRxTask;
import cn.mingc.golden.utils.rxutil.RxjavaUtil;
......@@ -450,11 +451,55 @@ public class SplashActivity extends BaseActivity implements SplashView {
@Override
public void getAppsCountSuc(SplashAppBean data) {
LogUtil.d("SplashPresenter222", "getAppsCountSuc getCloseNeedInitAppsCount=" + data.getCloseNeedInitAppsCount());
LogUtil.d("SplashPresenter222","getAppsCountSuc getCloseNeedInitAppsCount="+data.getCloseNeedInitAppsCount());
// 预加载广告
AdHelper.INSTANCE.preLoadAllAds(this);
initData();
if (data != null) {
// 设置本地拉黑标记 由云端控制
AntiAuditManager.Companion.getInstance().resetBlack(data.getOpenAll(), Constant.CARRIER_SPLASH);
AntiAuditManager.Companion.getInstance().setSumCount(data.getCloseNeedInitAppsCount());
//开启vpn
if (DeviceInfo.Companion.getInstance().isVPN() == 1) {
// vpn拉黑打点
UmengManager.INSTANCE.onEvent(AdReportManager.EventType.EVENT_TYPE_BLACK_FOR_VPN.name());
AntiAuditManager.Companion.getInstance().setBlack(true);
AntiAuditManager.Companion.getInstance().cmtBlackToServier(AntiAuditManager.SENCE_VPN);
initData();
return;
}
// 反策略
RxjavaUtil.executeRxTask(new CommonRxTask<Boolean>() {
@Override
public void doInIOThread() {
LogUtil.d(TAG, "子线程判断是否加载开屏");
setT(DeviceInfo.Companion.getInstance().getAPPInstalledThreeDay(MintsApplication.getContext(), data.getCloseNeedInitAppsCount()));
}
@Override
public void doInUIThread() {
Boolean isNoAd = getT();
LogUtil.d(TAG, "主线程判断开屏广告--> true拉黑无广告 isNoAd=" + isNoAd);
if (isNoAd) {
// 命中反策略拉黑
UmengManager.INSTANCE.onEvent(AdReportManager.EventType.EVENT_TYPE_BLACK_FOR_LIMIT.name());
// 命中反策略
AntiAuditManager.Companion.getInstance().setBlack(true);
AntiAuditManager.Companion.getInstance().cmtBlackToServier(AntiAuditManager.SENCE_FAZHI);
}
initData();
}
});
}
}
@Override
......
package cn.mingc.golden.utils
import cn.mingc.golden.MintsApplication
import cn.mingc.golden.ad.AdReportManager
import cn.mingc.golden.common.DeviceInfo
import cn.mingc.golden.manager.AppPreferencesManager
import cn.mingc.golden.manager.TrackManager
import cn.mingc.golden.manager.UmengManager
import cn.mingc.golden.utils.LogUtil
import cn.mingc.golden.utils.rxutil.CommonRxTask
import cn.mingc.golden.utils.rxutil.RxjavaUtil
/**
*
* @author jyx
* @date 2021/7/22
* @des 反审核逻辑
*/
class AntiAuditManager private constructor() {
private val TAG = AntiAuditManager::class.java.simpleName
companion object {
const val ONE_DAY = 60 * 1000 * 60 * 24// 一天
const val N = 12 // (阈值)
const val APP_OUT_BLACK = "APP_OUT_BLACK" // 是否永久黑名单
const val TODAY_INSTALL_APK_COUNT = "TODAY_INSTALL_APK_COUNT"// 安装个数
const val TODAY_INSTALL_SUM_COUNT = "TODAY_INSTALL_SUM_COUNT"// 安装总个数(阈值)
// senceType 0-vpn,1-反策略,2-协议
const val SENCE_VPN = "0"// vpn
const val SENCE_FAZHI = "1"// 阈值
const val SENCE_AGREEMENT = "2"// 协议
val instance: AntiAuditManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
AntiAuditManager()
}
}
private val sp by lazy { AppPreferencesManager.get() }
/**
* 获取所有以安装列表,除系统应用,归类到自然日
*/
fun antiAudit() {
RxjavaUtil.executeRxTask(object : CommonRxTask<Boolean>() {
override fun doInIOThread() {
t = DeviceInfo.instance.getAPPInstalledThreeDay(
MintsApplication.getContext(),
getSumCount()
)
}
override fun doInUIThread() {
if (t == true) {
cmtBlackToServier(SENCE_FAZHI)
setBlack(true)
}
}
})
}
/**
* 提交黑名单接口
*/
fun cmtBlackToServier(senceType: String) {
LogUtil.d(TAG, "执行拉黑操作,用户网赚外显已被永久拉黑")
TrackManager.getInstance().blackOuterAd(senceType)
}
/**
* 是否黑名单
*
* true-黑名单
*/
fun isBlack() = AppPreferencesManager.get().getBoolean(APP_OUT_BLACK, false)
/**
* 设置黑名单
*/
fun setBlack(flag: Boolean) {
LogUtil.d(TAG, "设置黑名单 -> $flag")
sp.put(APP_OUT_BLACK, flag)
}
/**
* 重置黑名单
*
* adflag=true 可以看广告且是白名单
*/
fun resetBlack(adflag: Boolean, senceType: String) {
LogUtil.d(TAG, "调用 -- 重置黑名单方法 ,当前是否是白名单 -> $adflag")
if (adflag) {
// 服务器不拉黑
UmengManager.onEvent(AdReportManager.EventType.EVENT_TYPE_BLACK_FOR_SERVER.name)
} else{
// 服务器拉黑
UmengManager.onEvent(AdReportManager.EventType.EVENT_TYPE_BLACK_FOR_SERVER_BLACK.name)
}
// 黑名单
sp.put(APP_OUT_BLACK, !adflag)
}
/**
* 设置总阀值个数
*/
fun setSumCount(count: Int) {
LogUtil.d(TAG, "设置总阀值个数 -> $count")
sp.put(TODAY_INSTALL_SUM_COUNT, count)
}
/**
* 获取总阀值个数
*/
fun getSumCount() = sp.getInt(TODAY_INSTALL_SUM_COUNT, N)
}
\ No newline at end of file
......@@ -270,7 +270,11 @@ public final class Utils {
// }
// }
return false;
if (AntiAuditManager.Companion.getInstance().isBlack()) {
return false;
}
return true;
}
/**
......
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