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

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

Эту, а также статьи по теме, теперь можно найти здесь (zamechtoj.ru).
Не так давно я всё-таки одолел себя, сходил в банк и сделал себе международную валютную карточку 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());

Update
Уже прошло около года после того старта, и я решил, что будет не лишним обновить статью.
Из наиболее существенного. С августа 2013 адмоб запустил вторую версию себя же =) и с той поры ненавязчиво предлагает не нее перейти. К счастью, я не поспешил и остался на старом адмобе. Почему к счастью? Это связано с тем фактом, что в новом адмобе для Беларуси и России отсутствует платёж банковским переводом. Есть только чеки. С ними отдельная история. Во первых их надо дождаться, а во вторых обналичить. Кроме того, если не ошибаюсь, еще надо подтвердить свой адрес. Вообщем та еще тягомотина) 
Еще в Google+ сообществе я наконец-таки нашел собратьев по несчастью,минское сообщество андроидов, которые тоже жаждют начать продавать приложения из нашей любимой Родины.  Там предлагается завести российский аккаунт разработчика и открыть счет в российском банке (Смоленск) . На мой вопрос не банит ли Гугл за обман с местоположением, мне ответили, что им не ведомы такие прецеденты.. Хотя я о таком слышал.. и не раз. Возможно, ради интереса раскошелюсь на еще один аккаунт и проверю эту версию. К слову, возможность  переташить приложения с одного аккаунта на другой имеется, сам видел)
Также слыхал, что недавно в список продавцов Гугл включил несколько стран Азии: Таиланд и ты. Ну ничего проедет и по нашей улице инкассатор =) 

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

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

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

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

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


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

Hello World!

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