如您所知,许多人都在使用自定义 rom。几乎所有自定义 rom 都将阻止访问(向 127.0.0.1 发送广告请求)的 hosts 文件更改为 admob。
有什么办法可以克服吗?也许不可能以编程方式更改主机文件,但也许我们可以在我们的应用程序中为 admob 定义 ip,不是吗?像这样的问题,你在做什么来阻止广告拦截器?
如果应用检测到广告拦截器,我不想阻止我的应用被用户使用。
您可以使用AdListener
来检测您的 AdView 是否收到广告。如果它在很长一段时间内(例如连续几天)没有收到广告,但该应用程序已被使用,您可以开始屏蔽它。
AdView adView = new AdView(activity, AdSize.BANNER, "xxxxxxxxxx");
adView.setAdListener(new AdListener() {
@Override public void onReceiveAd(Ad arg0) { }
@Override public void onPresentScreen(Ad arg0) { }
@Override public void onLeaveApplication(Ad arg0) { }
@Override public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
// implement this method
}
@Override public void onDismissScreen(Ad arg0) { }
});
如果您使用标准系统调用将主机解析为 IP,则您无法阻止用户控制其 DNS 的配置方式以进行解析。我还没有在 Android 上做过这个,但是你可以推出你自己的 DNS 解析功能,它自己会发送到一个 DNS 服务器,比如谷歌的 8.8.8.8,并为你解析一个 IP。
正如您所提到的,另一种选择是简单地使用 IP 地址,可能是您拥有的一个,然后重定向到您想要的任何地方。
或者最好的是,让用户控制他们对 DNS 的操作?这真的是一个大问题吗?