Здравствуйте, коллеги,
наконец-то у меня дошли руки написать немного о своем опыте на примере моего главного на сегодняшний день приложения Perfect Ear (в русском маркете известного как Абсолютный Слух).
Образовательное приложение, являющееся сборником упражнений для тренировки слуха. Приложение, как не трудно догадаться, охватывает весьма узкий круг потребителей, тем не менее, мне удалось достичь определенного успеха с ним. Оно 2 недели пробыло в списке featured приложений, о чем более детально расскажу далее.
Под катом будет изложена краткая история разработки, публикации, продвижения и поддержки приложения. Здесь не будет технических деталей о той или иной функциональности, скорее, хайлайты тех или иных моментов, произошедших за год существования приложения.
В конце приведу некоторые цифры.
Приложение Perfect Ear, как не трудно догадаться, предназначено в основном для музыкантов. Суть приложения сводится к ряду упражнений для развития слуха. Всего их 6:
Подробно о функциональности говорить смысла не имеет, т. к. это не реклама, и тем, кому нужно, сами поймут, что скрывается за этими словами.
Вкратце — большинство упражнений состоят из прослушивания МИДИ звука, и выбора определенного ответа. Одно упражнение включает в себя необходимость пропеть ноту в микрофон телефона.
Разрабатывал приложение я один как персональный проект. А вообще, я работаю на полную ставку в IT компании, где также занимаюсь Android разработкой последние полгода, до этого занимался web джавой, а Андроид изучал самостоятельно.
Дизайн выполнялся отдельно за деньги.
Итак, разработка приложения заняла у меня около 2 месяцев работы по ~4 часа в день. Позволю перечислить несколько главных на мой взгляд моментов.
Пожалуй, самым сложным моментом в разработке было исследование возможности генерации нужных звуков. Приложения должно в любой момент быть готово проиграть одну или более нот в тембре определенного инструмента.
У меня было 2 варианта:
Вариант с семплами был крайне нежелателен, т. к. это дополнительно место, очень много места, а также затраты на их создание. У меня дома есть и акустическая гитара, и электрогитара, и даже пианино у бабушки, но записать звук с них, да так, чтобы в хорошем, профессиональном качестве — никак, увы.
Поэтому я остановился на МИДИ. Как всегда, куда ни кинь — всюду клин. На Android нету АПИ, поддерживающего генерацию МИДИ. Т. е. ну никак нельзя синтезировать нотку. Точнее, детальный анализ показал, что можно, но это требует использования закрытого нативного API платформы, чего мне делать совсем не хотелось.
В итоге, все кончилось тем, что я, тщательно изучив формат MIDI, написал собственную небольшую open source библиотечку, реализующую нужную мне часть протокола. Библиотечка предоставляет простой API для указания ей того, что я хочу услышать, на выходе — .midi файл. Их, к счастью, media framework в состоянии открывать и воспроизводить.
Пожалуй, это самый интересный момент во всем приложении. Я никогда прежде не имел дело с подобными задачами, никогда не занимался обработкой звука и слова «преобразование Фурье» для меня были скорее отголоском университетских лет.
Я пытался найти фрилансера, который мне бы помог. К сожалению, я потратил достаточно много денег на это, и в итоге получил ничего, кроме ужасно медленной и крайне неточной реализации. Этот момент навсегда оттолкнул меня от работы с фрилансерами программистами.
Кончилось все тем, что я все же взялся за изучение темы, нашел open source примеры, разобрался в них, и на их основе сделал эту функциональность.
К сожалению, здесь проблемы не закончились, т. к. после появления этой фишки в приложении мне нет-нет, да стали валиться жалобы от пользователей разных устройств, что у них на девайсе не работает. Много крови попили, много работы по стабилизации пришлось выполнить, значительно улучшил поддержку разных устройств, но все равно нет-нет, да раз в пару месяцев кто-нибудь напишет.
Интересная тема. Собственно, как только вышла планшетная версия, я немедленно задумался об оптимизации приложения под планшет. Но долгое время, ввиду недостатка времени и ужасного эмулятора Honeycomb откладывал эту работу.
Но, спустя некоторое время, решил, что пора покупать планшет и переделывать приложение. Купил себе Galaxy Tab 10.1.
Оптимизация приложения выполнялась при помощи Compatibility Library и заняла около 16 часов работы: код всех activity был перенесен во фрагменты, а activities стали выполнять роль координации фрагментов. Т. е. когда приложение открывалось на планшете — можно показать несколько фрагментов, иначе — по фрагменту на экран.
Как раз в это время, когда понадобился дизайн, был на GDD2010, где послушал советы по дизайну от Романа Нурика во время его доклада, а также немного пообщался после.
Вдохновленный его советами решил найти дизайнера. Нашел форум, где обитают дизайнеры, и просто написал, что нужен человек, который может помочь, т. з. в личку. Спустя час-другой отозвался один товарищ, я кинул ему ТЗ, а также мои корявые наброски UI. Мы договорились, мне понравилось, и решил работать дальше с ним.
Работу он выполнил. Но явно было видно, что человек не знаком с платформой. Пожалуй, это самая большая проблема при поиске дизайнеров: они не знают, как работает платформа, особенно, как она работает с ресурсами. Я говорю о таких тонкостях, как nine-patches, *dpi, state-list и т. д.
В 90% случаев, как и в моем, приходится обрабатывать полученные дизайнером файлы самому. Что требует порой значительного времени. Поэтому я составил для себя обязательный список деталей, которые теперь обязательно обсуждаю с дизайнерами, уверяющими, что имеют опыт работы с андроидом:
Разумеется, чем больше из этих пунктов готов выполнить дизайнер, тем, скорее всего, сильнее Вам придется раскошелиться.
И вот, наконец, настал тот день, когда я опубликовал свое детище.
Сразу скажу, что сделал я это неправильно — в рабочий день, когда надо публиковать в начале выходных, т. к. новое приложение какое-то время будет находиться в списке новых и более заметно.
Опубликовал я 2 версии — бесплатную, содержащую не все упражнения (одно упражнение не входило в состав, а также не было фичи создания кастомных упражнений).
Утром следующего дня я зашел в консоль и увидел одну звезду с комментом «i hate it»… Ну вот и все, подумал я. Никто больше не будет его брать. Итак, что же я сделал, чтобы выйти из этой ситуации?
Сначала я хотел закрыть приложение, доработать, и выложить под другим именем, мол «you are not prepared». Но вскоре начали появляться 5-звездные рейтинги, но без комментов. Я подумал, что все же многим нравится, но поганый коммент вверху все равно портит первое впечатление. Поэтому я сделал так, чтобы через некоторое время в бесплатной версии показывался диалог, просящий пользователей проголосовать. Это дало замечательный результат: рейтинги посыпались дождем, преимущественно хорошие — 4-5 звезд, но, куда без них, немного и плохих было. Приложение резко поплыло вверх.
Так что я считаю это обязательным компонентом продвижения. Не нахально, а скромно попросить пользователя проголосовать, если им нравится, чтобы помочь остальным найти это чудо. Но мы-то с вами знаем :).
Какие еще действия я предпринял для продвижения:
В итоге, платное приложение медленно но верно начало двигаться вверх, и осело на 1-2 странице раздела образование.
Для поддержки позиции я применял такие трюки, как акции, типа «на этих выходных за полцены». В бесплатном приложении, которое использует на порядок больше людей помещал всплывающую рекламу, призывающую обновиться на этих выходных за полцены.
Также нет-нет, да грешу «пустыми» апдейтами. Как бы Гугл не отпирались, я явно вижу, что апдейты дают небольшой временный прирост скачиваний. Однако, не стоит, конечно, делать это слишком часто, так как пользователям не нравится, когда нужно обновлять приложение часто, а видимого эффекта нет.
Для меня это, конечно же тайна, но есть ряд подозрений, которыми хотел бы поделиться.
Во-первых, я держал свое приложение в топе своей категории.
Во-вторых, это произошло через неделю после выпуска Honeycomb версии. Возможно, гугл так поддерживает переход разработчиков на планшеты.
В любом случае, там мое приложение провисело ровно две недели.
Самый важный этап, который начинается после публикации — это поддержка.
Опубликовав приложение, Вы подписываетесь на то, что будете всегда готовы выслушать злобных юзеров и подсказать им, что бы они Вам не написали. Каждый день читать новые рейтинги в поисках возможных проблем. Чем больше Вы это будете делать, тем больше Вас будут любить.
Пользователи будут писать Вам на мыло. Обязательно отвечайте им и старайтесь помочь. Каждый такой довольный в итоге пользователь — это пятерка в рейтинге, и потенциал для роста. В моем случае — довольный музыкант расскажет другу музыканту, учитель посоветует детям — музыкантам (да-да, мне действительно писали с своими советами преподаватели музыки из Америки).
Очень важно тщательно тестировать Ваше приложение перед тем, как выложить. Но, к сожалению, высокая фрагментированность, недостаток времени не позволят сделать это на 100%. Поэтому необходимо иметь возможность получать информацию от пользователей.
Самым информативным способом узнать об ошибках, возникающих у пользователей, я считаю отправку сообщений об ошибках напрямую из приложения. Пользователи редко будут отсылать Вам трейсы ошибок сами.
В Perfect Ear я отслеживаю ошибки через Google Analytics. Т. е. стоит у кого-то вылетель эксепшну, я тут же посылаю событие с описанием ошибки, строкой, и т. п.
В новых своих приложениях я отправляю ошибки себе на почту через сервер. У меня есть простенький сервачок, висящий на AppEngine, которому я отправляю всю необходимую мне анонимную информацию об ошибке, а тот, в свою очередь, отправляет мне на почту отчет.
Для ведения статистики я использую Google Analytics. Есть специальный SDK, позволяющий узнать, что в Вашем приложении пользуется популярностью, а что нет.
Монетизировать приложение я решил стандартной схемой: продажи. Я делаю платную и бесплатную версии, бесплатная с ограниченным функционалом, платная — полная.
Реклама при таких объемах не только бессмысленна, но и губительна, т. к. только раздражает пользователей.
Важно заметить, что здесь очень важен баланс между бесплатной и платной версией. Если Вы включите почти все в бесплатную, Вам очень трудно будет заинтересовать пользователей в апгрейде. Если наоборот — у них будет недостаточно информации для решения. На мой взгляд очень важно оставлять «крючки» в бесплатной версии.
Например, упражнение «Пение Интервалов» у меня только в платной версии, но в бесплатной я не убрал пункт меню, а оставил его. Пользователь жмет на него и видит диалог, в котором описывается, какое это замечательно упражнение и кнопка «Купить».
Да, это приложение нишевое, и много на нем не заработать, но, приведу все же некоторые цифры.
В первые месяцы приложение не приносило практически ничего. Потом, после продвижения в топ категории пошла прибыль около 300 долларов в месяц и постепенно стала расти до 500-600 долларов в месяц к лету. Сейчас в среднем — 20-35 долларов в день, доход держится в районе 700-900 долларов в месяц.
За две недели в разделе featured доходы составляли от 300 до 500 долларов в день, т. е. фактически, за эти 2 недели я окупил все затраты 4 раза.
Очень хороший стимул продолжать работать.
Я осуществляю по стандартной схеме: AdSense-Рапида-банк. У меня есть отдельная статья про это.
Заработать инди деву на Андроиде можно. Мои наблюдения сейчас, что Маркет только начинает становиться на ноги, каждый день становится все больше и больше приложений от именитых контор: EA, Disney, и т. д. Это свидетельствует, что Андроид, наконец получает признание, а это, обязательно, будет выводить Маркет на новый уровень.
Все это я пишу после того, как увидел комментарии людей, типа «нельзя окупить свои траты в Android». Можно, и Андроид достаточно жизнеспособен как способ заработка.
Сейчас пишу свою собственную игру, посмотрим, что из этого выйдет.
Надеюсь, Вы нашли статью полезной, если есть какие-то вопросы — с радостью отвечу в комментариях.
наконец-то у меня дошли руки написать немного о своем опыте на примере моего главного на сегодняшний день приложения Perfect Ear (в русском маркете известного как Абсолютный Слух).
Образовательное приложение, являющееся сборником упражнений для тренировки слуха. Приложение, как не трудно догадаться, охватывает весьма узкий круг потребителей, тем не менее, мне удалось достичь определенного успеха с ним. Оно 2 недели пробыло в списке featured приложений, о чем более детально расскажу далее.
Под катом будет изложена краткая история разработки, публикации, продвижения и поддержки приложения. Здесь не будет технических деталей о той или иной функциональности, скорее, хайлайты тех или иных моментов, произошедших за год существования приложения.
В конце приведу некоторые цифры.
Немного о приложении
Приложение Perfect Ear, как не трудно догадаться, предназначено в основном для музыкантов. Суть приложения сводится к ряду упражнений для развития слуха. Всего их 6:
- Сравнение интервалов
- Определение интервалов
- Определение ладов
- Определение аккордов
- Последовательности аккордов
- Пение интервалов
Подробно о функциональности говорить смысла не имеет, т. к. это не реклама, и тем, кому нужно, сами поймут, что скрывается за этими словами.
Вкратце — большинство упражнений состоят из прослушивания МИДИ звука, и выбора определенного ответа. Одно упражнение включает в себя необходимость пропеть ноту в микрофон телефона.
Разрабатывал приложение я один как персональный проект. А вообще, я работаю на полную ставку в IT компании, где также занимаюсь Android разработкой последние полгода, до этого занимался web джавой, а Андроид изучал самостоятельно.
Дизайн выполнялся отдельно за деньги.
Разработка
Итак, разработка приложения заняла у меня около 2 месяцев работы по ~4 часа в день. Позволю перечислить несколько главных на мой взгляд моментов.
Динамическая генерация миди
Пожалуй, самым сложным моментом в разработке было исследование возможности генерации нужных звуков. Приложения должно в любой момент быть готово проиграть одну или более нот в тембре определенного инструмента.
У меня было 2 варианта:
- семплы
- МИДИ
Вариант с семплами был крайне нежелателен, т. к. это дополнительно место, очень много места, а также затраты на их создание. У меня дома есть и акустическая гитара, и электрогитара, и даже пианино у бабушки, но записать звук с них, да так, чтобы в хорошем, профессиональном качестве — никак, увы.
Поэтому я остановился на МИДИ. Как всегда, куда ни кинь — всюду клин. На Android нету АПИ, поддерживающего генерацию МИДИ. Т. е. ну никак нельзя синтезировать нотку. Точнее, детальный анализ показал, что можно, но это требует использования закрытого нативного API платформы, чего мне делать совсем не хотелось.
В итоге, все кончилось тем, что я, тщательно изучив формат MIDI, написал собственную небольшую open source библиотечку, реализующую нужную мне часть протокола. Библиотечка предоставляет простой API для указания ей того, что я хочу услышать, на выходе — .midi файл. Их, к счастью, media framework в состоянии открывать и воспроизводить.
Пение интервалов
Пожалуй, это самый интересный момент во всем приложении. Я никогда прежде не имел дело с подобными задачами, никогда не занимался обработкой звука и слова «преобразование Фурье» для меня были скорее отголоском университетских лет.
Я пытался найти фрилансера, который мне бы помог. К сожалению, я потратил достаточно много денег на это, и в итоге получил ничего, кроме ужасно медленной и крайне неточной реализации. Этот момент навсегда оттолкнул меня от работы с фрилансерами программистами.
Кончилось все тем, что я все же взялся за изучение темы, нашел open source примеры, разобрался в них, и на их основе сделал эту функциональность.
К сожалению, здесь проблемы не закончились, т. к. после появления этой фишки в приложении мне нет-нет, да стали валиться жалобы от пользователей разных устройств, что у них на девайсе не работает. Много крови попили, много работы по стабилизации пришлось выполнить, значительно улучшил поддержку разных устройств, но все равно нет-нет, да раз в пару месяцев кто-нибудь напишет.
Поддержка планшетов
Интересная тема. Собственно, как только вышла планшетная версия, я немедленно задумался об оптимизации приложения под планшет. Но долгое время, ввиду недостатка времени и ужасного эмулятора Honeycomb откладывал эту работу.
Но, спустя некоторое время, решил, что пора покупать планшет и переделывать приложение. Купил себе Galaxy Tab 10.1.
Оптимизация приложения выполнялась при помощи Compatibility Library и заняла около 16 часов работы: код всех activity был перенесен во фрагменты, а activities стали выполнять роль координации фрагментов. Т. е. когда приложение открывалось на планшете — можно показать несколько фрагментов, иначе — по фрагменту на экран.
Графика и дизайн
Как раз в это время, когда понадобился дизайн, был на GDD2010, где послушал советы по дизайну от Романа Нурика во время его доклада, а также немного пообщался после.
Вдохновленный его советами решил найти дизайнера. Нашел форум, где обитают дизайнеры, и просто написал, что нужен человек, который может помочь, т. з. в личку. Спустя час-другой отозвался один товарищ, я кинул ему ТЗ, а также мои корявые наброски UI. Мы договорились, мне понравилось, и решил работать дальше с ним.
Работу он выполнил. Но явно было видно, что человек не знаком с платформой. Пожалуй, это самая большая проблема при поиске дизайнеров: они не знают, как работает платформа, особенно, как она работает с ресурсами. Я говорю о таких тонкостях, как nine-patches, *dpi, state-list и т. д.
В 90% случаев, как и в моем, приходится обрабатывать полученные дизайнером файлы самому. Что требует порой значительного времени. Поэтому я составил для себя обязательный список деталей, которые теперь обязательно обсуждаю с дизайнерами, уверяющими, что имеют опыт работы с андроидом:
- знают ли они, что такое nine patch drawable, будут ли они их делать
- знают ли они требования и guidelines платформы
- понимают ли, что контролы могут иметь различные состояния, и что они должныв их всех сделать + пункт 1
Разумеется, чем больше из этих пунктов готов выполнить дизайнер, тем, скорее всего, сильнее Вам придется раскошелиться.
Публикация и продвижение
И вот, наконец, настал тот день, когда я опубликовал свое детище.
Сразу скажу, что сделал я это неправильно — в рабочий день, когда надо публиковать в начале выходных, т. к. новое приложение какое-то время будет находиться в списке новых и более заметно.
Опубликовал я 2 версии — бесплатную, содержащую не все упражнения (одно упражнение не входило в состав, а также не было фичи создания кастомных упражнений).
Утром следующего дня я зашел в консоль и увидел одну звезду с комментом «i hate it»… Ну вот и все, подумал я. Никто больше не будет его брать. Итак, что же я сделал, чтобы выйти из этой ситуации?
Сначала я хотел закрыть приложение, доработать, и выложить под другим именем, мол «you are not prepared». Но вскоре начали появляться 5-звездные рейтинги, но без комментов. Я подумал, что все же многим нравится, но поганый коммент вверху все равно портит первое впечатление. Поэтому я сделал так, чтобы через некоторое время в бесплатной версии показывался диалог, просящий пользователей проголосовать. Это дало замечательный результат: рейтинги посыпались дождем, преимущественно хорошие — 4-5 звезд, но, куда без них, немного и плохих было. Приложение резко поплыло вверх.
Так что я считаю это обязательным компонентом продвижения. Не нахально, а скромно попросить пользователя проголосовать, если им нравится, чтобы помочь остальным найти это чудо. Но мы-то с вами знаем :).
Какие еще действия я предпринял для продвижения:
- Facebook страничка
- Веб-сайт и его продвижение через AdWords
- умеренная AdMob реклама
- House Ads для продвижения платной версии из бесплатной
- Перевод на русский, испанский
В итоге, платное приложение медленно но верно начало двигаться вверх, и осело на 1-2 странице раздела образование.
Для поддержки позиции я применял такие трюки, как акции, типа «на этих выходных за полцены». В бесплатном приложении, которое использует на порядок больше людей помещал всплывающую рекламу, призывающую обновиться на этих выходных за полцены.
Также нет-нет, да грешу «пустыми» апдейтами. Как бы Гугл не отпирались, я явно вижу, что апдейты дают небольшой временный прирост скачиваний. Однако, не стоит, конечно, делать это слишком часто, так как пользователям не нравится, когда нужно обновлять приложение часто, а видимого эффекта нет.
You're Featured, baby
Для меня это, конечно же тайна, но есть ряд подозрений, которыми хотел бы поделиться.
Во-первых, я держал свое приложение в топе своей категории.
Во-вторых, это произошло через неделю после выпуска Honeycomb версии. Возможно, гугл так поддерживает переход разработчиков на планшеты.
В любом случае, там мое приложение провисело ровно две недели.
Поддержка
Самый важный этап, который начинается после публикации — это поддержка.
Опубликовав приложение, Вы подписываетесь на то, что будете всегда готовы выслушать злобных юзеров и подсказать им, что бы они Вам не написали. Каждый день читать новые рейтинги в поисках возможных проблем. Чем больше Вы это будете делать, тем больше Вас будут любить.
Пользователи будут писать Вам на мыло. Обязательно отвечайте им и старайтесь помочь. Каждый такой довольный в итоге пользователь — это пятерка в рейтинге, и потенциал для роста. В моем случае — довольный музыкант расскажет другу музыканту, учитель посоветует детям — музыкантам (да-да, мне действительно писали с своими советами преподаватели музыки из Америки).
Трекинг ошибок
Очень важно тщательно тестировать Ваше приложение перед тем, как выложить. Но, к сожалению, высокая фрагментированность, недостаток времени не позволят сделать это на 100%. Поэтому необходимо иметь возможность получать информацию от пользователей.
Самым информативным способом узнать об ошибках, возникающих у пользователей, я считаю отправку сообщений об ошибках напрямую из приложения. Пользователи редко будут отсылать Вам трейсы ошибок сами.
В Perfect Ear я отслеживаю ошибки через Google Analytics. Т. е. стоит у кого-то вылетель эксепшну, я тут же посылаю событие с описанием ошибки, строкой, и т. п.
В новых своих приложениях я отправляю ошибки себе на почту через сервер. У меня есть простенький сервачок, висящий на AppEngine, которому я отправляю всю необходимую мне анонимную информацию об ошибке, а тот, в свою очередь, отправляет мне на почту отчет.
Статистика
Для ведения статистики я использую Google Analytics. Есть специальный SDK, позволяющий узнать, что в Вашем приложении пользуется популярностью, а что нет.
Монетизация
Монетизировать приложение я решил стандартной схемой: продажи. Я делаю платную и бесплатную версии, бесплатная с ограниченным функционалом, платная — полная.
Реклама при таких объемах не только бессмысленна, но и губительна, т. к. только раздражает пользователей.
Важно заметить, что здесь очень важен баланс между бесплатной и платной версией. Если Вы включите почти все в бесплатную, Вам очень трудно будет заинтересовать пользователей в апгрейде. Если наоборот — у них будет недостаточно информации для решения. На мой взгляд очень важно оставлять «крючки» в бесплатной версии.
Например, упражнение «Пение Интервалов» у меня только в платной версии, но в бесплатной я не убрал пункт меню, а оставил его. Пользователь жмет на него и видит диалог, в котором описывается, какое это замечательно упражнение и кнопка «Купить».
Затраты/прибыль
Да, это приложение нишевое, и много на нем не заработать, но, приведу все же некоторые цифры.
Примерные затраты
- $25 — взнос Google
- $50 — дизайн
- $250 — AdMob суммарные затраты за все время
- $300 — мои бесполезные затраты на фрилансеров с FFT
- $30 — кампания в AdWords
- $50 — регистрация домена perfectearapp.com и создание почтового ящика через GoDaddy.com
- $50 — консультация с юристом по налоговому вопросу
- $600 — Galaxy Tab
- $1355 — Total
Доходы
В первые месяцы приложение не приносило практически ничего. Потом, после продвижения в топ категории пошла прибыль около 300 долларов в месяц и постепенно стала расти до 500-600 долларов в месяц к лету. Сейчас в среднем — 20-35 долларов в день, доход держится в районе 700-900 долларов в месяц.
За две недели в разделе featured доходы составляли от 300 до 500 долларов в день, т. е. фактически, за эти 2 недели я окупил все затраты 4 раза.
Очень хороший стимул продолжать работать.
Вывод денег
Я осуществляю по стандартной схеме: AdSense-Рапида-банк. У меня есть отдельная статья про это.
Итог
Заработать инди деву на Андроиде можно. Мои наблюдения сейчас, что Маркет только начинает становиться на ноги, каждый день становится все больше и больше приложений от именитых контор: EA, Disney, и т. д. Это свидетельствует, что Андроид, наконец получает признание, а это, обязательно, будет выводить Маркет на новый уровень.
Все это я пишу после того, как увидел комментарии людей, типа «нельзя окупить свои траты в Android». Можно, и Андроид достаточно жизнеспособен как способ заработка.
Сейчас пишу свою собственную игру, посмотрим, что из этого выйдет.
Надеюсь, Вы нашли статью полезной, если есть какие-то вопросы — с радостью отвечу в комментариях.