вторник, 29 января 2013 г.

Штурмуем google play, встраиваем рекламу от admob

Не так давно я всё-таки одолел себя, сходил в банк и сделал себе международную валютную карточку VISA.  И с чистой совестью зарегистрировался в play market в качестве разработчика. Надо отметить, что помимо положенных 25$ с меня списали ещё 1$. Но я чувствовал, что не всё так просто и мои ожидания оправдались..   будучи в Беларуси я не могу продавать свои приложения (надеюсь, что ситуация измениться).  Таким образом единственным легальным вариантом монетизировать свои приложения является реклама. И вот как раз здесь я столкнулся с подводными камнями. Чтобы особо не мудрить, я решил сначала разобраться с одной из самых распространнёных рекламных систем admob.
С самим приложением, которое в качестве тестового я запихнул в маркет можете ознакомиться    по ссылке https://play.google.com/store/apps/details?id=com.brucemax.boxintervals (процесс его публикации трудностей не составил, там оказалось всё прозаично).
В процессе гугления попалась мне статья на хабре с подробной инструкцией. Выполнив всё в точности как в вышеприведённом документе я наткнулся на первый "камешек".  Коварная ошибка NullPointerExeption в элементе:
<com.google.ads.AdView
android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adSize="BANNER" ads:adUnitId="@string/admob_publisher_id" ads:loadAdOnCreate="true" />
Как говориться гугл в помощь. Выяснилось, что в этой версии библиотеки GoogleAdMobAdsSdk-6.2.1.jar проблемы при расположении элемента в файле разметки. Поэтому решением было вставлять вьюху программно в главном активити в методе onCreate():

      AdView adView = new AdView(this, AdSize.BANNER, <здесь строка с вашим ID от admob>));
        LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
        layout.addView(adView);
        adView.loadAd(new AdRequest());

Плюс надо отметить, что библиотеку я добавлял не тем способом, что описан в статье, а просто скопировал файл jar в корневую папку libs (об этом способе я прочёл, когда искал решение первой проблемы)
Ну вот собственно и всё. Реклама грузиться даже в симуляторе.
Кстати, чтобы избежать нерелевантных кликов при тестировании приложения на телефоне и в эмуляторе необходимо к объекту запроса применить следующие методы:

        AdRequest request = new AdRequest();
        request.addTestDevice(AdRequest.TEST_EMULATOR);
        request.addTestDevice("E83D20734F72FB3108F104ABC0FFC738");
В первом случаем указан эмулятор, а во втором 32char Device ID (реальное устройство для тестирование), который можно получить при тестировании admob в логах (logcat).
И ещё полезная строчка кода, с помощью которой можно узнать на чём запущено приложение (эмулятор или устройство):

        boolean isEmulator = "generic".equals(Build.BRAND.toLowerCase());


суббота, 19 января 2013 г.

Ударим по поэзии..

Я убедился в словах великого поэта..
Да.. он был прав, глаголя нам о том,
Что обожанья свой предмет лелея,
В любовь не стоит окунаться с головой..

Бывает час такого искушенья:
Сорваться с места, побежать туда,
Где может быть она с усталым от страданья сердцем..
Тихонько прошептала бы мне "да.."

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


воскресенье, 13 января 2013 г.

Hello World!

Здравствуйте! До конца ещё не осознаю во что впоследствии выльется этот блог. Поэтому для начала просто представлюсь.  Меня зовут Максим! В данный момент основными деятельностями для меня являются программирование (android, Qt) и спорт (в частности бокс).  Да, вот такой нестандартный коктейль =) Ибо один из моих девизов "В здоровом теле - здоровый дух!" Кроме того интересуюсь живописью и поэзией, очень люблю путешествовать. Я хотя я в программировании относительно недавно и мой "скилл" ещё не так велик, во мне просто бушует вопль негодования по поводу стереотипов связанных с данной профессией.  А именно, что программист это плохо одетое, небритое, непричёсанное существо, с ограниченным мировоззрением.  Чем не цель доказать обратное =)   Но это всё только на данный момент.  Что   из этого всего получиться увидим позже. На сим разрешите откланяться и занимайтесь спортом!