Войти

Или войди с помощью

Dev Story Zello. История миллиона пользователей

Информатор avatar |

ТЕКСТ: АЛЕКСЕЙ ГАВРИЛОВ. Идея сделать «голосовую аську» возникла у меня в 2005 году, после того как поигравшись с Jimm на своей Motorola v535, я понял что ICQ на телефоне – это здорово, но очень неудобно. Проект получил кодовое имя VoICQ (voice icq) или «Васька», я написал краткое резюме, исследовал возможности современных (по тому времени) телефонов и … на этом все закончилось. У нашей команды, занятой тогда заказными разработками ни времени, ни сил тянуть свой продукт с неясными перспективами не было. Прошло два года прежде чем мы вернулись к идее и начали разработку первой версии приложения, которое решили назвать Loudtalks (дабы избежать недоразумений с владельцами торговой марки ICQ). Программа для Windows позволяла отправлять голосовые сообщения по принципу рации – нажал-говоришь-отпустил-слушаешь. Позднее были реализованы каналы для группового общения. К каждому каналу могут подключиться одновременно до 300 человек. Идея мобильного приложения продолжала витать в воздухе, но первый iPhone тогда только появился, а до момента, когда Apple откроет SDK сторонним разработчикам оставался еще почти год.

Начинаем работу

Получилось так, что ко времени, когда мы приступили к разработке приложения для iPhone, у нас уже были запущены приложения для BlackBerry и Android. Оба приложения написаны на Java, и нам удалось 80% кода использовать на обеих платформах, что сильно упростило разработку и поддержку ценой отказа от использования некоторых «вкусностей» (например, generics) доступных только в Android. Клиент для ПК был написан на C++, и нам предстояло решить – пытаться ли портировать существующий C++ код на iOS или переписать «с нуля» на Objective C. Мы выбрали Objective C и ARC с тем, чтобы упростить в будущем развитие и поддержку проекта. Пришлось отказаться от совместимости iPhone 2G, но прогресс есть прогресс.

Несмотря на кажущуюся простоту приложения, впереди была немалая работа по переводу порядка 26,000 строк исходного кода с Java на Objective C. Мы планировали закончить портирование за три месяца, однако в реальности потребовалось шесть.

Новое имя

Одновременно с запуском разработки, мы определились с новым ярким, кратким и запоминающимся именем для продукта – Zello и купили домен zello.com. Решение было непростым – мы (да и многие пользователи) уже успели привыкнуть к старому имени, но общение с носителями языка показало, что Loudtalks вызывает неоднозначную (часто негативную) оценку. На поиск нового имени мы потратили около 3 недель, рассмотрев более 1000 вариантов. Имя Zello оказалось среди множества других предложенных участниками конкурса на www.crowdspring.com и первоначально не привлекло нашего внимания (в том числе и из-за того, что домен Zello.com был уже занят). Однако, постепенно отбросив все остальные варианты, мы остановились именно на нем (решив использовать свободный домен zello.me в качестве «плана Б», если не удастся заполучить .com). Результат конкурса названий нам так понравился, что и для логотипа решили провести конкурс (на этот раз на www.99designs.com).


Тот самый логотип

Дизайн без дизайнера

Для успешного iPhone приложения необходим очень качественный дизайн и, если на BlackBerry и Android большинство приложений не отличаются красотой, средний уровень топовых приложений на iPhone чрезвычайно высок. В идеале в дизайн-команде iPhone приложения должно быть два человека – UX-дизайнер, ответственный за создание схемы взаимодействия пользователя с программой, и дизайнер графики. У нас не было ни того, ни другого. Из-за ограниченности бюджета изначально мы попытались найти одного специалиста, который смог бы совмещать обе роли и стать душой дизайна Zello.

Увы, найти такого человека оказалось крайне трудно… мы продолжаем его искать и по сей день. К январю работа по портированию движка близилась к концу и необходимо было начинать разработку интерфейса. За неимением лучших альтернатив за описание сценариев использования, создание wireframes, а впоследствии и графики пришлось взяться мне самому.

Ключевыми критериями оценки интерфейса были приняты простота (использовать приложение должно быть возможно одной рукой не глядя на экран) и максимально возможное применение стандартных элементов и метафор пользовательского интерфейса. За две недели были нарисованы, как тогда казалось, окончательные варианты схем всех экранов приложения. Рисовал я их карандашом на листах A4, потом фотографировал и отправлял по e-mail, чтобы обсудить по скайпу с командой.


Так выглядел самый первый вариант wireframes

Экран на котором пользователь будет проводить больше всего времени – это экран разговора с определенным человеком или группой. Царит здесь кнопка push-to-talk. Чтобы не перегружать экран решили историю сообщений сделать «складной». От раскрывания ее по клику как и от табов пришлось отказаться, так как при использовании приложения пользователи часто задевали ладонью края дисплея, что приводило к ложным переключениям экранов.


Эволюция экрана разговора

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

Про аппаратные кнопки и фоновый режим

В процессе разработки возникла идея – использовать аппаратную кнопку громкости (одну из двух) в качестве переключателя передачи. Повесив обработчик на обратный вызов аудио системы об изменении громкости можно отловить факт нажатия, отработать это событие и вернуть громкость назад. К сожалению, при этом невозможно отследить отдельно факт нажатия и отпускания, а кнопка не может выполнять свою основную функцию, что может запутать пользователя и противоречит требованиям Apple, поэтому от идеи пришлось отказаться. Зато в последнем обновлении мы добавили возможность использовать кнопку гарнитуры в качестве переключателя передачи (первое нажатие – начало передачи, второе – остановка) – работает это, в том числе, и c отключенным экраном, и когда приложение выполняется в фоне.

Про работу в фоне стоит сказать отдельно. Нам хотелось, чтобы приложение могло принимать и сразу проигрывать входящий звук, даже когда экран выключен или приложение свернуто с тем чтобы можно было всегда оставаться на связи. Начиная с iOS4 и iPhone 3GS для VoIP приложений такая возможность доступна – при переходе в фон приложение останавливается, как обычно, но при получении входящих данных система его будит, позволяя выполнить их обработку. Однако при этом есть несколько неочевидных особенностей. Во-первых, если ваше приложение слишком часто просыпается (чаще чем 15 раз в течение 5 минут), то оно будет принудительно завершено системой для экономии энергии. В нашем случае это происходило, если подключиться к каналу, из которого как раз с такой частотой приходят сообщения. Оказалось, впрочем, что система сама перезапускает приложение в этом случае, так что оставалось лишь убедиться, что код корректно отрабатывает при автоматическом рестарте без участия пользователя. Во-вторых, приходится считаться с тем, что кроме вашего приложения на телефоне используются и другие программы записывающие или проигрывающие звук (например, собственно телефон). Приложения, используемые последними имеют преимущество (перехватывают аудио фокус) и ваше приложение утрачивает возможность проигрывать звук до момента, пока пользователь снова его активирует. В нашем случае такое поведение почти фатально – программа неожиданно перестает принимать входящие сообщения. Чтобы сгладить проблему при обнаружении потери аудио фокуса Zello автоматически активирует статус «Занят». В этом режиме входящие сообщения принимаются, но не проигрываются сразу (попытка это сделать приводила бы к ошибке), а попадают в историю сообщений, откуда их можно прослушать позднее. При этом используются системные уведомления, чтобы сообщить о новых сообщениях.

App vs Apple

Наконец релиз готов, протестирован и отправлен в App Store. Через неделю приходит отказ. Причина – не предоставлена информация необходимая для тестирования приложения. Действительно, для использования программы необходима учетная запись, но ведь при первом старте можно ее создать. Вероятно тестировать процесс создания аккаунта цензорам не интересно – создаю им два аккаунта и отправляю заново. Через неделю – опять отказ. Причина – «указанные вами учетные записи не работают». Как же так, проверяю и перепроверяю – все работает. Смотрю еще раз на присланный скриншот и обнаруживаю, что имя на скриншоте (appletest1) отличается от того, которое мы указали в описании (apptest1) и сообщение об ошибке вполне красноречиво об этом говорит – «Убедитесь что вы правильно указали имя пользователя и пароль». Пишу ответ с просьбой внимательнее вводить имя пользователя, а заодно создаю еще пару аккаунтов с именами как на присланном скриншоте. Еще через два дня, приложение уходит в review и меньше чем через 10 минут – уже одобрено!


Эволюция иконки приложения. От первоначальной идеи нарисовать «алюминиевую» иконку отказались в пользу более строгой и контрастной.

Первые успехи

В течение двух недель с момента запуска Zello успело побывать в общих топ-10 App Store в 22 странах, суммарное число загрузок на сегодня – больше миллиона. Лучший результат в российском App Store – 14 место в категории «Социальные сети». Каждый день (на всех платформах) приложение используют более миллиона человек. Приложение бесплатное и без рекламы, ближе к концу лета планируем выпустить платную версию с дополнительными возможностями.

Цена: Free [iTunes link]

Данная история опубликована в рамках рубрики Developer Story, где разработчики делятся секретами своей внутренней кухни.
36
undefined
iPhones.ru
ТЕКСТ: АЛЕКСЕЙ ГАВРИЛОВ. Идея сделать «голосовую аську» возникла у меня в 2005 году, после того как поигравшись с Jimm на своей Motorola v535, я понял что ICQ на телефоне – это здорово, но очень неудобно. Проект получил кодовое имя VoICQ (voice icq) или «Васька», я написал краткое резюме, исследовал возможности современных (по тому времени) телефонов...

Войди и оставь комментарий

Или войди с помощью

<- Назад Забыли пароль? Войти
  1. Whilser avatar
    Whilser 22 июня 2012
    0

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

    Алексей Гаврилов @Zello avatar
    0

    @Whilser, Прослушивать повторно можно из истории сохраненной на устрйстве. Если вы не онлайн, сообщения для вас примет сервер и отправит push-уведомление. Как только сообщение доставлено клиенту с сервера оно удаляется.

    Войди на сайт, чтобы ответить
    Ответить
  2. zMaster avatar
    zMaster 22 июня 2012
    0

    А почему собственно для iPhone версии вы задались дизайном, а для Android так и оставили то УГ которое сейчас в play market? Что собственно за дискриминация?

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

    zMaster avatar
    zMaster22 июня 2012
    0

    Да и еще одно, использование уникального имени пользователя при регистрации это жутко неудобно, при том что у вас миллион пользователей.
    Не лучше ли было сделать авторизацию по e-mail адресу, а nik name бы пользователь вводил свое, пусть даже совпадающее с другими. Так удобнее самому пользователю, при регистрации не надо выдумывать ник нейм который еще не занят, а так же его социальной группе т.е. списку контактов с кем он будет общаться.

    Алексей Гаврилов @Zello avatar
    0

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

    У использования имен пользователей есть как недостатки, так и преимущества. Например, многи пользователи делятся именем пользователя в твиттере, форумах и т. д. и они могут это сделать не публикуя свой e-mail.

    daddy_kul avatar
    daddy_kul22 июня 2012
    0

    @Алексей Гаврилов @Zello,

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

    Какие могут возникнуть проблемы с разрешением экрана? Почему у других разработчиков таких проблем нет?

    Алексей Гаврилов @Zello avatar
    0

    На Android у Zello как раз дела неплохо — почти половина наших пользователей используют именно Android. По опыту участия в разработке других приложений (TuneIn Radio) могу сказать, что доход от продаж платных программ на Android на порядок меньше, чем на iOS, и лучше всего там зарабатывать на рекламе.

    Дизайн для Android делать объективно сложнее, уверен, что проблемы есть у всех, некоторые их уже решили, некоторые еще нет, а кому-то все равно. Мы относимся ко второй категории )

    zMaster avatar
    zMaster22 июня 2012
    0

    @Алексей Гаврилов @Zello,
    Надо полагать что сделать (точнее портировать) хороший дизайн на андройд не сложнее чем переписать весь код программы. Дизайн же программы для iOS есть, надо только скопипасить его для андройда.
    http://developer.android.com/guide/practices/screens_support.html – ничего тут свех естественного нет ;)
    У айфона тоже два разрешения, а еще у iPad тоже два разных.
    Для разработчиков топовых игр на андройд такой проблемы не стоит.

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

    С кнопками громкости все ясно, действительно лучше их оставить в покое. А с именами тогда лучший принцип как у скайпа, есть e-mail, skype имя которое можно публиковать (или присвоить номер как у аськи) и ник нейм который пользователь сам себе выбирает. В Zello я не нашел как мне сделать себе ник нейм который я хочу. А дальше пользователь сам будет решать, что ему публиковать e-mail или некий ID, а найти собеседника можно было бы по обоим параметрам. Вы конечно скажете, пишите мол свой реал нейм… ээ, это соц.сеть, а не банк. Да и Ивановых и Сидоровых среди миллиона будет предостаточно, а будет у вас 10 или 20 миллионов или еще больше (чего я вам и желаю!), что тогда?

    P.S. Кстати кнопка back в андройде просто сворачивает приложение, так же как кнопка home. Не есть айс :( Я конечно понимаю, что весь смысл в том, что бы постоянно держать прогу в фоне, но многие знают что home это свернуть прогу, а back это выход из программы, можно повесить запрос о выходе.
    У пипла ведь найдется причина выйти из программы когда это необходимо, а не гасить ее через задачник. Это айфоновская идеология сворачивать все программы независимо от того что хочет пользователь, а андройдовцы более избалованы, надо что бы было куча опций, тем, что бы любой чих и пых можно было контролировать :) У вас кстати с этим порядок ;)

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

    Алексей Гаврилов @Zello avatar
    0

    @zMaster, спасибо за пожелания, согласен что никнеймы будут в тему. Кстати, я в качестве основного телефона использую Android. Рекламу в приложениях не люблю, поэтому ее нет. Надеюсь придумаем более умный способ зарабатывать.

    zMaster avatar
    zMaster23 июня 2012
    0

    @Алексей Гаврилов @Zello,
    А я тоже рекламу не люблю, поэтому на андройде с root-ом и Adaway. Процентов 80 моих друзей тоже с андройдами и про root даже не слышали, далеки от хак теч ;) Вообщем не паханое поле, но решать конечно же не мне :)
    А задумка с бизнес рынком великолепная, это же всякие курьерские службы, такси и т.д. GPS можно прикрутить с картами…

    Войди на сайт, чтобы ответить
    Ответить
  3. madhorse80 avatar
    madhorse80 22 июня 2012
    0

    Приветствую! готов помочь с дизайном вашего чуда!
    за плечами минимум 1 топовое приложение в апп стор.
    контакт по запросу,ссылка тоже.

    Алексей Гаврилов @Zello avatar
    0

    Напишите, пожалуйста, на alex (at) zello.com

    Войди на сайт, чтобы ответить
    Ответить
  4. madhorse80 avatar
    madhorse80 22 июня 2012
    0

    отписал с 5fingers(сабака)list.ru

    Войди на сайт, чтобы ответить
    Ответить
  5. iPad HD avatar
    iPad HD 22 июня 2012
    0

    Я вот непонял, а прослушать и ответить с компа можно прям из Аськи? Типо не у всех же миккрофон к компу подключен. Или я могу шоворить с машины, а мне писать будут в ответ?

    Алексей Гаврилов @Zello avatar
    0

    Чтобы общаться нужен микрофон. Текст отправить можно в виде сигнала вызова, чтобы привлечь внимание и начать разговор, но суть сервиса в общении именно голосом. По нашим данным 96% пользователей подключаются к Zello c мобильных устройств и только 4% c ПК.

    iPad HD avatar
    iPad HD22 июня 2012
    0

    @Алексей Гаврилов @Zello,
    Там нельзя Аську добавить, получается что на другом конце тоже ваш клиент должен быть? А под Мак он есть?

    Алексей Гаврилов @Zello avatar
    0

    @iPad HD,
    Все верно, клиент нужен обоим. Для Мака клиента пока, к сожалению, нет, но план сделать его есть.

    Войди на сайт, чтобы ответить
    Ответить
Помни о правилах — если начал оффтопить, то не удивляйся потом.

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.