iPhone

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

 

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

 

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

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

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

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

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

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

Задача

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

ChinookBook – купонное приложение

Enterra выпустила в июле очередную версию активно распространяемого на территории США купонного приложения ChinookBook для iOS и Android. Мы рады завершению очередного этапа в развитии продукта, над которым работаем уже более двух лет.

 

Предистория:
Сначала компания Celilo Group Media из Портленда, США, хотела «просто» перевести в электронный вид продажу пользователям купонов со скидками на потребительские товары или услуги. Компания со своими особенностями. Например, она сотрудничает только с теми производителями и продавцами товаров или услуг, которые используют максимально дружественные к окружающей среде технологии или возобновляемую энергию (Green Business). Также её бизнес имеет годовую цикличность и поэтому выпуск новых версий приложения желательно координировать с массовым выпуском купонов, который происходит в августе (Big Launch). На этот раз придумывать дизайн от нас не потребовалось, поскольку оформление целиком предоставлял заказчик. В общем, задача сводилась к тому, чтобы через свеженькое и вовремя вышедшее приложение ChinookBook пользователи приобретали купоны и получали актуальную информацию о выгодных или ближайших к их местоположению продавцах товаров и услуг.

ChinookBook

Купон «2 за 1» и защитная анимация.

Использовать приложение очень просто – приобретенный с его помощью купон пользователь должен показать на экране айфона продавцу в магазине и при нем же нажать кнопку redeem, чтобы аннулировать купон в системе учета. Для защиты от особо хитрых и жадных пользователей были сделаны фигуры внизу экрана. При активном и подключенном к системе приложении они слегка движутся. Глядя на них продавец может убедиться, что покупатель действительно потратил скидочный купон. С самой первой версии iOS-приложения, которая вышла в сентябре 2011 года, был реализован независимый от Аppstore (а позже и от Google Play на Android устройствах) механизм оплаты купонов через приобретенную карточку с кодом или независимую электронную платежную систему.

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

  • Выбрать ближайшее к его местоположению предложение в меню Near Me по карте (Map) или предложению купонов (List).
  • В меню Coupon осуществить поиск купонов по категориям («рестораны», «здоровье и стиль», и т.д.)
  • В меню My пользователю доступны сообщения о новинках (Messages), избранные им по предпочтениям купоны (Favorite Coupons),  статистика по экономии на покупках (Savings).
  • В меню Resources прочитать ознакомительные статьи.
  • В меню More управлять купонами, маркетами, аккаунтами, прочитать справку о компании Celilo Group Media.

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

cbm-iphone-coupons-catlist
Выбор в меню Coupon по категориям.

Первые усовершенствования:

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

Default

ChinookBook 1.2.0

Поэтому в вышедшем через восемь месяцев, в апреле 2011, обновлении ChinookBook 1.2. были добавлены меню Trial Coupons (купоны, срок действия которых начинает отчитываться с момента приобретения пакета купонов) и специальная категория Latest Deals!, которая показывает новые предложения, а также – фильтр купонов. Поддержка Push-notifications позволила приложению получать уведомления, даже если оно не запущено. Для отслеживания заказчиком потребностей пользователей приложение стало посылать статистику на сервис Flurry. Ещё мы внедрили систему мониторинга состояния сервера, которая посылает заказчику предупреждение в случае ошибки приложения.

013-cbm-iphone-coupon-view-1a

Пример реализации покупки определенного купона.

Ещё через некоторое время у заказчика появились спонсоры, которые захотели размещать в приложении свои логотипы. Это было сделано в октябре 2011 года с выходом версии 1.3. ChinookBook. Логотипы спонсоров появились на экранах My и My Savings (для каждого маркета – свой спонсор) и в разделе Resources (в каждой группе ресурсов свой спонсор). В дополнение была упрощена регистрация новых пользователей. География присутствия Celilo Group Media расширилась и в приложении появились три новых маркета, а пользователи получили возможность редактирования списка категорий купонов (и сопутствующих им изображений). Связанный с этими апгрейдами рост количества данных привел к тому, что мы изменили процедуру создания начальной базы данных и синхронизации. В результате ресурсы и группы ресурсов стали активными или не активными. Не активные ресурсы не синхронизировались с устройствами.

Бизнес американской компании становился всё более интенсивным, поэтому для вышедшей уже в декабре 2011 года iOS версии ChinookBook 2.0. вместе с заказчиком мы разработали несколько дополнений. Основная задача – привлечь новых пользователей и более активного вовлекать их в скорейшее использование первого бесплатного купона. При этом ChinookBook должен был остаться привычным и очень простым в использовании продуктом для покупки пакетов купонов. Во-первых, для этого появились Welcome packs – назначаемые при создании нового аккаунта бесплатные пакеты купонов с ограниченным сроком действия. Во-вторых, недавно зарегистрировавшимся, или купившим полный пакет купонов, пользователям рассылается Weekly deals – еженедельно высылаемый специальный набор купонов. Третья новинка – Communication Tools – короткие сообщения, которые помогают тратить купоны. Ну и наконец, о каждом продавце, который предоставил купоны для приложения, формируются Merchant Profile – короткие справочные материалы. Для обработки возросшего объема информации были расширены возможности push notification.

022-cbm-iphone-nearme-merchant-nostream

Merchant Profile

Разработка Android версии:
Ну и, конечно же, нельзя было оставить неохваченными пользователей Android устройств. Параллельно с iOS версией 2.0 Enterra разработала приложение ChinookBook под Android и выпустила его в апреле 2012 года. По сути, это был перенос iPhone приложения на платформу Android OS с незначительными упрощениями. Усложнило задачу желание заказчика полностью сохранить исходный дизайн. Гайдлайн Android пришлось проигнорировать. Функционал версии в итоге оказался полностью аналогичен iPhone приложению, несмотря на различия в особых рекомендациях разработки интерфейсов под Android OS. Серверная часть не подвергалась значительной переработке и обеспечивает работу с обеими платформами, дополнена только специфическими для платформы технологиями (нотификации через C2DM вместо APN и т.п.)

Отвязка части купонов от маркетов:
Очередные шаги Celilo Group Media в работе с пользователями и всё большая география использования Chinook Book привели к тому, что нам пришлось «отвязывать» некоторые купоны от определенного маркета и создавать категорию купонов для групп пользователей. В сентябрьской прошлогодней версии ChinookBook 2.5 для iOS и Android также была внедрена функция Communities. Пользователь теперь мог стать участником сообщества (например, Nike) и получать купоны, выпускаемые только для группы. Но самые большие усилия в разработке этой версии понадобились для создания Multiple-Market packs, которе объединили купоны без привязки к одному маркету. Эта доработка потребовала значительных усилий из-за использования привязок к маркету во многих местах проекта. Заодно мы не упустили возможности обработать и разные не связанные между собой RFC (Запросы на комментарии) и багфиксы.

Качественный скачок:
Растущий бизнес компании-заказчика привел к открытию новых маркетов, появлению тысяч новых предложений и необходимости синхронизации всего этого. Настал момент внести большие изменения в приложение. Версия ChinookBook 2.6, выпущенная в декабре 2012 года, претерпела самые серьезные изменения с начала разработки продукта. Она отличалась более совершенной экономичностью. Так, были увеличена скорость работы программы (Device Speed Improvement) и с 25 до 7 мб снижен размер, сокращен трафик. Благодаря функции Device Syncing приложение поставлялось без начальной базы, а данные для разных маркетов скачивались отдельно через сеть доставки/дистрибуции контента (CDN). Синхронизация тоже происходила не по всем маркетам, а только по выбранным. Синхронизировались также только измененные картинки, а приложение и сервер были переведены на работу с UTC (Всемирное координированное время). Обновлены и алгоритмы работы с купон паками и хранения некоторых сущностей в серверной БД. Управление изображениями перенесено в БД, добавлена синхронизации избранного.

 

021-cbm-iphone-nearme-maplocations2

Меню Near Me, Портленд.

Более поздние iOS и Android версии ChinookBook 2.7. функционировали с марта 2013 года и уже с трудом удовлетворяли растущие потребности клиента и пользователей. От предыдущей версии они отличались тем, что приложение для Android переведено с устаревших нотификаций C2DM на современные GCM, реализована более совершенная работа с Community, а для маркетов добавлена возможность Multiple Market Centers – иметь множественные центры (ранее был один). Для сохранения информации применена новая процедура Upgrade с сохранением текущих данных. Также приложения обслуживали значительно расширенный ареал, выросший уже до 11 маркетов:

  • Боулдер;
  • Денвер;
  • Ист Бэй;
  • Орегон (только предприятия-участники “Blue Sky wind power program”);
  • Портленд;
  • Сан-Франциско;
  • Санта-Круз;
  • Сиэтл и Пьюджет-Саунд — поселения в системе заливов на территории штата Вашингтон, США;
  • Силиконовая Долина;
  • Миннеаполис и Сент Пол;
  • Юта (только предприятия-участники “Blue Sky wind power program”);

Сейчас:

Вышедшая третья версия приложения стала стабильнее в работе, она может сортировать купоны не только по алфавиту, но и по дате истечения срока их действия, обладает расширенными функциями по защите приватности, а некоторые экраны сделаны удобнее. Особо стоит отметить реализацию в ChinookBook 3.0 новой функции Make a Shopping List – объединение купонов в список, который можно активировать у продавца целиком, нажав только одну кнопку  Redeem. Эта функция сильно упрощает покупки в одном магазине сразу по нескольким купонам на разные товары или услуги.

ChinookBook2

Меню Shopping Lists, формируется список, один купон уже включен, один – нет.

Растущая география работы приложения порождает взрывной рост объема данных, с которыми оно должно работать.  У компании Celilo Group Media также постоянно возникают новые идеи и новые предложения для пользователей. Именно поэтому ChinookBook постоянно приближается к совершенству, но никогда его не достигает. Мы не боимся это признать – это особенность любого развития. Встречайте версию 3.0, любите и критикуйте её – мы сделаем ещё лучше.

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

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

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

 

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. Если статья оказалась полезной, не забывайте лайкать и репостить.

Сборщик мусора в iOS? Нет! Эффективное управление памятью с помощью ARC. Часть 1.

 

Елизавета Гордиенко

Apple Inc. представила технологию автоматического подсчета ссылок в 2011 году и рекомендовала ARC к использованию в новых проектах, а также перевод существующего кода под управление ARC.

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

Перед тем как приступить непосредственно к рассмотрению ARC, рассмотрим структуру компилятора, предоставляющего данную технологию.

О компиляторе

LLVM compiler – компилятор нового поколения, базирующийся на open source проекте LLVM.org.

Clang – фронт энд LLVM для семейства языков C.

В Xcode LLVM compiler использует фронт энд Clang для разбора исходного кода и перевода его в промежуточный формат. Затем кодогенератор LLVM (бэк энд) переводит код из промежуточного формата в машинный код. Xcode также содержит LLVM GCC compiler, использующий фронт энд GCC compiler для максимальной совместимости, и бэк энд LLVM, использующий преимущества передового кодогенератора LLVM.

Xcode использует модифицированную версию GNU Compiler Collection, а также, начиная с Xcode 3.1, LLVM-GCC компилятор с фронт эндами из GNU Compiler Collection и генератором кода на основе LLVM, а начиная с Xcode 3.2, Apple LLVM Compiler с фронтэндом Clang и генератором кода на основе LLVM, а также Clang Static Analyzer.

С помощью Apple LLVM код компилируется в два раза быстрее, чем при использовании GCC. Полученные приложения также работают быстрее. [1, 4]

Статический анализатор Clang (Clang Static Analyzer) действительно полезный инструмент для поиска в коде ошибок, связанных с управлением памятью. Но раз анализатор может находить такие ошибки, то почему бы ему также и не исправить их за разработчика?

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

Automatic Reference Counting (ARC)

ARC реализует автоматическое управление памятью для Objective-C объектов и блоков, освобождая программиста под iOS от необходимости явно посылать сообщения retain и release, но вместе с тем требует большего внимания к отношениям и связям между объектами и правильного подхода к написанию кода.

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

ARC не предоставляет cycle collector, что требует явного управления временем жизни объектов и разрыва циклов retain вручную или с использованием weak и unsafe ссылок.
img1

Появление

ARC поддерживается с Xcode 4.2, Mac OS X 10.6 “Snow Leopard” и iOS 4.0, однако только с Mac OS X 10.7 “Lion” и iOS 5 доступны все возможности ARC (в OS X v10.6 и iOS 4 не поддерживаются weak references).

Технология ARC должна заменить garbage collection в Mac приложениях, начиная с OS X Mountain Lion v10.8. [2]

ARC – это следующая ступень эволюции Objective-C, позволяющая сделать разработку более продуктивной, код более безопасным, приложения более стабильными. В связи с этим использование ARC и перевод существующего кода под управление ARC настоятельно рекомендуется Apple.

Поддержка

ARC включается флагом компилятора -fobjc-arc (выключается флагом -fno-objc-arc). В одном проекте можно сочетать классы с ручным и с автоматическим управлением памятью.

Если ARC включен, __has_feature(objc_arc) преобразуется препроцессором в 1.

Коротко о механизме

ARC не сборщик мусора. Это означает, что не происходит сканирование кучи (heap), нет связанных с этим пауз при выполнении приложения, нет недетерминированных вызовов release.

ARC не автоматизирует malloc/free, а также управление указателями типа CF или любыми другими retainable C указателями. Так как фактически ARC даже не может отличить такие типы от обычных указателей C [3 п.7.8].

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

Для того, чтобы компилятор мог генерировать корректный код, ARC накладывает ограничения на использование методов для управление памятью и toll-free bridging, а также вводит новые описатели свойств и указателей на объекты.

Xcode предоставляет инструмент для конвертации существующего кода в ARC. Некоторые преобразования конвертер выполняет без участия пользователя (например, удаление вызовов retain и release, замена описателей свойств и указателей на объекты), а также помогает исправить проблемы, с которыми не может справиться автоматически. Можно перевести под управление ARC как весь проект целиком, так и отдельные файлы.

Влияет ли ARC на скорость компиляции и работы?

  • никаких накладных расходов GC
  • улучшение производительности: NSObject retain/release в 2.5 раза быстрее, @autoreleasepool в 6 раз быстрее, objc_msgSend на 33% быстрее, retain/autorelease returns в 20 раз быстрее

Компилятор эффективно устраняет множество ненужных retain/release вызовов и ускоряет Objective-C runtime в целом. В частности, общепринятый “return a retain/autoreleased object” паттерн оказывается намного быстрее и на самом деле не помещает объект в autorelease pool, когда метод вызывается из ARC кода.

Следует помнить, что оптимизатор не работает в общей debug конфигурации, так что retain/release траффика будет больше при -O0, чем при -Os.

ARC работает и в ObjC++ режиме.

Новые правила

При использовании ARC:

  • запрещен явный вызов dealloc, однако разрешена реализация dealloc при необходимости выполнения каких-то действий помимо освобождения instance переменных (например, [self setDelegate:nil]);
  • запрещена реализация и вызов release, retain, autorelease, retainCount;

Есть несколько причин, по которым возникает потребность в кастомных retain и release реализациях:

  • Производительность: реализация retain и release для NSObject стала сейчас намного эффективнее и быстрее, в связи с чем кастомная реализация больше не требуется.
  • Реализация системы кастомных weak указателей: теперь вместо этого следует использовать __weak.
  • Реализация синглтона: теперь реализуется паттерном shared instance. Также можно использовать класс вместо методов экземпляра, что позволяет избежать необходимости выделять объект на всех.
  • по-прежнему можно использовать CFRetain, CFRelease и др. при работе с Core Foundation-style объектами в связи с отсутствием возможности полной автоматизации управления объектами CF; [3 п.3.3.2]
  • запрещено использование NSAllocateObject и NSDeallocateObject, объекты создаются с использованием alloc;
  • что касается блоков, то при возврате через return (up the stack) нет необходимости вызывать Block copy. Однако при передаче в качестве параметра (down the stack), например, в arrayWithObjects: и других методах, осуществляющих retain, все еще необходимо использовать [^{} copy]. Следует помнить, что NSString * __block myString является retained в ARC режиме (не является висящим указателем). Чтобы получить поведение, как при ручном управлении памятью, нужно использовать __block NSString * __unsafe_unretained myString или
    лучше __block NSString * __weak myString;
  • запрещено использовать object pointers в структурах C [4 п.4.3.5 – комментарии и объяснения]

Приведенный ниже код не компилируется:
struct X { id x; float y; };

Причина: по умолчанию x является strong, и компилятор не может безопасно синтезировать весь код, необходимый для корректной работы. Например, если вы передаете указатель такой структуре через код, заканчивающийся вызовом free, каждый id должен быть освобожден до того, как будет вызван free для struct. Компилятор не может сделать это надежно, так что strong id в структурах полностью запрещены в ARC режиме. Но есть несколько возможных решений:

  • использовать Objective-C объекты вместо структур (это лучшее решение)
  • если использование Objective-C объектов неоптимально, то рекомендуется использовать void*. При этом требуется использование явных приведений
  • помечать ссылки на объекты __unsafe_unretained. Такой подход может быть полезен в шаблонах следующего типа:
    struct x { NSString *S; int X; } StaticArray[] =
    {
    @”first”, 1,
    @”second, 2,

    };

    Структура объявляется так:
    struct x { NSString * __unsafe_unretained S; int X; }
    Такой подход небезопасен, но для объектов, существующих все время жизни приложения (например, для строковых литералов), может быть очень полезен.

  • для id и void* теперь нужно использовать специальные приведения, которые даюткомпилятору информацию о времени жизни объектов (необходимость возникает при приведении Objective-C объектов и Core Foundation типов);
  • нельзя использовать NSAutoreleasePool объекты; взамен ARC предоставляет блоки @autoreleasepool, использование которых более эффективно; [3 п.7.2 дополнения]
  • нельзя использовать memory zones; в принципе, нет необходимости использовать NSZone, так как modern Objective-C runtime все равно игнорирует их;
  • для обеспечения совместимости с MRR накладываются ограничения на именования методов: например, нельзя начинать имя аксессора с “new”, а следовательно, давать такие имена свойствам, не переопределяя геттеры;
    // Не работает:
    @property NSString *newName;
    // Работает:
    @property (getter=theNewName) NSString *newName;
  • требуется, чтобы результат [super init] присваивался self в методах init;
  • “assigned” переменные экземпляра становятся strong

До ARC, переменные экземпляра были non-owning ссылками – непосредственное присваивание объекта instance переменной не увеличивало время жизни переменной.

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

@interface MyClass : Superclass
{
id thing; // Weak reference.
}
// …
@end
@implementation MyClass
– (id)thing
{
return thing;
}
– (void)setThing:(id)newThing
{
thing = newThing;
}
// …
@end

В ARC instance переменные по умолчанию являются strong ссылками – присваивание объекта instance переменной увеличивает время жизни объекта.

Для поддержания прежнего поведения, необходимо пометить instance переменную как weak или использовать объявление свойства.

@interface MyClass : Superclass
{
id __weak thing;
}
// …
@end
@implementation MyClass
– (id)thing
{
return thing;
}
– (void)setThing:(id)newThing
{
thing = newThing;
}
// …
@end

Или:

@interface MyClass : Superclass
@property (weak) id thing;
// …
@end
@implementation MyClass
@synthesize thing;
// …
@end

Литература:

  1. www.llvm.org
  2. developer.apple.com/library/ios/#releasenotes/ObjectiveC/RNTransitioningToARC/Introduction/Introduction.html
  3. clang.llvm.org/docs/AutomaticReferenceCounting.html
  4. developer.apple.com/library/ios/#documentation/CompilerTools/Conceptual/
    LLVMCompilerOverview/_index.html

 

 

Новогодний марафон

“Каждый год, 31-го декабря, мы с друзьями ходим в баню” (с) Евгений Лукашин

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

 

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

Мобильные разработки

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

 

При чем здесь Android?

– Пойдем простым логическим путем.
– Пойдем вместе.
(с) Ирония судьбы…

Логично, что за количественным преимуществом iOS-приложений, акцент в Новом году будет сделан на приложениях под Android.

Enterra Poker

Развитие платформы Enterra Poker продолжалось и будет продолжаться. В 2012 году, к существующим версиям (флэш версия, десктоп версия, социальная версия), мы предложили мобильную версию клиента.

Разумеется, на 2013 год обещано много нового. Команда разработчиков уже сейчас готовит подарки в виде новых версий платформы Enterra Poker, в которые войдут новые игры и продукты, игровые особенности и возможности, полезные функции и другие необходимые изменения.

Конкурсное новогоднее оформление было поддержано абсолютно всеми отделами и департаментами. Ниже представлена фотоподборка от Perpetuum Software, Адаптивных технологий, отделом Java и .NET разработок.

— Куда вы меня несете?
— Навстречу твоему счастью.
(c) Ирония судьбы…

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

С наступающим Новым 2013 годом, друзья! В Новый год вместе с Энтеррой!

 

Дважды два семь

Именно семь разных проектов уместились в одном iPhone/iPad приложении, разработанном Энтеррой для издательского дома “Дважды два”.

Миссия “Дважды два” гласит:

«Мы развиваемся поступательно, обдуманно и постоянно, используя передовые технологии. Мы мобильны, любое изменение ситуации обращаем в свою пользу; позитивно настроены и находим оптимальные решения в любой ситуации».

Подтверждаем – разработка мобильных приложений в Энтерре является самым оптимальным решением для наших клиентов.

 

В разработанное приложение для iOS вошли издания: рекламная газета “Дважды два”, газета-телегид “Телеобъектив”, газета вакансий “Работай!”, бесплатная общественно-политическая газета “Попутчик”, городская газета “Благовещенск”, газета “Комсомольская правда в Приамурье” и газета “Аргументы и факты. Дальний восток”.

Приложение “Дважды два” распространяется бесплатно через онлайн-магазин App Store. Приложение совместимо с iPhone, iPod touch и iPad с операционной системой iOS 4.0 и более поздних версий.

 

До встречи на “Народном суде”!

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

 

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

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

Приложение “Народный суд” распространяется через онлайн-магазин App Store. Приложение совместимо с iPhone, iPod touch и iPad с операционной системой iOS 3.2 и более поздних версий.

 

Verbaenglish под iOS для изучения английского языка

Verbaenglish – уникальное приложение для iPhone/iPad, разработанное компанией Энтерра, станет вашим незаменимым помощником в изучении английского языка.

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

 

Verbaenglish распространяется через онлайн-магазин App Store. Приложение совместимо с iPhone, iPod touch и iPad с операционной системой iOS 4.0 и более поздних версий.

 

Бесплатный покерный калькулятор для iPhone

Бесплатный покерный калькулятор для iPhone от Энтерры поможет добиться победы в игре.

Играете в Техасский Холдем или Омаху? Хотите узнать каковы ваши шансы на выигрыш? Устанавливайте наше очередное покерное приложение теперь и на iPhone!

Калькулятор имеет удобный интерфейс для максимально быстрого ввода данных.

 

Напоминаем, что для достижения наилучших результатов калькулятор рекомендуется использовать с другим нашим продуктом – Enterra Poker.

 

Портфолио, как украшение интерьера

В связи с расширением производства недавно мы сменили место дислокации и обосновались в новом офисе бизнес-парка «Статус».

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

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

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