Автор кейсаAzoftЛоготип компании

Free for Lunch: Приложение для встреч с друзьями и новых знакомств

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

Идея проекта

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

Требования заказчика

  1. Разработать дизайн приложения
  2. Спроектировать и создать разделы приложения
  3. Обеспечить синхронизацию с соцсетями (VK, FB, Twitter)
  4. Реализовать функцию геолокации пользователей на карте
  5. Добавить функцию сохранения истории активности пользователя
  6. Интегрировать приложение с Foursquare, чтобы получать список мест для встречи
  7. Реализовать функцию SMS рассылки для подтверждения регистрации
  8. Создать интерфейс приложения на русском языке с возможностью дальнейшего подключения других языков
  9. Реализовать возможности монетизации: организовать дополнительный платный контент и расширенную подписку
  10. Разработать веб-приложение для администрирования процессов

Решение

Azoft разработал приложение в строгом соответствии с требованиями заказчика. Готовое решение включает объёмную серверную часть для распределения большой нагрузки на сервер и широкий пользовательский функционал. FreeforLunch выгодно отличается от других приложений для знакомств, совмещая в себе функции соцсети, мессенджера и геолокационного сервиса. Яркий дизайн и user-friendly интерфейс успешно дополняют друг друга и завершают концепцию приложения.

Виды работ

Приложенные усилия: 3500 – 4000 человеко-часов

Технологии: iOS, Android, Java, Spring, Hibernate, Postgres, REST

Принцип работы приложения

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

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

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

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

Как создавалось приложение

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

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

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

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

Какие проблемы были решены

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

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

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

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

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

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

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

Результат

Приложение FreeforLunch доступно во всех крупных городах России и продолжает развиваться. Поддерживает русский, английский и испанский языки. Является бесплатным и открытым для скачивания в AppStore и Google Play. Для пользователей предусмотрен пакет расширенных функций по платной подписке.


Перейти на сайт

В карточку агентства

Письмо автору кейса

Пользуйтесь реальным опытом в IT и следите за успехами потенциальных подрядчиков и конкурентов
Подпишитесь на рассылку
Читайте также
Кейсы по теме#Разработка мобильных приложений
Проекты компании Proactivity Group