我在Google Play中发布了我的Android应用,就像你们中的许多人一样。我知道很多用户使用广告拦截器阻止我的AdMob加载插页式广告并显示广告。 由于广告是我在计算机编码我的应用程序前保持数小时和数小时的原因,我认为我的用户避免它们是不公平的。 那么,我可以在任何地方发现我的广告被阻止了(100%,这是一种假阳性的危险)? ad.blocker应用程序的软件包名称列表是否存在,因此如果我的应用程序检测到其中一个,则停止工作,显示“已安装完整广告拦截器。此应用程序无法运行”或类似消息。你认为这是可能的还是一场失败的战争?
答案 0 :(得分:0)
解决“你认为这是可能的还是一场失败的战争?”问题的一部分:
即使有可能检测到广告拦截器,并在他们面前采取“规避行动”,但这样做可能没有意义。
假设只是显示广告的收入远低于点击广告时的收入,那么当广告拦截器存在时,或者(最好)广告实际存在时拒绝投放被阻止似乎不太可能对收入产生重大影响:有人阻止广告面临这种拒绝投放的麻烦可能是:
卸载应用并选择替代方案(已收回的收入:£0.00)
勉强禁用广告拦截器,但永远不会点击广告(已收回的收入:最低限额)。
相反,最好将注意力放在将应用程序货币化的其他方式上:
应用内购买。虽然有很多游戏滥用这一点 - 故意设计一种“必须前进”的心态,加上游戏玩法,几乎不可能在没有购买的情况下取得进展 - 我怀疑在明智地做出“公平”收入的机会。
广告免费版。提供免费的广告赞助版本和付费广告版本。如果有人喜欢这个应用程序,有些人会付钱给看不到的补充(并且,如上所述,你可能不会从那些无法获得的收入中获得收入)。
高级版。提供免费的“试用”版本,某些功能不存在或受限制,以及支付所有功能的付费全/高级版本。
答案 1 :(得分:0)
您可以在AdView对象上设置listener,以便您可以检测广告何时无法加载。您的一些编码可以检测广告是否在最近10分钟内未加载(例如)并禁用某些应用程序功能或完全终止应用程序。这将解决AdBlocker问题,关闭WiFi /移动数据以及网络级别阻止程序。
另一方面,您必须决定是否值得在使用您的应用时拒绝没有网络连接的用户。我想你也可以展示一个友好的提醒"对用户或沿着那些方向的东西。无论如何,这是一个选择
答案 2 :(得分:0)
如果设备已连接到网络,我会通过ping admob来解决此问题。
static boolean adblockcheck(Context con, @SuppressWarnings("SameParameterValue") String link) {
ConnectivityManager connMgr = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = Objects.requireNonNull(connMgr).getActiveNetworkInfo();
if(networkInfo != null && networkInfo.isConnected()){
try {
final String command = "ping -c 1 "+ link;
//admob.com ping success, return true
return Runtime.getRuntime().exec(command).waitFor() == 0;
} catch (InterruptedException | IOException e) {
e.printStackTrace();
// admob.com ping error, return false
return false;
}
} else {
//No network connection? return true
return true;
}
}
使用
if(!adblockcheck(this,"admob.com")){
// do something
}
也许有帮助