Дааа.. тяжелый труд – копать на поле кукурузу… В этот раз я расскажу о своем первом опыте разработки коммерческих приложений для Android и о том, как мне, все же, удалось попасть на Android Market (ну не мне лично, а моему приложению, конечно же).

Итак… А началось все давно, а точнее сказать тогда, когда я начал писать статьи о программировании для Palm WebOS. В ходе написания, собственно, статей, появилась потребность в обучении на каких-то реальных примерах и как раз один из моих знакомых рассказал о том, что запускает сервис файлообмена для мобильных устройств. Файлы планировалось загружать на сервер и отсылать URL загруженного файла по SMS. Такой вот нехитрый способ обмениваться, например, фотографиями с мобильного телефона.К этому моменту уже была готова Web-based версия сервиса и я предложил написать к нему еще и приложение для Palm WebOS. На тот момент мой опыт разработки для Palm WebOS был без малого 8 рабочих дней (я заканчивал 8ю статью из этого цикла, статьи писал по одной в день). Для того, чтобы по-бвстрому слепить приложение для WebOS у меня ушло около 15ти часов. И еще около двух часов чтобы написать PHP-скрипт, который бы использовался для отправки файлов этим приложением и выдавал результаты в формате JSON.

После того, как WebOS версия была закончена, возник вопрос о разработке подобных клиентов для других мобильных платформ. Довльно быстро были сделаны версии для Windows Mobile и Maemo. Версия для Windows Mobile работала как shell extension для Inbox и меню контактов и просто открывала сайт в Internet Explorer c уже заполненным полем получателя. Версия же для Maemo работала аналогично с версией для WebOS – отсылала файл на сервер и получала JSON-ответ от скрипта ну и дальше по обстоятельствам.

Затем очередь дошла до Android. О да, это еще та эпопея…

Во-первых, версий Android’а, доступных и повсеместно используемых на рынке целых три – 1.5, 1.6, 2.0.

Для всех этих трех версий используется различное API для работы с контактами и то что успешно работает в версии 1.5 совсем отказывается что ли-бо выполнять в версии 2.0. Так же история обстоит и с API для отправки SMS.

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

Дальше… Отправка файлов. Для этой цели пришлось использовать библиотеку httpmime и apache-mime4j с сайта Apace. Хвала Супермарио, но Java-таки кросс-платформенна 🙂 – JAR файлы с сайта Apache чудесно заработали и для Android без каких-либо лишних теложвижений.

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

На реализацию, тестирование, подготовку, различные доделки-переделки ушло ну… недели две рабочего времени минимум. Может больше.

Дальше… Графика. А точнее иконка. Почитав описание Android Application Icon Guidelines я понял что моей мозговой активности явно недостаточно чтобы слепить что-то удобоваримое. И я решил заказать графику (ну вот да, иконку) на фрилансерском сайте, а точнее на free-lance.ru

На самом деле хотелось дешево и сердито, а полоучилось.. ну, не дешево, и даже не сердито. Просто получилось! На проект откликнулось двое фрилансеров. Первый предложил 4000 рублей (не знаю сколько это денег, я в русских тугриках не специалист. Но что-то мне подсказывает что это больше 100 баксов ибо в уме почему-то всплывает цифра 30 – приблизительно столько просят за одного американского президента). 100 баксов это как-то… печально, учитывая что разработку я финансирую из своего кармана, а президентов я как бы и не рисую, а зарабатываю трудом праведным (вполне). Второй фрилансер (барышня) предложила слеить мне иконку за 19 баксов. Ок, более менее приемлемо (хотя и не “за еду”, как я рассчитывал). К тому же обещано было, что иконка будет сделана за сутки (круть, люблю когда быстро). Я предложил что да, если будет сделана за сутки, то доплачу еще 10% (как по мне, вполне человеческий способ стимулирования. На мелких проектах, конечно, эффект мало заметен, но обычно вполне неплохо работает когда сроки важны).

И о чудо! В три часа ночи иконка сделана! Это прям праздник какой-то! Мне последние два раза очень везет на фрилансеров. Получил я в результате PNG файл 48×48 и EPS-файл с вектором.

Положил я этот PNG файл в папку drawables своего проекта, но фак! Почему-то он не виден на эмуляторе! Как была зеленая с роботом, так и осталась! Детальное изучение проблемы под микроскопом показало что для различных разрешений экрана нужны иконки разного размера (ну и скажите мне, где это написано в гайдлайнах?). После манипуляций с фотошопом, на которые мозговой активности у меня, все же, хватило, были созданы PNG-файл размером 36×36 и 72×72, которые затем перекочевали в нужные папки ресурсов.

Пересобрал и о, да! Иконка в порядке. Можно постить на Android Market!

Но не тут-то было…

При попытке загрузить сборку Android Market мне объяснил что я не прав и аргументировал это тем, что неймспейс в моем приложении начинается с com.android, а так делать нельзя. Странно, почему я это узнаю ПОСЛЕ а не ДО загрузки сборки? Пришлось исправлять…

Затем мне объяснили что я еще более неправ, потому что я как-то неудачно родился не в США, а в Украине. Для того, чтобы иметь возможность постить платные приложения, нужна учетка в Google Checkout, а зарегистрировать ее можно только (если мне память не изменяет) в 7ми или 8ми странах. Украины, естественно, в списке нет. Ну вот это уже вобще свинство! Я столько работал, чтобы вот так все бросить на пол-пути? Ну уж нет! Индейцы не ищут легких путей! И пошел я… нет, не нафик, пошел я на сервис SlideMe, который является альтернативой Android Market и также имеет свое приложение-клиент, с помощью которого можно покупать другие приложения.

К счастью, на SlideMe более лояльно относятся к разработчикам из других стран и я довольно быстро завел себе там учетку и разместил приложение. Единственное что меня немного смущает, в описании сервиса они говорят, что для получения выплат надо  будет заполнить кое-какие документы для налоговой США, но это потом. Сейчас же для меня главное то, что приложение приняли и оно доступно для заргузки, а еще больше приятно то, что оно доступно для покупки 🙂 Таки вот оно! SMSMyFile – отправляем файлы через SMS!

Порадовал тот факт, что на SlideMe можно не только указать описание приложения, а еще и выложить скриншоты, а главное видео! За 5 минут сварганил видео с помощью CamStudio (бесплатная кстати, я ею и скринкасты все записываю) и выложил на YouTube. Ссылку – на SlideMe.

Для того, чтобы получать платежи со SlideMe, надо указать как минимум карту, на которую вы будете получать оплату. Здесь мне помогла MasterCard, полученная, в свое время, от RentACoder. Она, в последнее время, меня везде спасает 🙂

Карточку, к тому же, надо верифицировать. У меня пока сделать этого не получилось, пришлось писать в службу поддержки. Вот сутки уже жду ответа…

Если вы хотите продавать свое приложение с помощью SlideMe, надо сделать некоторые изменения в коде:

  • Добавить JAR-файл в проект (доступен для загрузки на SlideMe)
  • Добавить Activity в проект (код для вставки доступен там же)
  • Добавить пару строк в манифест приложения – зарегистрировать там Activity и пару привелегий для приложения.

Более подробно об этом можно узнать здесь. На внесение изменений у меня ушло 5 минут, что, на самом деле, очень классно.

ОК, со SlideMe закончили. Следующий на очереди AndAppStore.

AndAppStore – еще одна площадка для продажи Android-приложений. Регистрация там тоже несложная. Получать оплату можно через Google Checkout (будь он неладен) и PayPal.

Все классно, но бесит одно – процесс подготовки приложения к публикации ну очень муторный…

Сначала надо создать профайл для приложения на сайте, потом сделать API Key для приложения, получить Application ID, затем сгенерировать какой-то приватный ключ.

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

Сервис позволяет указать описание для приложения (чистый текст, без HTML) и загрузить скриншоты. Какие еще плюшки – будет видно дальше.

Итак, два сервиса нашел, но меня никак не покидало чувство, что с Android Market’ом я “что-то делаю не так”. Пошел еще раз регистрировать приложение… Повводил значения ао все поля, долго смотрел на форму регистрации и ссылку на Google Checkout… Затем, все же, пошел на форму регистрации Merchant Account’а в Google Checkout. На эту форму тоже смотрел долго пока, наконец, меня не осенило…

А ведь для регистрации не обязательно вводить идентификационный номер налогоплательщика. При указании только номера кредитной карты вас все равно регистрируют, но ежемесячная сумма выплат будет ограничена.

В качетсве адреса указал адрес банка, выдавшего мне карту от RentACoder’а. Ну и номер самой карты. И о чудо! Зарегистрировался!

Это позволило мне добавить приложение в Android Market. Цену для приложения указал символическую – $0.99 (а что, все так делают).

Android Market позволяет указать короткое описание приложения (50 символов), обычное описание приложения (300 символов – мало вобще-то) и загрузить скриншоты. Скриншотов должно быть обязательно два (или вобще ни одного). Еще можно загрузить промо-картинку 180×120.

Итоги

  • Потрачено на регистрацию: 1 сутки
  • Зарегистрировался в: SlideMe, Android Market, AndAppStore
  • Получилось запостить приложение в: SlideMe, Android Market
  • Продаж в SlideMe за первые сутки: 0
  • Продаж в Android Market за первые сутки: 10
  • Возвратов в Android Market за первые сутки: 4
  • Левелап получен: да 🙂

Приложение

smsmyfile-1.0.0-screenshot

Previous ArticleNext Article
Технический директор IT-Dimension, компании-разработчика кросс-платформенного программного обеспечения

This post has 17 Comments

17
  1. Познавательно и с эмоциями, куда же без этого:-) Спасибо.

  2. Спасибо, очень познавательно! Есть вероятность, что нужно будет пройти тот же путь.

  3. На карту, которую регали в Android Market деньги пробовали переводить или они сразу туда поступают после покупок? И еще вопрос: каким образом деньги на PayPal вам переводят? Насколько я знаю ни Россия, ни Украина
    платежи не принимает.

    Спасибо за ответ.

  4. 1. В Android Market (а точнее в Google Checkout) регистрируется банковский счет, а не карта. У Payoneer есть услуга Virtual Bank Account – вот я его использовал. Оплата перечисляется автоматически каждый день (с задержкой где-то в 2е суток).
    С PayPal тот же финт ушами. Virtual Bank Account стоит $20 в год.

  5. Спасибо, наконец-то кто-то додумался как выводить деньги с Android Market. Теперь тоже закажу себе карту Payonner. Если не возражаешь я тебе потом напишу, если вдруг что не будет получаться, ты ведь уже бабло получаешь.

  6. Спасибо за отличный пост. А за остальные версии приложений тоже деньги брали? Каков был доход от них относительно андроида?

  7. Вопрос по карте, я заказал карту Пэйонер от Odesk, ща жду пока придет и потом нужна будет активация, вопрос, услуга Virtual Bank Account появится после активации карты? А то пока я еще ничего не вижу кроме последних четырех цифр карта, а адрес банка откуда брать? Придет в конверте вместе с картой?

  8. Я думаю по поводу Virtual Bank Account лучше отписать в службу поддержки и попросить активировать. Она не сразу доступна.

  9. Спасибо за отличный пост. А за остальные версии приложений тоже деньги брали? Каков был доход от них относительно андроида?

    Для WebOS приложение бесплатно (по крайней мере сейчас). С WebOS очень много пользователей пришло, вполне возможно, что из-за бесплатности приложения.
    Для WM тоже пока бесплатная версия, как shell extension – когда сделаем stand-alone программулину, то думаю выложить на Windows Marketplace for Mobile

  10. Опиши лучше путь в пальмовский магазин. Пытался зарегистрироваться – в списке нету России. И что делать? Как снимать деньги? Платформа то интересная.
    P.S – спасибо за инфу

  11. Обязательно опишу. Сейчас как раз регистрацией в нем и занимаюсь. Там все еще более хитро

  12. буду очень ждать. А с вами как можно связаться?

  13. Не могли бы вы, помочь, начинающему разработчику, и написать каким образом вы работали с SMS из-под Android 1.5??? Заранее спасибо!

  14. Скажите пожалуйста, насколько будет ораничена ежемесячная сумма выплат если пользовать Ваш метод?? спс

Leave a Reply

Your email address will not be published. Required fields are marked *

I.

Intel AppUp глазами разработчика

Сегодня у нас статья хабрапользователя Terror об Intel Atom Developer Program и о том, как подготовить приложение для публикации в Intel’овском магазине.

Введение

Новость о том, что Intel открыл магазин для atom-based устройств пару раз проскакивала на Хабре. Вскользь было упомянуто, что существует специальная программа для разработчиков, позволяющая интегрировать свои приложения в Intel AppUp.

Разработчик может опубликовать свое ПО и продавать его через AppUp. Либо отправить компонент и получать проценты с продаж программ, использующих этот компонент. Т.к. магазин только начинает свою работу есть неплохой шанс «засветиться» (приложений в нем пока немного).

На данный момент регистрация является бесплатной, в будующем Intel планирует брать оплату в размере $99 в год. Еще один плюс — авторы первых 100 приложений, отправленных до 2-го февраля получат по нетбуку.Я хочу рассказать про процесс интеграции подробнее, используя свой опыт отправки ПО в AppUp.

Все, что может понадобиться (SDK, статьи) можно найти на странице Intel Atom Developer Program.

Требования к приложениям, отправляемым в AppUp достаточно просты:

  • приложение должно соответствовать определенным критериям, более подробно здесь
  • приложение должно интегрироваться с Atom Developer Program SDK
  • инсталлятор должен соответствовать определенным требованиям, подробнее здесь

Интеграция

Для начала необходимо зарегистрироваться на сайте Intel Atom Developer Program. После регистрации заходим в панель управления (Dashboard) и получаем уникальный GUID для своего приложения, компонента.

Скачиваем и устанавливаем SDK. В папке Samples можно найти несколько примеров работы с SDK на С\С++. В простейшем случае, процесс интеграции выглядит следующим образом:

Объявляем GUID нашего приложения

#ifdef _DEBUG
  const ADP_APPLICATIONID myApplicationID(ADP_DEBUG_APPLICATIONID);
#else
  const ADP_APPLICATIONID myApplicationID = {{ ЗДЕСЬ,УКАЗЫВАЕМ,СВОЙ,GUID }};
#endif

ADP_DEBUG_APPLICATIONID — нужен в отладочной версии, дабы убедиться, что все работает нормально.

Проверяем, разрешен ли запуск нашей программы:

BOOL CheckIsAuthorized()
{
  BOOL bResult = FALSE;
  Application *pApp = NULL;
  try
  {
    // Пытаемся создать экземпляр Application с нашим GUID-ом
    pApp = new Application(ApplicationId(myApplicationID));
    // Экземпляр создан, можно работать
    bResult = TRUE;
  }
  catch (AdpException& e)
  {
    // Ошибка, сообщим о ней пользователю
    MessageBox(NULL, e.what(), "Error", MB_ICONERROR);
  }
  if (pApp != NULL)
  {
    delete pApp;
  }
  return bResult;
}

Можно сказать, что процесс интеграции на этом и заканчивается. Для того, чтобы проверить все ли сделано правильно, запускаем ATDS (ярлык Start ATDS) и следом наше приложение. Отладочная версия должна запуститься без проблем, а вот релиз должен выдать ошибку: The application was no authorized for use on this machine (Code: 6)

Пакет установки

После того как приложение написано и протестировано необходимо создать установочный пакет. Требования к нему достаточно простые:

  • это должен быть MSI пакет
  • должен уметь устанавливаться в silent режиме (ключ /qn)
  • должен создавать ярлык только на одно приложение
  • должен включать C++ runtime библиотеки (если используются)

Процесс создания пакета детально описан на форуме

Отправка

После того как пакет установки создан и протестирован можно приступать к отправке приложения на валидацию. Делается это все через тот же Dashboard. Процесс отправки разбит на несколько шагов, в принципе все просто и понятно.

Перед отправкой не забудьте запастись иконкой (логотипом) программы размером 100×100 и скриншотами 820×480. Если окно программы имеет меньший размер, то можно создать белую подложку, указанного размера, и разместить на нем скриншот программы.

Валидация может происходить достаточно долго (в моем случае она длилась около 9-ти дней). О том, что подлежит проверке и что может привести к непрохождению валидации можно прочитать здесь и здесь

При возникновении вопросов можно поискать ответы на форуме Intel Atom Developer Program. Отвечают там достаточно быстро и грамотно как и представители Intel-a, так и его активные участники.

Оригинал на Хабре