Mobile

Будь в курсе: агрегатор «Алтайские новости»

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

 

«Алтайские новости» – это агрегатор новостей для наиболее известных новостных ресурсов Алтая:

Главный экран новостей
Главный экран приложения

Заказчик

В 2015 году к нам обратилась администрация Алтайского края с важной миссией: разработать приложение для информирования населения и формирования новостной картины дня.

Сайт администрации края
Официальный сайт администрации Алтайского края

Мы посчитали, что для нас эта миссия выполнима и с радостью взялись за столь важный и ответственный заказ.

Задача

Нужно было разработать приложение, которое позволяет просматривать актуальные новости из выбранных источников.

В качестве источников взяли топовые и наиболее цитируемые алтайские СМИ.

Основные требования к приложению:

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

Новости в приложении
Отображение новостей в приложении

Разработка

Разработано для платформ Android и iPhone.

Приложение интегрировано:
С сайтами новостных источников.
Позже к уже перечисленным добавился сайт краевого информационного телеканала «Катунь 24» (http://www.katun24.ru).
Источники новостей - макет
Источники новостей: макет

С социальными сетями.
Приложение привязано к таким популярным социальным сетям как Facebook, «ВКонтакте» и Twitter.
Благодаря этому можно делиться с друзьями наиболее интересными и волнующими новостями, не выходя их приложения.
Меню социальных сетей
Меню для социальных сетей (макет)

С Gismeteo.
Мы хотели, чтобы приложение было максимально полезным, поэтому заморочились с интеграцией с Gismeteo и запилили раздел «Погода».
Это крупный метеорологический ресурс, который берет данные из «Гидрометцентра» (https://meteoinfo.ru). Прогноз от Gismeteo считается одним из самых точных и удобных.
Сайт предоставляет информацию о погоде в почти 13 тысячах населенных пунктов каждые три часа в течение суток, а по некоторым пунктам – каждый час.
Поэтому ему вполне можно доверять, и он достоин, чтобы его интегрировали в новостное приложение.
Сайт Gismeteo
Официальный сайт Gismeteo

Интеграция по API.

Позже мы добавили в приложение раздел «Избранное», возможность видеть уже прочитанные новости и способность текста подстраиваться под размеры экранов телефонов и планшетов.

Принцип работы

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

Настройка текста новости
Мы предусмотрели даже такие несущественные на первый взгляд мелочи. Текст новости можно настраивать по своему усмотрению. С текстом новости можно проводить следующие операции:

  • Менять режим отображения (день/ночь).
  • Изменять размер шрифта с помощью ползунка или клавиш громкости.
  • Добавлять в «Избранное».
  • Делиться в соцсетях (кнопка «Поделиться»).

Работа с текстом новости
Выбран «ночной» режим и новость добавлена в «Избранное»

Сохранение новости
Помимо того, что пользователь может поделиться новостью, он может сохранить ее на своем телефоне и прочитать позже. Причем даже без доступа в интернет.

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

Поиск новости
Поиск новости по дате (макет)

Фильтрация новостей
Прежде всего, все новости делятся по территориальному признаку: «Новости Барнаула», «Новости Бийска», «Новости края», «Новости России», «Новости мира», «Все новости». Фильтр обрабатывает по ключевым словам в новости. Допустим, при парсинге, если в тексте встречается «Барнаул», «барнаульский» и так далее, то эта новость помечается как новость о Барнауле.

Новости фильтруются не только по источникам, но и по тональности. Режим «Без чернухи» позволяет оставить в ленте только те новости, в которых не встречаются стоп-слова «убийство», «происшествие», «преступление», «трупов», «ножевых» и прочее. С этим режимом вы будете получать только позитивные новости, и нервы будут в порядке.


Фильтры новостей по территории и тональности

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


Раздел «Погода», отображение на определенный день (макет)

Дизайн

По умолчанию новости отображаются большими фотографиями с заголовками.

Отображение новостей
Отображение новостей по умолчанию (макет)

Если нет фотографии, то новость выглядит как плашка с текстом.

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

Кнопки для переключения между видами отображения новостей (макет)

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

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

Готовый проект

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

Убедитесь сами!

Доступно в Google Play и App Store

Бронь крепка. Как работает приложение для заказа столиков в ресторанах двух столиц

 

Один из наших клиентов взялся решить проблему онлайн-бронирования столиков для ресторанов и кафе сначала в Москве и Санкт-Петербурге, а затем – и по всей России. Как мы разрабатывали приложение для заведений, работающих с сервисом – читайте ниже.

 

Факт: компания в сфере услуг, которая не способна обеспечить доступ к этим услугам через интернет, теряет до половины потенциальных клиентов. Зайдя на сайт и не увидев способа сделать онлайн-заказ, каждый второй уйдет в поисках чего-нибудь поудобнее.

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

Многие минимизируют издержки с помощью простого трюка: «Оставьте свой номер телефона, и мы вам перезвоним». Это безусловно на 200% лучше, чем ничего – но у такого решения масса слабых мест.

Один из наших клиентов взялся массово решить проблему по крайней мере для ресторанов и кафе. Сервис RestAdviser дает ресторанам возможность организовать онлайн-бронирование на своей площадке, управлять рассадкой гостей и делать многие другие полезные вещи. Кроме того, сервис работает и для пользы непосредственно клиентов – собирает отзывы и рейтинги с разных ресурсов (Афиша, Restoclub, TripAdvisor), облегчая процесс выбора и минимизируя время на серфинг.

Сегодня RestAdviser работает в Москве и Санкт-Петербурге, но у сервиса есть долгосрочный план по выходу на федеральный уровень.

Энтерре RestAdviser заказал разработку мобильного приложения для своих клиентов – владельцев ресторанов. По задумке, администраторы и другие специально обученные люди в приложении видят онлайн-бронирования, подтверждают их, выбирают столики для гостей и управляют всем этим богатством. В качестве платформы выбрали iPad.

Задача

Удобное и функциональное приложение для ресторана. Оно должно уметь:

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

Логика работы приложения

Схема работы приложения в целом довольно простая и четкая, за исключением некоторых нюансов, которые выявились уже в процессе разработки.

Как осуществляется бронирование?

Как работает бронирование столиков в приложении

Конструктор в приложении – визуальный. Клиент-ресторан может создавать неограниченное количество залов, столов, указывать расположение важных для гостей элементов – сцены, окон, стен, дверей. Таким образом пользователь, который осуществляет бронирование, может выбрать лучший для себя вариант. Расстановку столов ресторан при необходимости может менять – например, если забронирован большой банкет.

Бронь можно перемещать с одного стола на другой.

С разработкой приятного и удобного конструктора у нас не было особых проблем, и это повод для гордости. В нашем портфолио мобильных приложений уже есть проекты, для которых очень важен визуальный и интуитивно понятный UI – например, векторный редактор графики Grapholite и конструктор баз данных Mobi DB. Так что нам оставалось применить имеющийся опыт к задаче.

А еще заказчик попросил нас сделать красивый календарь. Мы некоторое время думали, а потом нашли готовое и изящное решение на Хабрахабре. Очень рекомендуем!

Маленькие, но очень важные детали

В процессе разработки перед нами возникло три важных задачи.

  1. Сервис для ресторанов от RestAdviser – платный, однако мало кто готов покупать кота в мешке.
    Поэтому оценить функционал приложения клиент может бесплатно и без авторизации: поиграть с конструктором, проверить удобство, примерить на свое заведение. Однако синхронизация с сервером (а значит, и фактически бронирование столов) доступны только авторизованным, то есть заплатившим пользователям.
  2. Потенциальный конфликт бронирований, который может возникнуть, когда один и тот же стол забронировали одновременно (в нашем случае в течение пяти минут) через сайт и приложение, или через SMS.
    Представим, что есть очень популярный ресторан с ограниченным количеством крайне удобных столиков, которые нравятся всем. В этом случае на столе остается последняя бронь. А вытесненная попадает в специальный список нераспределенных заявок, которые требуют вмешательства администратора ресторана.
  3. Путаница со временем. Напоминаем, что сервис планирует выйти на федеральный уровень, а часовых поясов в России аж 11. Еще их периодически сдвигают, меняют, переводят стрелки.
    Чтобы избежать путаницы, мы сделали вот что. На сервере всегда московское время. Приложение об этом знает, и отображает пользователю настраиваемое время работы ресторана (местное). При синхронизации учитывается возможная разница во времени.

Что получилось?

Скриншот приложения
Скриншот приложенияСкриншот приложения

 

Десять полезных вещей, которые мы узнали на хакатоне 2GIS

 

В последние выходные февраля маленькая, но очень смелая команда разработчиков из Энтерры отправилась в соседний Новосибирск, на первый хакатон 2GIS – главных в России по городским картам. Что мы там делали и какие интересные выводы сделали по итогам – читайте ниже.

Особо отметим, что это была личная инициатива команды. В ее состав вошли трое мастеров кода: Виталий Басов, Илья Третьяков и Сергей Отморский. А маркетолог Екатерина Небогина помогала сделать проект уникальным, проводила презентации и отлично справилась с ролью лица «Потеряшки» (так называлось наше приложение).

С вечера пятницы и до самого воскресного заката они почти непрерывно кодили, рисовали и проектировали, чтобы реализовать очень душевную идею приложения «Потеряшка». Его задача – помогать в поиске пропавших домашних любимцев.

Кодим с Полканом
Кодим вместе с Полканом. Кто он такой – читайте ниже. Фото Екатерины Небогиной

За идеи приложений на сайте 2ГИС могли голосовать болельщики, а готовые проекты оценивали приглашенные эксперты. Оценивали со всех сторон – технологии, польза для общества, жизнеспособность бизнес-идеи, качество UX.

Наша команда по итогам хакатона получила специальный приз от Vector – бесплатное обучение по созданию городских проектов. А заодно и максимум пользовательских «лайков» в голосовании. И, безусловно, бесценный опыт, которым мы готовы поделиться.

Итак, что мы узнали и чему научились благодаря хакатону?

  1. Командная работа над единственным проектом в авральном режиме – это очень круто и вдохновляет (если это продолжается не слишком долго). Разработчики, которые обычно сидят в разных кабинетах и работают одновременно над несколькими разными задачами, обретают второе и даже третье дыхание, когда действуют совершенно синхронно. Возможность в любой момент обратиться к коллеге, зная, что он занят только той же задачей, что и ты, здорово повышает продуктивность команды в целом.
  2. На таких мероприятиях чем быстрее вас запомнят, тем больше шансов на пристальное внимание экспертов. Питч проекта нужно сделать максимально ярким и емким. Например, нас запомнили сразу. Мы начали питч со слов «Здравствуйте! Я Потеряшка». Написали «Потеряшка» на бейджах вместо обычных «Дизайнер» или «Senior Developer». Принесли талисман команды – плюшевого Полкана. В общем, код – это очень важно, но без брендинга и подачи идея пропадет зря.
    Питч проекта от Екатерины Небогиной
    Вот, например, Екатерина Небогина проводит незабываемый питч – фото организаторов.
  3. Идея или проект – это всего 10% успеха. Ее могут украсть, она может прийти в голову кому-то другому, пока вы ждете подходящего момента. 90% успеха – это быстрая и качественная реализация идеи.
  4. Вам обязательно нужен отличный домен. Вам жизненно важен отличный домен!
  5. Никогда не упускайте возможность обсудить свою идею с экспертом в нужной области. Мы приехали на хакатон с довольно четкой идеей приложения, но после консультаций реализовали ее совсем по-другому. Изначальная идея была интересна с точки зрения технологий, но наши консультанты смогли нам доказать, что она была провальной с точки зрения удобства пользователя.
    Обсуждаем "Потеряшку" с экспертами
    Ольга Полищук из Vector помогает нам взглянуть на приложение как на проект для жителей города, а не реализацию технологий – фото организаторов.
  6. В Новосибирске модно говорить не апИ, а Апи. Изучайте местный программистский сленг!
  7. Не стоит ехать на хакатон, если ваша идея не оригинальна или во многом дублирует что-либо уже реализованное. Мы очень критично оценивали свои идеи, когда готовились к поездке, и отметали все, для которых находили что-то похожее. В итоге призы получили команды, которые предложили что-то действительно уникальное, у чего нет аналогов.
  8. Будьте готовы не спать или спать мало. Мы отдыхали по два-три часа каждый. Большинство команд работали круглосуточно – когда один уходит спать, другой возвращается. Режим, мягко говоря, экстремальный – но мы, похоже, смогли выжать из себя максимум продуктивности в результате этого экстрима. Однако помните: если такой режим работы затягивается, вы рискуете стать самым эффективным кодером в больнице.
  9. Визуальная составляющая проекта имеет такое же значение, как и технологическая. Если что-то в проекте не работает, но есть красивая заглушка – это не станет серьезным минусом при его оценке. Многие и вовсе не заметят недостающего функционала.
  10. Чтобы сменить раскладку на макбуке во время презентации, необходимо пять программистов.

Готовы ли мы поехать еще на один хакатон? Спросите через неделю-другую, когда мы наконец выспимся Скорее, да – это крайне необычный опыт и встряска, которая мобилизует скрытые программистские резервы и позволяет взглянуть на свои навыки и опыт под другим углом.

Так что – рекомендуем. Отдельное спасибо 2GIS за хорошую организацию, вкусные обеды и печеньки.

Ведь нет печенек вкуснее тех, которые заработаны хорошим кодом

Ням-ням

 

От Энтерры – казахстанским автовладельцам. Удобная система поиска автозапчастей.

Мы недавно помогли заказчикам из Казахстана очень сильно обрадовать автовладельцев. Там не оказалось удобного сервиса, который особенно необходим, когда срочно нужны запчасти, но по магазинам ездить – не слишком удобно, а иногда уже и не на чем. Его, честно говоря, и у нас в стране тоже пока нет. Вот мы его и сделали, а называется он Auto-Market. Можно бы на том и закончить, но, по старой традиции, мы решили добавить подробностей – специально для любителей погружаться в детали.

 

auto-market1

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

auto-market2

Сначала об автовладельцах. Для пользователей все просто – они регистрируются на сайте Auto-Market.kz или через одно из приложений (для iOS или Android) с таким же функционалом. После этого сразу можно не откладывая приступать к поиску детали. После регистрации сервис продолжает быть воплощением простоты и таланта краткости. Весь интерфейс составляют всего четыре кнопки: «управление личным кабинетом», «история запросов», «поиск запчасти» и «поиск магазина или сервиса».

auto-market4

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

auto-market5

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

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

auto-market6

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

auto-market7

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

auto-market8

В итоге вся система работает как сложная база данных, объединяющая покупателей и продавцов. В системе администратор управляет основным ресурсом, который по параметрам автоматически распределяет заказы клиентов между магазинами. С одной стороны параметры поиска указывает покупатель, а с другой – задают магазины, чтобы отсекать заказы, которые к ним не относятся. При этом покупатель «видит» только верхушку этого айсберга.

auto-market9

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

auto-market10

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

auto-market11

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

auto-market12

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

auto-market13

Счет также отобразится в модуле «документы», наравне с другими документами.

auto-market14

Можно установить информацию о режиме работы предприятия. Это особенно важно делать потому, что клиент может указать в теме запроса критерий «работают сейчас». Ну и уехать в соседний магазин или сервис, который тоже работает круглосуточно или на выходных, а его оператор не поленился заглянуть в этот модуль

auto-market15

А можно еще устроить крутую рекламную кампанию, все там же, на сайте Auto-Market.kz Ведь где же еще ловить покупателей, как не на рынке?

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

Кстати, об инструментах. Серверная часть всей системы реализована во фреймворке для создания веб-приложений ASP.NET (MVC 3). Мобильное API реализовано с использованием  Thrift, что существенно понизило затраты на проектирование, согласование и реализацию его поддержки в серверной и клиентских частях. Это особенно здорово сработало еще и потому, что мы сами разрабатывали как клиентскую, так серверную части. Приложение для участников разработано на базе нескольких библиотек наших собственных домашних заготовок(да, у нас есть своя CMS для бизнес-приложений! ).

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

Синий кит Mobi DB, или немного о мобильных базах данных и совсем ничего – о китах и романах Меллвила.

 

Мы создали очень полезное приложение Mobi DB, которое помогает удобно хранить самые разные личные данные. Чтобы «подальше расположить», чтобы потом «поближе взять», свои CD и DVD коллекции, списки задач, покупок, книг, рецепты, списки продаж, расходы, контактные данные и другую важную личную информацию – как раз и нужен Mobi DB.

 

MobiDB1

Дружественный дизайн тут далеко не самое главное. Сам автор романа «Моби Дик», наверное, согласился бы с тем, что жизнь любого человека не укладывается в какие-то жесткие рамки. Соответственно, и упорядочить полезную для человека информацию бывает непросто. Сегодня вы хотите посмотреть кино, завтра надо подсчитать расходы на коммунальные платежи, послезавтра – позвонить какому-то важному человеку или отчитаться о какой-либо задаче и так – «без конца, до конца». И весьма непросто было найти одно приложение для удобной систематизации и хранения таких разных данных, а какая-то одна база данных с жестко заданными полями, в этом случае не подойдет. Важно, чтобы всегда была возможность настроить базы «под себя». Вот такие задачи и решает Mobi DB – позволяет создавать самые разные базы данных с произвольными набором полей и структурой, а также легко ими управлять.

 

MobiDB2

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

 

MobiDB3

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

 

MobiDB4

А вот так будет выглядеть карточка конкретного заказа в базе данных.

 

MobiDB5

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

 

MobiDB6

Если кому-то не хочется создавать свои базы данных с нуля, в Mobi DB есть 19 редактируемых шаблонов, которые можно настроить до полного соответствия своим требованиям. База для продаж цветов как раз создана на одном из них. Как и при создании базы с нуля, можно дополнять её, упрощать или наоборот – усложнять в визуальном редакторе. Вдобавок можно экспортировать и импортировать в приложение другие базы данных и шаблоны, а также подключаться к уже существующим на других носителях базам данных.

 

MobiDB7

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

 

MobiDB8

Например, в данном случае всегда можно увидеть, какие фильмы не просмотрены, выставить оценку и отсортировать их по выбранным параметрам.

 

MobiDB9

Чтобы посмотреть какую-то позицию в таблице подробнее, надо её выбрать и тогда откроется созданный в визуальном дизайнере шаблон. Вот так все и работает.

 

MobiDB10

Если вам уже наскучило описание работы с приложением, самое время немного взбодриться. Мы как раз собрались еще немного рассказать о том, как все это сделано.

Mobi DB создан на C# с использованием фреймворка для кросс-платформенной разработки мобильных приложений Xamarin. Для статистики и отслеживания исключений мы использовали Google Analytics, для сканирования баркодов – библиотеку Zxing.

С одной стороны, всегда есть соблазн сделать приложение сразу для нескольких платформ. Но, с другой стороны, Xamarin не дает возможности писать кроссплатформенный пользовательский интерфейс. Поэтому перед разработкой кроссплатформенного решения всегда требуется определить, сколько кода можно будет разделить между кросс-платформенной частью и UI. Может оказаться в итоге, что эффективней использовать “нативные” приложения для Вашего проекта.

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

Сейчас в разработке находятся версии для других платформ и еще скоро у приложения появятся новые функции. Например, в Mobi DB можно будет вводить данные, сканируя штрих-коды.

mobi

 

На этом пока все. До новых встреч!

 

40 секретов заработка с внутриигровых покупок

Перевод статьи 40 Secrets to Making Money with In-app Purchases

Заработок с внутриигровых покупок(IAP) сводится к одному простому вопросу – почему мы покупаем? Я дам вам подсказку – главным образом для удовлетворения своих эмоциональных и психологических потребностей. Если вы поймете, как думают люди в вашем приложении, вы сможете заработать, и эта статья как раз об этом. В этой статье я расскажу 40 секретов, которые вы можете использовать в ваших приложениях прямо сейчас, чтобы зарабатывать больше с внутриигровых покупок. Вот некоторые из методов, о которых вы узнаете:

  • как использовать отвлекающий эффект;
  • как сформировать положительное отношение к вашему магазину;
  • как оптимизировать игру для платящей аудитории;
  • и еще более 37 дополнительных советов.

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

1. Постепенно увеличивайте сложность игры
Давайте начнем с основ – это очень важно для облегчения пользователю работы с вашим приложением. Подумайте, будете ли вы тратить деньги в игре, с которой вы не знакомы? Скорее всего нет! Эта стратегия работает, если ваше приложение отвечает следующему требованию – пользователь должен в полной мере или с небольшими ограничениями оценить все возможности игры. Благодаря этому вы сможете достичь сразу двух вещей:

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

Люди, которые не хотят тратить деньги, будут тратить огромное количество времени, чтобы попробовать пройти её на одном лишь мастерстве. Поскольку эти пользователи проводят время в вашей игре, вы можете получить дополнительный доход с рекламы, интегрировав ваше приложение с такими сервисами, как Tapjoy, SponsorPay и др. Вы можете увидеть данную стратегию в  игре Contract Killer Zombies 2 ниже:

Schermata-05

 

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

2. Предлагайте бонусы

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

 

Schermata-05-2456431-alle-00.46.54

 

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

3. Покажите примеры вашего IAP контента

Вы бы стали тратить деньги на вещь, не зная на сколько полезна она вам окажется ? Дайте вашим пользователям попробовать некоторые из платных возможностей или даже все из вашего списка платного контента, но с расходуемым, ограниченным количеством. Например, если пользователи привыкнут к использованию расходуемых бонусов в самом начале игры, то вероятнее всего в будущем игроки будут склонны покупать больше, после того как они закончатся. Fruit Ninja использует эту стратегию ниже:

 

Schermata-05-2456431-alle-01.01.34

 

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

4. Заставьте игрока зарабатывать ваш IAP контент

Эта стратегия используется в феноменально успешной игре Candy Crush Saga. Данный метод зарабатывания на IAP основан на концепции того, что пользователь должен разблокировать последовательно все содержимое IAP, чтобы продолжать проходить игру:

 

Schermata-05-2456431-alle-01.11.54

 

Эта стратегия обеспечит сразу несколько преимуществ:

  • повышение внимания на платном контенте в вашем приложении;
  • увеличение ценности вашего содержимого в IAP;
  • уменьшение недовольства пользователей, которые не заинтересованы в вашем платном контенте.

5. Завлекайте игроков

Это совет от моего друга: Magnus Söderberg, CEO of Triolith Entertainment Triple Town является прекрасным примером той игры, которая завлекает пользователя своим увлекательным геймплеем и предлагает пользователям платную версию, чтобы улучшить их геймплэй.

 

Schermata-05-2456431-alle-01.18.07

 

Triple Town является головоломкой-стратегией с ограниченным количеством ходов за игровую сессию. Когда движения игрока будут исчерпаны, он должен выждать некоторый период восстановления, чтобы продолжить игру. Тем не менее игроки, которые не хотят ждать, могут купить возможность неограниченно передвигаться. В основном, эта возможность имеет доступную цену и позволяет игрокам проходить игру значительно быстрее.

6. Предложите платную функцию «Save me»

Когда игроки находятся в гуще событий и в опасных ситуациях приближаются к проигрышу в игре, вы можете предоставить им возможность  купить “Save Me”. Это возможность позволит пользователю играть, не теряя своего текущего счета и прогресса игры. В играх, где есть таблицы лидеров это может быть прекрасным методом для получения прибыли, так как пользователь принимает досрочное решение в пылу сражения.

 

OldRecord

 

Бесконечные игры являются наиболее подходящим видом приложения для этого метода. Некоторые из известных приложений, в которых можно увидеть данную стратегию: Subway Surfers и Temple Run.

7. Любопытство – хороший рычаг

Этот совет исходит от Trey Smith, маркетингового гения. Вы можете посмотреть и проверить некоторые из его идей в Trey Smith – Live at App Empire 2012. Вы должны использовать любопытство вашего игрока и заставить его хотеть купить ваш платный контент. Extreme Road Trip 2 является отличным примером игры, в которой это реализовано, как нельзя лучше. Вы можете затереть или скрыть содержимое до тех пор, пока он не будет разблокирован – это повысит желание игрока увидеть, что скрыто за занавесом.

 

Schermata-05-2456431-alle-01.49.34

8.      Используйте отвлекающий эффект

Давайте проведем небольшой эксперимент. Вы и ваша вторая половинка пошли в кино на фильм «Джанго освобожденный», и вы знаете правило – просмотр фильма должен сопровождаться поеданием попкорна. Подходите к прилавку, чтобы посмотреть на меню с ценой и количеством попкорна:

 

Schermata-05-2456431-alle-01.51.40

 

Какой бы вы выбрали и почему? Если вы выбрали большой пакет вы стали жертвой отвлекающего эффекта. 74% людей будут выбирать большой пакет. Обычно никто не выбирает средних, так что можем предположить, что 26% людей выберут небольшой размер. Бьюсь об заклад, вы выбрали большой размер, потому что он выглядит гораздо привлекательнее, чем средний и он только на 50 центов дороже. Отличная сделка! Теперь представьте, что вы столкнулись со следующим меню:

 

Schermata-05-2456431-alle-01.59.21-480x154

 

Какой размер пакета вы бы выбрали теперь? В этом случае 87% людей выбрали бы небольшой размер. Поскольку это огромная разница! В среднем в кинотеатре 100 человек, вот как продажи попкорна будут отличаться в двух сценариях: Сценарий А: Отвлекающий эффект – $7.00 * 74 человек + $3.00 * 26 человек = $596.00 Сценарий В: Без отвлекающего эффекта – $7.00 * 13 человек + $3.00 * 87 человек = $352.00 Просто добавив отвлекающий пакет среднего размера кинотеатр заработал дополнительные $244. Отлично! Отвлекающий эффект, как правило, работает только в том случае если пунктов всего три. Пункты должны выглядеть привлекательно и казаться пользователю потрясающей покупкой.

9. Погружайте пользователя в атмосферу приложения

Вот небольшой, но действенный трюк, который оказывает невероятный эффект и при этом его можно реализовать потратив пару секунд. Вы когда-нибудь играли в казино в Лас-Вегасе или в Монако? Оглянитесь вокруг там вы никогда не найдете часов, это притупляет восприятие времени и провоцируется остаться на более долгое время.

Schermata-05-2456431-alle-02.10.47-480x111

 

Удаление строки состояния продлит среднее время каждой игровой сессии.  Чем больше игроки проводят времени в вашем приложении, тем больше шансов убедить их приобрести у вас платный контент.

10. Предоставьте возможность «Удалить рекламу»

Хотя кажется, что каждый использует данную стратегию, не стоит недооценивать её. Это очень просто, поскольку многие пользователи хотят в полной мере насладиться вашим приложением и не хотят отвлекаться на рекламу. В качестве эксперимента зайдите в App Store и просмотрите отзывы ТОП приложений, которые не предлагают эту функцию. Вы не представляете сколько людей попросит эту возможность!

11. Если вы сомневаетесь использовать ли в игре легко расходуемые материалы

Недавнее исследование от Flurry показывает, что из всех возможных моделей IAP, расходуемые товары, как правило, приносят наибольший доход по сравнению с остальными типами содержимого. В инфографике от Flurry показаны различные модели IAP и как они отличаются друг от друга:

 

Schermata-05-2456431-alle-02.18.25

 

Если вы решите использовать лишь один вариант монетизации, выбирайте легко расходуемые материалы. Это будет вашим лучшим выбором!

12. Дайте вашим игрокам больше статистики – они это любят

Геймеры любят мельчайшие детали, к примеру, о том какой уровень у игроков в игре. Дайте вашим игрокам возможность помериться силами с другими игроками по всему миру. Ruzzle является отличным примером приложения, которое предлагает эту опцию через IAP:

 

Schermata-05-2456431-alle-02.29.20-196x320

 

13.  Цените время игроков

Большинство людей ценят время, как драгоценный дар, и геймеры не являются исключением. Люди, как правило, нетерпеливы и хотят удовлетворить свои потребности, как можно скорее. Большая часть людей тратит время на мобильные игры в ситуациях, когда ожидает чего-либо, например, находится в очередях и поэтому в любой момент может прекратить игру. Геймеры хотят выжать максимум игрового времени из каждой сессии. Вы можете заработать на этом, продавая им время. Если вы просматриваете App Store вы увидите множество игр, которые реализуют эту стратегию достаточно эффективным способом. Clash of Clans является достаточно успешной игрой, которая в основном реализует данную стратегию:

Schermata-05-2456431-alle-02.31.02-463x320

 

Clash of Clans позволяет ускорить процесс строительно-монтажных работ и строительство армии за виртуальную валюту игры. Это невероятно успешная игра, но вы можете пойти дальше и собрать данные о том, что побуждает людей тратить деньги за время. Отличным способом для измерения и регулировки эффективности вашей стратегии IAP является настройка сервера, где вы можете изменять длительность событий и их стоимость. Таким образом, вы сможете найти отличное соотношение продолжительности события и цены.

14. Группируйте содержимое IAP

Если у вас есть набор игровых элементов, которые могут быть связаны и проданы вместе, как группа, сделайте это! Люди любят покупать вещи в большом количестве. Draw Something это довольно неплохое приложение, которое предлагает цвета и группы цветов для их приложения:

 

Schermata-05-2456431-alle-02.40.00-199x320

 

15.  Формируйте положительные чувства к вашей игре

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

 

IMG_0364-180x320

 

16.  Предлагайте реликвии

Создайте дополнительное наиболее ценное содержимое по отношению к остальному. Украсьте его и сделайте значительно привлекательнее остальных предметов. Это будет ваша реликвия. Взгляните на контент, который предлагается в приложении Noble Nutlings:

 

Schermata-05-2456431-alle-02.45.37

 

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

17. Добавьте в игру юмор

Кто не хотел бы купить летающий холодильник?

 

Schermata-05-2456431-alle-02.50.05-433x320

 

Этот пример из очень успешной игры Mega Jump. То, что начиналось, в шутку в студии превратилось в играбельной красный холодильник, тысячи игроков потратили свои с трудом заработанные деньги на него.

18. Используйте ограниченные временем предложения

Предлагайте вашим пользователям товары в вашем магазине с ограничением времени сделки. Предлагайте товар со скидкой 50% тем самым вы будите повышать интерес пользователя приобретать у вас контент. Следующий скриншот из игры Contract Killer Zombies отлично это демонстрирует:

 

Schermata-05-2456431-alle-11.21.10-480x283

 

Таймер обратного отсчета, показывающий сколько времени осталось до конца скидочного предложения, создает эффект срочности и игроки могут в спешности приобрести ваш контент. В случае если вы можете контролировать изменения IAP, изменять настройки «время предложения» и «стоимость», вы сможете подобрать подходящую комбинацию этих параметров для вашего приложения.

19. Предлагайте правильный инструмент в нужное время

Специальные предложения, сделанные для нужных игроков в нужное время – это мощный метод продаж.

 

Schermata-05-2456431-alle-11.25.17-412x320

 

Например, специальное предложение в игре Contract Killer Zombies 2 нанять наемника, когда вы столкнулись с полной комнатой зомби. В этот момент игроки не знают своих шансов на победу и могут прибегнуть к помощи наемника.

20. Создавайте красочные магазины

Noble Nutlings имеет один из лучших магазинов:

 

Schermata-05-2456431-alle-11.27.51-480x218

 

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

21. Используйте психологию цвета

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

 

Schermata-05-2456431-alle-11.32.29-326x320

 

Вы можете использовать эти данные в качестве отправной точки. Отличной идеей является техника, известная как A/B тестирование, позволяющая понять какой цвет или сочетание цветов приведет к повышению коэффициента конверсии. Вы не должны перестраивать весь интерфейс, иногда небольшие изменения цвета кнопки «Купить» достаточно чтобы был получен отличный результат. clutch.io это отличный онлайн инструмент, который позволяет использовать A/B тестирование в вашем приложении. Этот инструмент недавно был приобретен компанией Twitter, которая в свою очередь предоставляет все необходимые инструменты для того, чтобы настроить все на своем сервере для поддержки A/B тестов в вашем приложении. Вот простой пример того, как цвет обычно влияет на поведение покупателей:

  • Желтый – часто используется, чтобы привлечь внимание покупателей.
  • Красный показывает актуальность, попробуйте применить его к ограниченному по времени предложению.
  • Синий создает ощущение доверия и безопасности.
  • Зеленый является самым простым цветом для наших глаз и обычно используется, чтобы помочь людям расслабиться.
  • Оранжевый создает призыв к действию.
  • Черный используется для рынка роскоши. Если вы используете реликвии в вашем IAP сделайте его черного и золотых цветов, чтобы придать ощущение, что этот товар является бесценным.

22. Ваш магазин должно быть легко найти

Сделайте несколько способов попасть в ваш магазин. Чем легче найти магазин, тем больше вероятность, что люди приобретут там что-то. Посмотрите на скриншот игры  Draw Something, где видно, что в игре используется сразу несколько способов попасть в магазин:

 

Schermata-05-2456431-alle-11.43.48-188x320

 

23.  Предлагайте игрокам разовые сделки

Eternity Warriors 2 показывает отличный вариант реализации разовой сделки:

 

Schermata-05-2456431-alle-11.46.49-480x284

 

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

24. Привлекайте внимание игроков

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

 

Schermata-05-2456431-alle-11.49.49

 

25.  Предложите мульти-покупки

Предложите что-то бесплатно, если пользователь покупает определенное количество контента, подобное используется в супермаркетах для поощрения больших покупок. Однако не переусердствуйте, люди могут привыкнуть к «уцененным» товарам. Приложение ниже отлично показывает пример мульти-покупок:

 

Schermata-05-2456431-alle-11.53.56

 

26.  Создайте свою собственную экономику

Постройте экономику из доступной и премиум валюты. Доступная валюта – это та валюта, которую можно заработать в процессе игры. Премиум валюта доступна только тем игрокам, которые используют реальные деньги. Вам нужно заставить игроков, которые зарабатывают доступную валюту, играя в игру, играть как можно больше, зарабатывая тем самым вам на рекламе или приобрести премиум валюту и обменять её на доступную валюту. На этом скриншоте вы можете увидеть пример премиум валюты на продажу:

 

Schermata-05-2456431-alle-11.56.06-480x293

 

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

27. Используйте Applicasa для управления стратегией вашего IAP

Applicasa.com является мобильной платформой, которая поможет вам настроить и оптимизировать IAP. Их платформа все еще находится в бета-версии, но уже сейчас кажется многообещающей и качественной. Есть несколько способов, которыми Applicasa помогает вам управлять вашими предложениями в IAP:

  • Помогает понять насколько высоки или низкие цены.
  • Следить за валютой доступной в вашей виртуальной экономике и сколько из этого используется каждый день.
  • Получайте подтверждение каждой сделки в IAP.
  • Настройте динамический виртуальный магазин, где вы можете уточнять цены, детали и загружать новые элементы.
  • Отслеживайте, какой элемент наиболее привлекательный и сколько раз он был приобретен.
  • Выполнять A/B тестирование для любого вашего содержимого.
  • Автоматическое разделение пользователей по их поведению на группы. Это позволит рекламировать содержимое на различные категории людей.

Важно отметить, что все пользователи отличаются и вы не сможете эффективно продавать для всех. На рисунке ниже показано, как Applicasa производит разделение игроков на группы:

 

Schermata-05-2456431-alle-12.14.14-436x320

 

Applicasa также позволяет создавать акции и специальные предложения или объявления на основе поведения пользователей. Два следующих графика показывают, как возраст и пол влияет на покупательские привычки пользователей:

 

Schermata-05-2456431-alle-12.16.29-387x320

 

28.  Предложите платный контент в качестве награды

Когда вы предлагаете платный контент в качестве награды за выполнение определённого действия, ваше предложение будет как правило с благодарностью принято. Кроме того это позволяет повышать доверие к вашему приложению. Subway Surfers предлагает следующую награду за вход в их игровой центр:

 

Schermata-05-2456431-alle-12.36.15-190x320

 

Когда вы отдаете виртуальную валюту в качестве подарка вы тем самым повышаете шанс того что игрок вернется в ваше приложение повторно. Одним из хороших примеров такой награды является игра The Simpsons™: Tapped Out:

 

Schermata-05-2456431-alle-12.40.01-480x284

 

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

 

Schermata-05-2456431-alle-12.41.33

 

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

29. Управляйте сложностью игры

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

30. Адаптируйте игру для различных аудиторий и предпочтений

Дайте пользователям возможность изменить их внешний вид в игре, покупать одежду или выбирать аватар. Это позволит игрокам быть индивидуальными. В игре Temple Run это сделано превосходно:

 

Schermata-05-2456431-alle-12.49.18-194x320

 

31. Предлагайте помощь в сложных моментах

Предлагайте игрокам, зашедшим в ваше приложение впервые, пройти обучение. Contract Killer Zombies 2 используют эту технику. Если у вас закончились патроны или вам необходимо более сильное оружие это игра предложит вам это.

 

Schermata-05-2456431-alle-13.36.06-480x283

 

 

32. Сделайте список рекомендуемых покупок

Большинство игроков проходя тот или иной уровень думают «Как бы было круто, если бы я купил ту пушку». Чтобы подобного не происходило, предоставьте игрокам список рекомендуемых товаров для покупки перед прохождением того или иного уровня. Игра Eternity Warriors 2 предлагает игрокам рекомендуемые покупки перед каждым уровнем:

 

Schermata-05-2456431-alle-13.38.04-480x281

 

 

33. Продавайте реальные товары

Такие известные приложения, как Fruit Ninja и Angry Birds могут продавать собственные товары через приложение. Большинство разработчиков не достигают такого уровня, но если вы набрали огромную базу лояльных игроков, то вполне можете предложить им реальные товары в виде футболок и кружек с символикой вашего приложения.

 

 

Schermata-05-2456431-alle-13.44.09-480x284 (1)

 

Temple Run предлагает купить обои в своем приложении, кто сказал что и вы не можете сделать подобное:

 

Schermata-05-2456431-alle-13.45.43-337x320

 

 

34. Следите за самыми кассовыми приложениями

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

 

Schermata-05-2456431-alle-13.48.54-477x320

 

 

35.  Предлагайте платный контент в обмен на услуги

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

  • Приглашение друзей из социальных сетей, электронной почты и т. д.
  • Предлагайте совершить действия, которые имеют для вас определенную ценность.
  • Обмен баллов в социальных сетях.
  • Регистрация в социальных сетях.
  • Подписка на список рассылки.
  • Создание учетной записи в вашей игре.

Деньги это не единственная ценность в стратегии монетизации. Упоминание в социальных сетях, а также формирование собственной аудитории, что имеет огромное значение.

36. Создавайте много платного контента

В среднем менее 2% пользователей будут приобретать ваш платный контент. По исследованиям W3i контент по цене от $0,99 до $1,99 генерирует только 6% от общего дохода вашей игры. Тем не менее содержимое по цене от $9,99 до $19,99 генерирует 47% от общего дохода. Вы можете попытаться изменить свой контент, чтобы привлечь случайных пользователей, чтобы попытаться увеличить количество покупок в приложении. Статистика говорит о том, что готовые на трату денег пользователи пойдут и на крупные покупки. В долгосрочной перспективе вы будете делать большую часть денег на дорогостоящих товарах, даже если продавать вы их будите меньше.

37. Просьбу о выполнении действий пишите вежливо

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

38. Анализируйте и оптимизируйте вашу стратегию монетизации

Даже если ваш бизнес успешен, всегда есть место для усовершенствований. Задайте себе три вопроса и попытайтесь найти на них ответы:

  • Как я могу повысить эффективность моей стратегии IAP?
  • Как я могу сделать мой контент более привлекательным?
  • Как я могу упростить процедуру покупки моего контента?

Чтобы помочь ответить на эти вопросы, сравним две игры из той же франшизы: Contract Killer Zombies и Contract Killer Zombies 2:

 

Schermata-05-2456431-alle-14.27.22-480x280

 

Если у вас будет недостаточно золота, то вы будете перенаправлены на покупку золота, что значительно снижало процент конверсий. А теперь давайте взглянем, как в Contract Killer Zombies 2 это было исправлено, там сделали небольшой твик для процесса покупки:

 

Schermata-05-2456431-alle-14.30.32-480x289

 

Вы заметили изменение? Теперь приобрести оружие можно в один шаг.

39. Используйте маркетинговые слова

Язык является невероятно мощным средством, когда дело доходит до продажи. Вот некоторые из слов, которые удивительно влияют на поведение потребителей: Sale – 52% потребителей войдут в магазин у которого на вывеске будет слово «Sale» Guaranteed – 60% зайдут в магазин где будет написано «Guaranteed». «Free» – не все ли любят бесплатное? Чтобы проиллюстрировать возможности слова «Free» давайте рассмотрим следующий сценарий. Клиенты имеют возможность выбора между двумя видами конфет. Одним из них является известный бренд шоколада с ценою 0,19 $ – около 50% от обычной цены. Другой шоколад – идентичный по качеству и вкусу, хотя и не известный бренд – по цене $ 0,01.

 

Schermata-05-2456431-alle-14.33.15

 

В этом случае около 75% выберут шоколад по цене $0.19, который известен, в то время, как только около 25% выберут шоколад по цене $ 0.01. Теперь снижаем цену каждого вида конфет на один цент, в результате образуется следующая схема ценообразования:

 

Schermata-05-2456431-alle-14.33.21

 

Внезапно ситуация обратная: люди забудут о шоколаде, который продается по $0.18 и 71% выберут бесплатный шоколад. Только 29% людей выберут шоколад за деньги. Мораль этой истории? Бесплатный контент может быть мощным инструментом для изменения поведения покупателей.

40. Не раздражайте пользователя

Надеюсь, вам была полезна эта статья и возможно вам пригодятся эти 40 методов повышения конверсии. Помните, что все это было испытано на успешных проекта и это отлично работает. Вот несколько ссылок, которые могут оказаться полезными на пути к монетизации вашего приложения:

Introduction to In-App Purchases in iOS 6 Tutorial – великолепный учебник, где вы найдете информацию о том как реализовать ваш IAP

In-App Purchases in iOS 6 Tutorial: Consumables and Receipt Validation – отличный учебник о безопасных покупках в приложении

http://blog.flurry.com/?Tag=In-App-Purchase – выборка статей из блога Flurry и других ресурсов по статистике IAP

Часть 1 и Часть 2 статья из PlayHaven об 11 приемах, которые позволяют максимизировать ценность ваших пользователей.

Уроки, полученные на кладбище мобильных приложений

(Перевод статьи Lyndon Cerejo в Smashing magazine)

Согласно предположениям аналитиков, количество скачиваний мобильных приложений в этом году находится примерно между 56 и 82 миллиардами, со средним количеством загрузок на одного пользователя где-то между 26 и 41 приложением, меньшая часть которых использовалась на регулярной основе. Второе число говорит о том, что 95% скачанных приложений были забыты пользователями в течение месяца, а 26 % вообще использованы только один раз.

Все эти брошенные приложения, удаленные или игнорируемые, в зависимости от конкретного пользователя, никогда больше не использовались. Я оставил эти игнорируемые мною приложения на моих смартфоне и планшете. Согласно последнему подсчету, на моем iPhone сейчас более 375 приложений. Пришлось отключить обновления моего аккаунта в App Store, потому что они постоянно напоминали, что более 250 приложений ожидают обновления. Большинство таких приложений скрыты за первыми двумя экранами приложений на устройстве, что я и определил как свою «могилу приложений».

1

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

Урок 1: Удостоверьтесь в востребованности приложения

Не слишком полагайтесь на рекламный слоган Apple «Для всего есть свое приложение» (There’s an app for that) – далеко не всё что взбредет в голову должно существовать в таком виде. Недавнее  исследование от Compuware гласит, что пользователи смартфонов предпочитают мобильные приложения мобильным версиям сайтов. Однако другие исследования показывают смещение стратегии компаний от нативных мобильных приложений в сторону использования мобильных вэб сайтов. Если ваш контент и функции доступны пользователям через интерактивный сайт или веб-приложение, то вы не нуждаетесь в нативном приложении. Нативные приложения пока что могут легко использовать возможности устройства, но некоторые возможности, такие как GPS, могут быть доступны и на веб-сайтах. Иногда, обладая возможностью хранения данных оффлайн, многие веб-сайты могут делать всё то же, что и их нативные аналоги. Посетители Kansas City, например, легко могут использовать все необходимые функции через мобильную версию сайта VisitKC, вместо того, чтобы скачивать и устанавливать посвященное тому же приложение, которое сейчас и находится в моей «могиле приложений».

2

VisitKC.com (слева) может делать то же, что может предложить и приложение VisitKC (справа).

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

Чтение по теме:

Урок 2: Убедитесь, что приложение работает как ожидалось.

Это может показаться очевидным, но вы удивитесь, как много приложений не работает в соответствии с ожиданиями или часто приходит к краху после единственного обновления (смотрите рисунок ниже) – и это не просто мой личный опыт. Одно- и двух звездочные отзывы в App Store часто свидетельствуют о том же самом. Посмотрите на отзывы к собственным приложениям Apple – Find My Friends или прекрасно оформленное приложение Rise – когда приложения не выполняют то единственное, что должны и ради чего их создавали, пользователи прекратят их использовать вообще или перейдут к конкурирующим приложениям.

Например, в известном приложении Staple есть проблемы с авторизацией пользователей, которые приводят к блокировке пользователей, причем все то же самое прекрасно работает на сайте. Опять же, например, функция прокладки маршрута полета в приложении United Airlines часто не работает, при том, что данная функция просто отлично функционирует на мобильной версии сайта компании, как показано ниже.

3

Мобильное приложение United не так надежно, как их мобильная версия сайта.

Один способ избежать этих проблем – качественное тестирование вашего приложения, перед выпуском новой версии или после каждого релиза OS. Тестировать надо на актуальных устройствах. Обязательно тестируйте приложение в контексте его использования (например, реальное тестирование приложения типа «будильник» в течение сна). Другой эффективный метод, это использование  аналитических инструментов для мониторинга ошибок и даже падений приложения.

4

Источник: “Mobile Apps: What Consumers Really Need and Want,” Compuware (PDF, 2 MB)

Урок 3: Не перегружайте устройства пользователей.

Приложения должны рационально использовать ресурсы устройства, включая память, сеть и энергию. Приложения, которые не минимизируют использование гео-локации или не отключают обновления гео-локации когда они не нужны, просто преступны. Чуть ранее в этом году одно единственное приложение Taxi Magic потратило около 20% моего аккумулятора в течение сорокаминутной поездки в аэропорт и заставило меня охотиться за розетками на пути к дому.

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

5

До и после обновления приложения.

Apple в руководстве “iOS App Programming Guide” предлагает несколько факторов, которые надо учесть при оптимизации приложений. Android также дает рекомендации о лучших способах экономии ресурса аккумуляторов.

Урок 4: Следуйте стандартам дизайна и рекомендациям.

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

Проверка орфографии также пока не является традицией, что продемонстрировали мобильные разработчики Митта Ромни в прошлом году, когда они вместо “America” напечатали на одном из баннеров для фотообмена “Amercia”. Хотя приложение обновлено в течение дня, я его не обновил, а предпочел захоронить в «могиле приложений» как напоминание о том, что мелкие детали важны.

7

“Барт Симпсон вместе с Миттом.” (Рисунок JoaoCorreia)

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

Урок 5: Заслужите доверие ваших пользователей в вопросах персональных данных и других проблем безопасности.

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

Одно из приложений в моей «могиле» – Card Mate Pro, которое хранит информацию о кредитке, но не вызывает чувства безопасности и уверенности. Другой распространенной причиной, по которой отказываются от приложений является то, что они просят пользователя регистрироваться (или использовать вход через социальные сети), чтобы получить доступ к функциям, которые не зависят от наличия профиля пользователя. Приложение от Moe’s Southwest Grill (сеть фаст-фудов) требует регистрацию прежде, чем пользователь сможет использовать вообще любые функции приложения – включая расположение ресторанов и просмотр меню.

8

Предыдущая версия приложения  “Moe” требовала от пользователей зарегистрироваться и войти прежде чем использовать её

Чтение по теме:

Урок 6: Дайте пользователю контроль и право распоряжаться собственными данными.

Приложения, которые создают, считывают или хранят данные пользователя должны предлагать пользователям и способы безопасно хранить, осуществлять резервное копирование и архивирование этой информации. Парочка приложений, которые хранили, записывали и организовывали занятия искусством для моих детей, теперь лежать в «могиле приложений» потому что они не предоставляли мне способа сохранить или дублировать эти рисунки в iCloud или Dropbox. Каждое приложение, бесплатное или нет, во власти его разработчика и его поддержка может быть прекращена в любое время или удалено из App Store, как недавно случилось со списком задач Orchestra и принадлежащим Apple Cards. Предоставление пользователям возможности легко сохранить свои данные дает им уверенность в их полной сохранности, если поддержка приложения будет прекращена.

9

Часть инфографики StarDustmobilereputation показывает как много приложений уже прекратили существование.

Урок 7: Никогда не используйте прием «заманить и подменить».

Описания в App Store (даже для бесплатных приложений) должны ясно показать всё, что включено в предлагаемую цену и что доступно через in-app purchase, чтобы помочь пользователям решить, покупать и скачивать данное приложение, или нет.

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

Step Out Alarm Clock одно из таких приложений в «могиле». Пока оно заставляет тебя проснуться, оно также заставляет тебя оценить его для разблокирования тех функций, которые содержатся в списке оплаченных. Раз уж зашла речь о рейтингах или обзорах, то, пока вы побуждаете пользователей оценивать приложение, сначала дождитесь, когда у них появится благоприятная возможность использовать их, и дайте им возможность оценить приложение позже или вообще никогда и гордитесь их выбором.

10

StepOutAlarmClock заставляет пользователей дать оценку, чтобы разблокировать уже оплаченные функции.

Урок 8: Обеспечьте быструю загрузку вашего приложения, без пафоса и раздражающих призывов.

iOS Human Interface Guidelines рекомендует позволить вашим пользователям использовать ваше приложение как можно быстрее:

«Часто приходится слышать, что люди тратят не больше минуты или двух на оценку нового приложения. Когда вы тратите большую часть этого периода на немедленное представление полезного контента, вы возбуждаете интерес новых пользователей и совершенствуете опыт всех пользователей».

Apple по-прежнему рекомендует избегать заставок или других экранов «запуска» , вместо которых лучше использовать простые стартовые картинки. Ресурсоёмкие приложения, типа игр, занимают несколько секунд на загрузку, причем игры – почти абсолютные нарушители рекомендаций против заставок. А, например, Moe’s Southwest Grill запускается с громким воплем, озвучивающим подпись “Welcome to Moe’s”l, без всякой возможности убавить звук, что я обнаружил в тихом офисе своего клиента. Разработчики после этого прислушались к отзыву и последнее декабрьское обновление уже позволяет пользователям регулировать громкость приветствия.

Урок 9: С одним только с маркетингом и стимулирующими акциями – далеко не уедешь.

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

11

Стимулирующая мера даст пользователям импульс скачать приложение и попробовать его, но это знакомство не будет долгим. Предшествующие уроки должны помочь вам создать хорошее первое впечатление, но пользователи часто будут нуждаться в небольшом подталкивании, чтобы продолжить использовать приложение. Это может принять форму напоминаний об использовании приложения, как делает 1 Second Everyday, или ненавязчивых посланий на email, если пользователь дал вам свой email и разрешил писать ему.

Урок 10: Что AppStore даст, то Apple может забрать.

C каждым релизом iOS часть приложений становится  избыточной, так как их основной функционал интегрируется в новую OS. Например, iOS 7 сделала  ненужными приложения-фонарики и приложения-уровни. До сих пор некоторая часть этих приложений как-то живет и  преуспевает за счет предложения сопутствующего уникального функционала или удобства использования. Например, Instapaper и Pocket (некогда Read It Later), оба предположительно должны были быть уничтожены Safari’s Reading List на iOS 5, но всё ещё работают и активно используются два релиза iOS спустя.

Что же должен делать разработчик?

Приведенные выше уроки – лишь несколько причин того, почему приложение может быть скачано многими, но быть активно используемым лишь несколькими. Исследование Compuware приведенное ранее выявило, что 79% потребителей пробовали работать с приложением только один или два раза, если что-то не сработало в первый раз и только 16% предприняли более двух попыток. Это дает разработчикам очень узкое окно возможностей для создания хорошего впечатления. Так что, показывайте всё, на что способны сразу, убедитесь, что ваше приложение сразу готово к большому спросу ещё до запуска. Как показано ниже, отказы от приложений случаются при малейшем неприятном впечатлении от использования приложения.

12

Mobile Apps: «What Consumers Really Need and Want,” Compuware (PDF, 2 MB).

Если вы уже имеете приложение, конкурирующее в App Store, убедитесь, что учитываете все отзывы в соцсетях, обращения в службу поддержки, обзоры на сторонних сайтах, а также обзоры и рейтинги в App Store, тщательно выясняйте причины отказов от приложения. Такие сервисы, как App Annie и App Figures смогут обобщить обзоры, являющиеся таким же великолепным источником информации о проблемах, как и предложений о новых возможностях приложения. Делайте эти проблемы приоритетными, адресуйте им ваши очередные релизы, и совершенствуйте качество приложения после запуска, чтобы уменьшить шанс его попадания в пользовательскую «могилу приложений».

Какие другие уроки вы извлекли у собственной «Могилы приложений»? Мы будем вам признательны, если вы поделитесь ими в комментариях ниже!

Разработка мобильных приложений: Синхронизация с сервером

Значительная часть современных приложений для мобильных платформ (iOS, Android и т.п.) работает в паре с сервером. Приложение с устаревшими данными теряет свою полезность. Поэтому важно обеспечить постоянное обновление данных с сервера на устройство. Это касается оффлайн приложений, которые должны работать и без интернета. Для полностью онлайн приложений, которые не работают (или бесполезны) без интернета (например, Foursquare, Facebook) есть своя специфика, которая выходит за рамки текущей статьи.

Я расскажу на примере одного нашего оффлайн приложения, какие подходы мы использовали для синхронизации данных. В первых версиях мы разработали простые алгоритмы и, в дальнейшем, с опытом, мы их совершенствовали. Аналогичная последовательность представлена и в статье – от простых очевидных практик к более сложных.

Следует уточнить, что в статье рассматривается передача данных только в одну сторону: от сервера к устройству. Здесь сервер является источником данных.

Общие положения для всех подходов

Для примера, мы будем рассматривать передачу на устройство справочника блюд (“dishes”). Будем считать, что устройство делает запрос на url “/service/dishes/update”,  обмен идет по протоколу http в формате JSON (www.json.org). На сервере есть таблица “dishes” с полями: id (идентификатор записи), name (наименование блюда), updated (момент обновления блюда, лучше сразу делать поддержку timezone, “YYYY-MM-DDThh:mm:ssTZD”, например, “1997-07-16T19:20:30+01:00”), is_deleted (признак удаленной записи).

Ремарка касаемо наличия последнего поля. По умолчанию его значение равно 0. В приложении, где сущности синхронизируются между клиентом и сервером, физически удалять данные с сервера не рекомендуется (чтобы не было ошибок). Поэтому у удаленных блюд выставляется is_deleted = 1. По приходу на устройство сущности с is_deleted = 1 она удаляется с устройства.

При любом подходе, который будет рассматриваться ниже, сервер возвращает на устройства JSON массив объектов (может быть пустой):

[
{id: <id>,name: <name>,updated:<updated>,isDeleted: <isDeleted>},…
]

Пример ответа сервера:

[
{id: 5625,name: «Bread»,updated: «2013-01-06 06:23:12»,isDeleted: 0},
{id: 23,name: «Cooked semolina»,updated: «2013-02-01 14:44:21»,isDeleted: 0},{

id: 533,

name: «Fish-soup»,

updated: «2013-08-02 07:05:19»,

isDeleted: 0

}
]

Принципы обновления данных на устройстве

  1. Если пришел элемент, который есть на устройстве, и isDeleted = 0, то он обновляется
  2. Если пришел элемент, которого нет на устройстве, и isDeleted = 0, то он добавляется
  3. Если пришел элемент, который есть на устройстве, и isDeleted = 1, то он удаляется
  4. Если пришел элемент, которого нет на устройстве, и isDeleted = 1, то ничего не делается

Подход 1: Синхронизируется всегда все

Это самый простой метод. Устройство запрашивает список блюд у сервера и сервер отсылает весь список целиком. Каждый раз список приходит весь. Не сортированный.

Пример запроса: null, либо “{}”

Достоинства:

  • логика на сервере простая – отдаем всегда все
  • логика на устройстве простая – перезаписываем всегда все

Недостатки:

  • если запрашивать список часто (каждые 10 минут), то будет большой интернет трафик
  • если запрашивать список редко (раз в день), то будет нарушена актуальность данных

Область применения:

  • для приложений с небольшим трафиком
  • передача очень редко меняющихся данных (список городов, категорий)
  • передача настроек приложения
  • на начале проекта для самого первого прототипа мобильного приложения

Подход 2: Синхронизируется только обновленное

Устройство запрашивает список блюд, обновленный с предыдущей синхронизации. Список приходит отсортированный по “updated” в порядке возрастания (необязательно, но удобно). Устройство хранит значение “updated” у самого последнего присланного блюда и при следующем запросе шлет его серверу в параметре “lastUpdated”. Сервер присылает список блюд, которые новее “lastUpdated” (updated > lastUpdated). При первом запросе на сервер “lastUpdated” = null.

Пример запроса: { lastUpdated: “2013-01-01 00:00:00” }

На схеме: “last_updated” – значение, которое хранится на устройстве. Обычно на устройстве создается отдельная таблица для хранения этих значений “last_updated” по каждой сущности (блюда, города, организации и т.п.)

Этот подход годится для синхронизации простых линейных списков, у которых правила прихода на устройство одинаковые для всех устройств. Для более избирательной синхронизации см “Подход 5: Синхронизация со знанием того, что уже есть на устройстве”.

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

Подход 3: Синхронизация порциями

У мобильных устройств мало оперативной памяти. Если в справочнике 3000 блюд, то парсинг большой json строки от сервера в объекты на устройстве может вызвать нехватку памяти. В этом случае приложение либо аварийно завершится, либо не сохранит эти 3000 блюд. Но даже если устройство смогло переварить такую строку, то производительность приложения в моменты синхронизации в фоне будет низкая (лаги интерфейса, не плавная прокрутка и т.п.) Поэтому необходимо запрашивать список более мелкими порциями.

Для этого устройство передает еще один параметр (“amount”), который определяет размер порции. Список присылается обязательно отсортированный по полю “updated” по возрастанию. Устройство, аналогично предыдущему подходу, запоминает значение “updated” у последней присланной сущности и передает его в поле “lastUpdated”. Если сервер прислал ровно это же количество сущностей, то устройство продолжает синхронизацию и снова делает запрос, но уже с обновленным “lastUpdated”. Если сервер прислал меньше сущностей, это значит, больше новых данных у него нет, и синхронизация завершается.

На схеме: “last_updated” и “amount” – значения, которые хранятся в мобильном приложении. “last_item” – последняя присланная с сервера сущность (блюдо). Именно новее этого значения будет запрошен следующий список.

Пример запроса: { lastUpdated: “2013-01-01 00:00:00”, amount: 100 }

Достоинства:

  • На устройство приходит столько данных, сколько оно в состоянии обработать за один раз. Размер порции определяется практическими тестами. Простые сущности можно синхронизировать по 1000 штук за раз. Но бывает и такое, что сущности с большим количеством полей и сложной логикой обработки сохранения синхронизируются нормально не более 5 штук.

Недостатки:

  • Если будет 250 блюд с одинаковым updated, то при amount = 100 последние 150 не придут на устройства. Такая ситуация вполне реальна и описана в следующем подходе.

Подход 4: Корректная синхронизация порциями

В предыдущем подходе возможна ситуация, что если в таблице есть 250 блюд с одинаковым “updated” (например, “2013-01-10 12:34:56”) и размер порции равен 100, то придут только первые 100 записей. Остальные 150 будут отсечены жестким условием (updated > lastUpdated). Почему так произойдет? При запросе первых 100 записей lastUpdated установится в “2013-01-10 12:34:56”, и следующий запрос будет иметь условие (updated > “2013-01-10 12:34:56”). Не поможет даже смягчение условия (updated >= “2013-01-10 12:34:56”), потому что устройство тогда будет бесконечно запрашивать первые 100 записей.

Ситуация с одинаковым “updated” не настолько редкая. Например, при импорте данных из текстового файла поле “updated” было выставлено в NOW(). Импорт файла с тысячами строк может занять меньше секунды. Может случиться и так, что весь справочник будет иметь одинаковый “updated”.

Чтобы это исправить надо использовать какое-то поле блюда, которое было бы уникальным хотя бы в пределах одного момента (“updated”). Поле “id” уникально вообще по всей таблице, так что следует дополнительно в синхронизации использовать именно его.

Итого, реализация этого подхода выглядит так. Сервер отдает список отсортированный по “updated” и “id”, а устройства запрашивают данные с помощью “lastUpdated” и нового параметра “lastId“. У сервера условие выборки усложняется: ((updated > lastUpdated) OR (updated = lastUpdated and id > lastId)).

На схеме: “last_updated”, “last_id” и “amount” – значения, которые хранятся в мобильном приложении. “last_item” – последняя присланная с сервера сущность (блюдо). Именно новее этого значения будет запрошен следующий список.

Подход 5: Синхронизация со знанием того, что уже есть на устройстве

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

Кроме этого, пользователь приложения может так настроить приложение, что ему нужна будет только часть данных. Например, пользователь хочет синхронизировать блюда только из 2 городов из 10. Описанными выше синхронизациями этого не добиться.

Идея подхода следующая. Сервер хранит у себя (в отдельной таблице “stored_item_list”) информацию о том, какие блюда есть на устройстве. Это может быть просто список пар “id – updated”. В этой таблице хранятся все списки пар “id – updated” блюд для всех устройств.

Информацию об имеющихся на устройстве блюдах (список пар “id – updated“) устройство отсылает серверу вместе с запросом на синхронизацию. При запросе сервер проверяет то, какие блюда должны быть на устройстве и какие есть сейчас. После этого на устройство отсылается разница.

Как сервер определяет, какие блюда должны быть на устройстве? В простейшем случае сервер делает запрос, который возвратит ему список пар “id – updated” всех блюд (например, SELECT id, updated FROM dishes). На схеме это делает “WhatShouldBeOnDeviceMethod()” метод. В этом недостаток подхода – серверу приходится вычислять (порой делая тяжелые sql-запросы), что должно быть на устройстве.

Как сервер определяет какие блюда есть на устройстве? Он делает запрос в таблицу “stored_item_list” по этому устройству и получает список пар “id – updated”.

Анализируя эти два списка, сервер решает, что следует послать на устройство, а что – удалить. На схеме это “delta_item_list”. Поэтому в запросе нет “lastUpdated” и “lastId”, их задачу выполняют пары “id – updated”.

Как сервер узнает об имеющихся на устройстве блюдах? В запросе к серверу добавляется новый параметр “items”, который содержит список id блюд, которые были присланы на устройство в прошлой синхронизации (“device_last_stored_item_list”). Конечно, можно отсылать список id всех блюд, которые есть на устройстве, и не усложнять алгоритм. Но если на устройстве 3000 блюд и они будут каждый раз все отсылаться, то расходы трафика будут очень велики. В подавляющем количестве синхронизаций параметр “items” будет пустой.

Сервер должен постоянно обновлять у себя “stored_item_list” данными, которые пришли с устройства в параметре “items”.

Следует реализовать механизм очистки серверных данных в stored_item_list. Например, после переустановки приложения на устройстве сервер будет считать, что на устройстве все еще актуальные данные. Поэтому при установке приложения устройство должно как-то проинформировать сервер чтобы он очистил stored_item_list по этому устройству. В нашем приложении мы посылаем дополнительный параметр “clearCache” = 1 в этом случае.

Заключение

Сводная таблица по характеристикам этих подходов:

Подход Объем трафика(5 – большой) Трудоемкость разработки(5 – высокая) Использование памяти устройства(5 – высокое) Корректность данных на устройстве(5 – высокая) Можно выделить конкретное устройство
1 Синхронизируется всегда все 5 1 5 5 нет
2 Синхронизируется только обновленное 1 2 5 3 нет
3 Синхронизация порциями 1 3 1 3 нет
4 Корректная синхронизация порциями 1 3 1 3 нет
5 Синхронизация со знанием того, что уже есть на устройстве 2 5 2 5 да

“Корректность данных на устройстве” – это вероятность того, что на устройстве есть все данные, которые отсылались сервером. В случае подходов №1 и №5 есть 100% уверенность, что устройство имеет все данные, которые нужны. В остальных случаях такой гарантии нет. Это не говорит о том, что остальные подходы использовать нельзя. Просто если на устройстве часть данных пропадет, то исправить это с сервера (а тем более узнать про это на стороне сервера) не получится.

Возможно, при наличии безлимитных тарифов на интернет и бесплатного wifi проблема ограничения трафика, генерируемого мобильным приложением, станет менее актуальна. Но пока приходится идти на всякие ухищрения, придумывать более “умные” подходы, которые позволяют снизить сетевые расходы и увеличить производительность приложений. Не всегда это работает. Порой бывает “чем проще – тем лучше”, зависит от ситуации. Надеюсь, из этой статьи можно подобрать подход, который пригодится.

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

 

Монетизация мобильных приложений

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

Давайте разберем варианты монетизации подробнее.

 

Freemium

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

Другой вариант Freemium-модели позволяет скачивать полную версию игры бесплатно, но при определенных ограничениях (например, разрешено построить только одно здание в сутки). В таких играх ограничение снимается при покупке премиум аккаунтов. К слову, 34% из ТОП-100 кассовых приложений в App Store используют модель Freemium.

Варианты/идеи применения Freemium метода в игре:

  • предоставление HD версии игры;
  • увеличение количества уровней;
  • увеличение скорости игры;
  • предоставление дополнительных функций/возможностей;
  • увеличение количества персонажей;
  • покупка аккаунта с расширенными возможностями.

Примеры игр: Angry Birds, Cut the Rope, Angry Birds Space HD, Fruit Ninja.

Free-to-Play

Проекты, построенные на Free-to-Play модели, не требуют денег за игру. Разработчики таких игр зарабатывают на удобстве пользователей. Хочешь, чтобы здания строились быстрее – плати, хочешь переодеть своего героя в новую одежду – плати.

В подобные игры вкладывать деньги не обязательно, но без удовольствия от игры будет неполным. Основная задача разработчика сделать игру так, чтобы пользователь, как можно чаще использовал платные возможности. По статистике в США около 90% внутриигровых трат приходится на Free-to-Play модель.

Варианты/идеи применения Free-to-Play метода в игре:

  • покупка игровой валюты;
  • покупка опыта в игре;
  • покупка виртуальных предметов;
  • увеличение скорости игры;
  • покупка одежды для персонажа;
  • покупка подарков;
  • покупка оружия;
  • покупка vip аккаунта.

Примеры игры: Jetpack Joyride, Resort HD, Веселая ферма.

Рекламная модель

Игры, разработанные  с использованием этой модели, показывают своим пользователям рекламу. Зачастую такую модель используют с какой-либо другой моделью монетизации, например, c моделью Freemium. Примером такой игры является игра Angry Birds, где в бесплатной версии (demo) внедрена реклама. Большой прибыли с такого варианта монетизации получить практически нереально, только если вы не создатель игры с миллионной аудиторией.

Варианты/идеи применения рекламной модели с Freemium методом:

  • удаление рекламы;
  • уменьшение количества рекламы.

PAID

Самый простой метод монетизации, когда разработчик продает свое приложение за определённую плату.

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

Недавнее исследование ученых из Кембриджского университета показало, что 73% всех приложений в Google Play — бесплатные и 80% из них полагаются на монетизацию через встраивание рекламных баннеров. По числу загрузок бесплатные приложения намного превосходят платные: из последних только 20% загружаются более 100 раз и 0,2% — более 10 000 раз; с другой стороны, 20% бесплатных приложений скачиваются 10 000 и более раз. Как видим, данный метод монетизации уступает предыдущим.

Примеры приложений и игр: HD Виджеты, Swype Keyboard, World of Goo

Комбинированный метод

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

  • Freemium + Рекламная модель
    Данный метод использовали разработчики ROVIO MOBILE в разработке своей игры Angry Birds. В демо-версию игры разработчики ограничили количество уровней и встроили рекламу. В полной же версии игры отсутствовала реклама  и искусственное ограничение на количество уровней.
  • Freemium + Free-to-Play + PAID + Реклама
    Компания EA разработала игру The Sims™ в которой были совмещены сразу  четыре системы монетизации: игра была выпущена в бесплатной и платной версии, а также в игре присутствуют элементы Free-to-Play модели (например, в игре необходимо развиваться и получать за это очки, которые можно тратить на различные улучшения в доме). Также есть возможность покупки очков за реальные деньги. В бесплатной же версии, кроме прочего, присутствует реклама.

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

В каком маркете прибыль выше?

С каждым днем в Google Play  и App Store загружается огромное количество приложений и с каждым днем все сложнее добраться до заветного ТОП’а!

Google Play растет значительно быстрее чем «яблочный» App Store. По количеству загрузок приложений Google Play уже превзошел магазин от Apple. Однако, выручка с приложений для iOS значительно больше, чем для Android.

По оценкам аналитиков Canalys, за январь – март все магазины приложений в мире заработали 2,2 миллиарда долларов. Из них на долю Apple пришлось 1,48 миллиарда, т. е. около 74%, а на долю Google – всего 18%. Тем не менее компания Google показывает очень быстрый рост. По сравнению с аналогичным периодом прошлого года продажи в GooglePlay выросли на 90 процентов, а продажи в AppStore – всего на 25 процентов.

По прогнозам аналитиков, GooglePlay продолжит уверенный рост, но вряд ли сможет опередить Apple до 2016 года.

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

На этот вопрос постаралась ответить компания App Annie, которая предоставляет аналитику по скачиваниям и продажам для всех мобильных платформ.

Загрузки приложений: App Store vs. Google Play

Загрузки Google Play составили около 90% загрузок App Store в первом квартале 2013 года.

Доходы от приложений: App Store vs. Google Play

App Store получил в 2,6 раза больше доходов от приложений, чем Google Play, в первом квартале 2013 года.

С четвертого квартала 2012 года по первый квартал 2013 года квартальный доход App Store вырос примерно на четверть. Между тем, доход от приложений Google Play вырос примерно на 90%.

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

Давайте теперь взглянем на наиболее перспективные категории с точки зрения загрузок и прибыли.

AppStore: ведущие категории по загрузкам в 1 квартала 2013 года 
(Фото- и видео-приложения достигли ТОП-3 по загрузкам)

  1.  Игры
  2. Развлечения
  3. Фото и видео, +1*
  4. Утилиты, -1*
  5. Стиль жизни

* изменение индекса в сравнении с предыдущим кварталом

Категория «игры» остается абсолютным лидером, как источник роста в App Store и дает около 40% загрузок магазина в 1 квартале 2013 года. Категории «Фото» и «Видео» поднялись по показателям загрузок и вырвались в ТОП-3 в 1 кв. 2013 г.

AppStore: ведущие категории по доходам в 1 квартале 2013 года
(Игры лидируют, но у образовательных приложений лучше с монетизацией)

  1. Игры
  2. Производительность
  3. Социальные сети
  4. Образование, +1*
  5. Развлечение, -1*

* изменение индекса в сравнении с предыдущим кварталом

Категория «Игры» продолжает бурный рост в доходах, обеспечивая около 70% доходов App Store в 1 квартале 2013 года. Категория «Образование» также приносит доход, что позволяет ей продвинуться на 4 позицию.

GooglePlay: Ведущие категории по загрузкам в 1 квартале 2013 года.
(GooglePlay становится более социальным) 

  1. Игры
  2. Инструменты
  3. Развлечения
  4. Коммуникации
  5. Социальные сети, +1*

* изменение индекса в сравнении с предыдущим кварталом
В Google Play категория «Игры» стабильно росла на протяжении предыдущего года. Категория «Соц. сети» также показывает стабильный доход в загрузках и в настоящий момент занимает 5 место.

GooglePlay: ведущие категории по доходам в 1 квартале 2013 года 
(Игры дают больший доход в GooglePlay, чем в AppStore)

  1. Игры
  2. Коммуникации
  3. Социальные сети
  4. Инструменты
  5. Производительность

По состоянию на 1 кв. 2013 года категория «Игры» выросла и обеспечила около 80% доходов Google Play по сравнению с 70% в App Store.

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

Средние цены на iOS-приложения по каждой категории для iPhone и iPad

Компания Distimo опубликовала среднюю стоимость приложений для iOS.

Из этих графиков мы видим, что средняя стоимость приложений для iPhone приблизительно $2, а средняя стоимость для iPad – $3. При этом если учитывать, что категория «Игры» самая популярная среди всех прочих, то смело можно утверждать, что разработка игр для мобильных устройств по-прежнему очень прибыльное занятие. Приложения в категориях «Навигация», «Бизнес» и «Производительность» по-прежнему продолжают быть самыми дорогими.  По сравнению с прошлым годом средняя цена на приложения для iPhone выросла на 16%, а для iPad упала на 8%.

Аналитика продаж

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

Отличным помощником в этом является сервис компании App Annie http://www.appannie.com/ru/, который наряду с ежедневными рейтингами показывает наиболее приятные с эстетической точки зрения графики изменения этих самых рейтингов. На графиках удобно отмечать различные знаковые события, например, снижение цен или релиз новой версии. Бесплатная регистрация дает возможность разработчикам подключать детальную статистику по их приложениям, как описано здесь: http://www.appannie.com/ru/app-store-analytics/.

Но не стоит также забывать и о сборе статистики о действиях пользователей из самой игры. В этом может помочь такой сервис, как Flurry (http://www.flurry.com/). Flurry предоставляет отчеты о действиях пользователей, а также информацию о самих пользователях: пол, возраст, географию и т. д. Если вы все же привыкли к интерфейсу Google, то можно использовать Google Analytics, который ни чем не хуже Flurry.

Вывод средств из App Store в России для ИП

Многие разработчики мобильных приложений даже и не подозревают с какими проблемами они могут столкнуться – в погоне за прибылью совсем забывая о «подводных камнях».

Проблема заключается в том, что валютный контроль банков не пропускает перевод без сопроводительных документов (договора и паспорта сделок), а Apple, к сожалению, их не предоставляет. В России на идентификацию денежных средств согласно валютному законодательству дается 15 дней, после чего идет сообщение в ЦБ. При отсутствии необходимых документов деньги остаются на транзитном счете и пользоваться ими нельзя. Отсюда и возникают “подвисшие” сотни и тысячи долларов, которые не могут получить разработчики.

Можно, конечно, быстро слетать на другой континент, открыть счет в местном банке и оформить пластиковую карту, а после этого ждать 2-3 месяца пока Аpple по запросу обновит платежные данные. Но, например, для жителей Украины такой вариант практически неприемлем, поскольку гражданам этой страны можно открывать счета в зарубежных банках только с особого разрешения ЦБ, да и стоимость открытия счета за рубежом и накладных расходов так же может отъесть значительную часть прибыли.

Самым оптимальным вариантом для начинающего разработчика, неважно – компании или индивидуального предпринимателя, является работа через издательскую компанию. При этом разработчик сможет сберечь значительное время на ожидание регистрации своего членства в iDP – издатель сразу же сможет предоставить доступ программистам к закрытому девелоперскому порталу и разрешить генерировать сертификаты для подписывания и запуска на реальных устройствах программ при разработке. Так же, как правило, сотрудники издателя обладают достаточно большим опытом не только в разработке, но и в продвижении программ в App Store и разработчику всегда есть к кому обратится за помощью.

Этап запуска – это наиболее сложная и хрупкая фаза развития бизнеса. В разработке программ, в самом начале, все силы нужно бросить именно на создание качественного продукта, но не на решение возможных финансовых проблем, открытия счетов, получения аккаунтов и прочей бумажной работы. Нет, разумеется разработчик может отлично существовать и без издателя, но первый опыт лучше получить опираясь на чужие, а не на свои ошибки.

Если же все же вы хотите не прибегать к помощи издателя и у вас есть ИП вам необходимо собрать следующие документы для банка:

  1. “iOS Paid Applications Agreement”  и его перевод на русский язык, заверенный вашей печатью ИП (нотариус не нужен).
  2. Два листочка с финансовыми реквизитами (вашими и Apple), так же заверенные вашей печатью.
  3. Если сумма не превышает 50000$ за время действия контракта, то паспорт сделки оформлять не нужно. Если поступит больше – то заблаговременно сообщите банку и они оформят паспорт сделки на основании документов №1 и №2.

Статью подготовил Скорик Дмитрий

P. S. Если статья оказалась полезной, не забывайте лайкать и репостить.

Барнаульские гастроли DevDay 2ГИС

Мы отошли от собственных впечатлений от встречи с коллегами из 2ГИС и теперь готовы поделиться с читателями нашего блога.

Как известно, 1 марта с официальным визитом из Новосибирска в Барнаул был направлен десант разработчиков компании 2ГИС с целью проведения на алтайской земле конференции разработчиков DevDay.

 

Под экспериментальный первый выездной DevDay мы совершенно безвозмездно предоставили наш уютный офис и с позволения ребят из 2ГИС разбавили программу выступления своим мобильным хитом.

Кинохронику “концерта” можно посмотреть и послушать в конце этого поста, а пока постараемся передать атмосферу встречи.

Для зрителей были уготовлены стендап-выступления от Алексея Устинова (Enterra), Павла Сташевского и Станислава Сальникова (2ГИС).

IMG

Пока собирались гости и угощались медом с алтайским бальзамом, на разогреве уже был наш коллега Алексей Устинов с разработкой мобильных приложений под HTML5.

IMG_4814

Дебют Алексея в рамках DevDay удался и перед основным выступлением гостей внимание слушателей было полностью завоевано.

IMG_4821

IMG_4825

Следующее выступление вызвало наиболее больший отклик среди слушателей, что закономерно –  выступал руководитель группы автоматизации тестировании компании 2ГИС Павел Сташевский с одноименным хитом “Как управлять автоматизацией тестирования”.

IMG_4820

Рано или поздно, но случается так, что на проекте (или в компании) нужно внедрять автоматизацию тестирования для его убыстрения, получения страховочной сетки в виде тестов и по разным другим причинам.  Как сделать так, чтобы эта практика прижилась “практически безболезненно”, что нужно делать с тестами, как их писать и поддерживать, нужно ли и как писать тесты со старта проекта – об этом был доклад Павла. Полный сет выступления, как и было обещано, будет ниже.

IMG_4831

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

IMG_4846

IMG_4847

IMG_4845

Заключительным номером гастролей ребят из 2ГИС была новая вещь в исполнении Станислава Сальникова о любви к Knockout.JS на примере взаимоотношений с 2ГИС-Онлайн.

IMG_4856

IMG_4857

IMG_4862

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

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

Разработка мобильных приложений на HTML5 (Алексей Устинов, Enterra):

Как управлять автоматизацией тестирования (Павел Сташевский, 2ГИС):

Knockout.js на примере 2ГИС Онлайн (Станислав Сальников, 2ГИС):