Как предотвратить блокировку рекламы в приложении? - PullRequest
58 голосов
/ 10 августа 2010

Один из моих пользователей выпустил кошку из сумки и сказал, что использует одно из моих бесплатных приложений, которое превращается в деньги с помощью рекламы, но они блокировали рекламу с помощью блокировщика рекламы. Они сказали мне это насмешливо, как будто я ничего не могу с этим поделать.

Могу ли я что-нибудь с этим сделать? Есть ли способ определить, что реклама заблокирована?

Ответы [ 15 ]

0 голосов
/ 25 марта 2013

Я уверен, что этот ответ не будет полностью популярен среди определенных сегментов разработчиков, однако подумайте, не попадаете ли вы в эту категорию, которая, возможно, ваше приложение не заслуживает того, чтобы существовать в магазине приложений. Обратите внимание, что все они могут быть реализованы в виде изменений кода, не требуя действий, связанных с хакерскими или шпионскими программами.

По сути, измените экономику вашего приложения. Пользователь всегда прав - это позиция одной из самых успешных рекламных компаний в мире (Google). Если ваши объявления блокируются пользователями, это потому, что вы отстой, а не потому, что реклама или блокировщики рекламы отстой.

http://books.google.com/books/about/The_User_is_Always_Right.html?id=gLjPMUjVvs0C

  • Сделайте рекламу менее раздражающей и в вашем лице. Пользователи реагируют на плохую / раздражающую рекламу, и чем более странным выглядит ваше приложение, тем больше вероятность того, что оно все равно откажется от него. Я не возражаю против приложений с рекламой в них, если они не оказывают существенного влияния на функциональность, и даже лучше, я люблю рекламу, которая имеет отношение к мне. (http://www.nngroup.com/articles/most-hated-advertising-techniques/)
  • Чтобы обнаружить, что реклама не загружается, необязательно реализовывать программы-шпионы, подобные действиям, упомянутым в предыдущих постерах. Загрузите объявление, содержащее код подтверждения, и время от времени вставляйте подсказку с запросом кода подтверждения. Код не должен быть длинным или раздражающим, на самом деле этого было бы достаточно, чтобы внедрить службу капчи с 3 или 4 буквами / цифрами. (http://textcaptcha.com/api)
  • В дополнение к обнаружению сбоя при загрузке рекламы, улучшайте ее. Вместо того, чтобы использовать API, подобные мобадам (вы даже не понимаете, как это звучит плохо? Мобы? Правда? Мы разработчики, русская мафия?), Вступите в партнерство с рекламной компанией, которая позволяет вам встраивать рекламу прямо из вашего приложения. Это увеличит ваше приложение в целом, и нет, вы не можете защититься от ручной модификации, но предложенные выше изменения также не защитят вас от этого. И это будет лучше поддерживать любые платные версии вашего приложения, которые будут намного более легкими (и более быстрыми).
  • Тщательно проверяйте объявления, которые вы показываете пользователю, будьте открыты и прозрачны в отношении ваших рекламных политик и даже позволяйте пользователям проверять ваши объявления и источники рекламы. Основная причина, по которой меня беспокоит реклама, не в том, что я ненавижу рекламу, а в том, что я беспокоюсь о том, что некачественный разработчик, ответственный за это приложение, также пропускает вирусы или другие вредоносные программы. Попросите сделать исключение для установленного adblocker. Объединитесь с блокировщиками рекламы, такими как AdBlock, чтобы попасть в их список исключений. Если вы являетесь законным приложением, это не должно быть проблемой. (http://www.cio.com/article/699970/6_Ways_to_Defend_Against_Drive_by_Downloads?page=1&taxonomyId=3089)

Я повторяю: все вышеперечисленные изменения - это то, что вы можете законно сделать в коде , чтобы предотвратить антирекламу. Объявления блокируются по соображениям безопасности и, в первую очередь, из-за внутренних реакций, а иногда и из-за пропускной способности и производительности, поэтому убедитесь, что ваши объявления не вызывают ни одной из этих проблем на уровне кода.

Наконец, я хотел коснуться сказанного Бореалидом, который я повторил выше; в конце концов, это игра в кошки-мышки, потому что пользователь имеет юридические и моральные полномочия и ответственность за свою собственность. Пользователь может делать все что угодно, в том числе напрямую изменять код на лету. Конечно, есть ограничения, которые вы можете реализовать, но всегда есть способы обойти проблему. Это основная проблема (технически) с DRM (что вы и пытаетесь сделать). Вместо того, чтобы тратить время и силы на эту игру, лучше поощрять пользователей держать рекламу вокруг; они станут вашими лучшими, самыми умными антиблокировщиками бесплатно.

0 голосов
/ 19 марта 2013

Для случая, когда нет подключения к Интернету, я следовал этому учебник и я построил «слушатель состояния сети» так:

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() 
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);

        if (noConnectivity == true)
        {
            Log.d(TAG, "No internet connection");
            image.setVisibility(View.VISIBLE);
        }
        else
        {
            Log.d(TAG, "Interet connection is UP");
            image.setVisibility(View.GONE);
            add.loadAd(new AdRequest());
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState)
{
    //other stuff
    private ImageView image = (ImageView) findViewById(R.id.banner_main);
    private AdView add = (AdView) findViewById(R.id.ad_main);
    add.setAdListener(new AdListener());
}

@Override
protected void onResume()
{
    registerReceiver(mConnReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    super.onResume();
}

@Override
protected void onPause()
{
    unregisterReceiver(mConnReceiver);
    super.onPause();
}

registerReceiver и unregisterReceiver должны вызываться в onResume и onPause соответственно, как описано здесь .

В вашем макете XML установите AdView и ImageView по своему выбору, например:

<com.google.ads.AdView xmlns:googleads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_alignParentBottom="true"
    android:id="@+id/ad_main"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    googleads:adSize="BANNER"
    googleads:adUnitId="@string/admob_id" />

<ImageView
    android:id="@+id/banner_main"
    android:layout_centerInParent="true"
    android:layout_alignParentBottom="true"
    android:layout_width="379dp"
    android:layout_height="50dp"
    android:visibility="gone"
    android:background="@drawable/banner_en_final" />

Теперь, когда подключение к Интернету доступно, оно будет отображаться, а когда оно отключено, появится окно ImageView, и наоборот. Это должно быть сделано в каждом действии, в котором вы хотите показывать рекламу.

0 голосов
/ 10 октября 2011

Дайте своим пользователям возможность использовать приложение без рекламы. Лично я нахожу рекламу одной из самых раздражающих вещей, которая может случиться на моем компьютере, и я с радостью заплачу за приложение, если оно избавит меня от оскорбления, связанного с рекламой. И я уверен, что я не единственный.

0 голосов
/ 17 мая 2011

Во-первых, позвольте мне сказать, что я считаю, что блокировка рекламы, когда дело касается приложений, на самом деле является формой пиратства. Эти приложения поддерживаются рекламой, а иногда и «платной лицензией» для отключения рекламы и / или добавления функций. Блокируя рекламу, пользователи крадут потенциальный доход от разработчика, который потратил время на создание используемого вами приложения.

В любом случае, я хочу добавить способ предотвратить использование блокировщиков рекламы. Я использую этот метод, и я не позволяю пользователям использовать приложение, если я обнаружу блокировщик рекламы. Люди очень злятся и будут давать вам плохие оценки за это. Но я также очень четко заявляю в своих описаниях приложений, что вы не сможете использовать приложение, если у вас есть блокировщик рекламы.

Я использую менеджер пакетов, чтобы проверить, установлен ли конкретный пакет. Хотя это не поможет всем рекламным блокировщикам, если вы будете в курсе самых популярных из них, вы можете получить большинство из них.

PackageManager pm = activity.getPackageManager ();
Intent intent = pm.getLaunchIntentForPackage ( "de.ub0r.android.adBlock" );
if ( Reflection.isPackageInstalled ( activity, intent ) ) {
  // they have adblock installed
}
0 голосов
/ 11 августа 2010

Это расширение предыдущего ответа. Пользователь сообщил мне, что приложение, которое они используют, называется AdFree Android. Его можно найти на рынке. Приложение говорит, что работает, «сводя на нет запросы к известным именам хостов, обслуживающим рекламу».

Я полагаю, что если вы монетизируете какое-либо из ваших приложений с рекламой, вы проверяете при запуске эту программу и даете пользователю неприятное сообщение, а затем закрываете приложение.

...