
// Мессенджер
// Мессенджер
В этой статье мы подробно расскажем о процессе разработки мобильных приложений для обмена сообщениями. Вы узнаете, из каких этапов состоит этот процесс, какие функции нужно реализовать в мессенджере и сколько времени (и денег) это потребует, а также какие факторы влияют на стоимость разработки.
Разработка мобильного мессенджера — это нетривиальная задача, требующая соответствующего опыта и знаний. Причем не только для реализации технической части, но и для создания уникального ценностного предложения, которое позволит выделить ваш проект среди конкурентов: WhatsApp, Facebook Messenger, Telegram, Skype и других. Как найти технического партнера и на что обращать внимание при его выборе, подробно описано в статье: «Как выбрать компанию-разработчика»
Когда вы выберете технического партнера для создания мессенджера, процесс вашего сотрудничества будет проходить по следующему алгоритму:
Регистрация, вход. Процесс регистрации в приложениях для обмена сообщениями обычно происходит с помощью номера телефона, электронной почты или аккаунта в Facebook, Apple и Google. При этом приложение часто требует подтверждения через ссылку или SMS. Например, когда в WhatsApp пользователь вводит свои данные (номер телефона), приложение отправляет ему SMS, которое автоматически обрабатывается внутри самого приложения. Что весьма удобно.
Настройки мессенджера. В этом разделе пользователи могут отключать или включать уведомления о прочтении сообщений, изменять изображение своего аватара или имя профиля, менять номер телефона, добавлять новые устройства, управлять заблокированными контактами, изменять статус, удалять свои учетные записи, настраивать параметры профиля, например уведомления чата, и т.п. Кроме того, вы также должны предоставить пользователям мессенджера возможность настраивать уровень конфиденциальности их сообщений и данных.
Быстрый импорт контактов. Эта опция позволяет с помощью пары кликов перенести список своих контактов из WhatsApp, Facebook Messenger, Telegram, Skype, Sim-карты или иного источника в ваш мессенджер. Кроме того, сейчас также набирает популярность опция быстрого обмена выбранных контактов через чат, SMS или по беспроводной связи (WiFi, Bluetooth) с находящимися рядом людьми. Последнее можно сделать с помощью QR-кода или специального действия: одновременное встряхивание находящихся рядышком телефонов.
Также стоит создать механизм сравнения контактов на внешних источниках с записями в базе данных приложения. Если совпадение найдено, приложение не будет переносить этот контакт в свою базу, что позволит избежать дублирования абонентов в листинг контактов мессенджера (частая и раздражающая проблема).
Моментальные текстовые сообщения. Это основная функция большинства мессенджеров, даже если они позиционируют себя как приложение для аудио- или видеосообщений — текстовые сообщения люди отправляют значительно чаще.
Реализовать функцию можно двумя способами. Первый подразумевает, что сообщения пользователей будут проходить через сервер и там же будет храниться история сообщений. При этом взаимодействие между устройствами пользователей и сервером будет происходить по протоколу HTTPS с криптографией SSL. Во втором варианте сообщения будут отправляться от пользователя к пользователю. Центральный сервер будет участвовать только в аутентификации.
Аудио- и видеозвонки. Несмотря на то, что главная идея мессенджеров — это моментальные текстовые сообщения, большинство их пользователей также хотели бы иметь возможность время от времени общаться с помощью других способов. Эту функцию можно реализовать в вариациях: только аудиозвонки и сообщения, только видеозвонки и сообщения или групповые аудио- и видеозвонки с сообщениями.
С технической точки зрения этот функционал можно воплотить несколькими способами. Например, WhatsApp использует мультимедийную коммуникационную библиотеку с открытым исходным PJSIP для реализации передачи голоса и аудио по IP (VoIP). PJSIP написан на C и использует высокоуровневый API, объединяя протокол сигнализации SIP с мультимедийной структурой и функцией обхода NAT. Данный API подходит для всех типов систем, включая мобильные.
Стикеры, маски, эмодзи. Они добавляют сообщениям эмоций, могут сделать общение более живым или заменить собою целые фразы, но только если у них приятный внешний вид. Если дизайн масок или смайлов не будет вызывать у людей приятных эмоций, то в лучшем случае их не будут использовать, в худшем — откажутся от вашего мессенджера (гораздо более вероятный сценарий).
Определение местоположения. Геолокация может быть интегрирована в мессенджер с помощью Google Maps API для устройств на базе Android или Map Kit для устройств на базе iOS от Apple. Это даст возможность определять регион пользователя, чтобы автоматически устанавливать нужный язык интерфейса. Еще можно позволить пользователям делиться своим местоположением или добыть геофильтры для масок и эмодзи, как в мессенджере Snapchat.
Сквозное шифрование (E2EE). Если вы хотите создать приложение для обмена сообщениями, вы должны обеспечить безопасность личных данных пользователей. В большинстве приложений этого добиваются посредством метода под названием end-to-end encryption (E2EE). Это подразумевает, что сервер не знает секретные ключи абонентов (с их помощью система шифрует и расшифровывает данные) и никак не участвует в шифровании — оно проходит как бы «сквозь» сервер.
В WhatsApp такое шифрование основано на базе протокола Signal, в реализации которого используются алгоритмы ECDH на Curve25519, AES-256, AES-GCM, HMAC-SHA256, HDKF. Сквозное шифрование в WhatsApp распространяется на все типы сообщений: текст, аудио, видео, файлы мультимедиа.
Уведомления. В современных мессенджерах пользователь получает уведомление о личном сообщении чата или групповом сообщении через уведомления мобильного приложения. В зависимости от глубины проработки данной функции это может быть простое push-уведомление и засветка индикатора, уведомление с полным текстом нового сообщения на экране смартфона засветкой индикатора, а также уведомление с текстом нового сообщения на экране и возможностью ответить на него не открывая мессенджер. Эта функция может быть реализована через Google Cloud Messaging или Apple Push Notifications.
Монетизация. Если вы намерены разработать мобильный мессенджер, чтобы заработать на этом, то вам нужно заранее определиться с моделью монетизации. Самый популярный вариант — это сочетание freemium-модели с рекламой.
Freemium подразумевает, что основная часть функционала приложения будет абсолютно бесплатной, поэтому пользователи смогут спокойно отправлять и получать сообщения ничего за это не платя. Но они смогут расширить возможности приложения, купив эксклюзивные стикеры, увеличив качество видеозвонков, расширив количество участников в групповых звонках и т.п.
Сложность проекта. Под сложностью приложения обычно имеют в виду количество реализованных в нем функций и глубину их проработки. Градация здесь следующая: простой мессенджер — до 400 часов, умеренный — от 400 до 800 часов, сложный — от 800 до 1500 часов или больше. Разницу между простым и сложным приложением легко заметить, если сравнить функцию SMS и возможности таких мессенджеров, как Facebook Messenger, Snapchat, WhatsApp, Telegram, Viber или Signal.
Фронтенд — это интерфейс и остальные элементы приложения, с которыми напрямую взаимодействует конечный пользователь. Также можно сказать, что это все то, что происходит в устройстве пользователя. Вот пример технологического стека для разработки мобильного мессенджера:
Бэкенд — это программно-аппаратная часть сервиса, которая отвечает за реализацию логики и функционала приложения вне устройства пользователя. Вот пример технологического стека для бэкенда мессенджера:
Местоположение разработчика. Это важно, так как средняя зарплата UX/UI-дизайнеров, программистов, бизнес-аналитиков, проект-менеджеров, QA-инженеров и других специалистов может сильно различаться в разных странах. Так, средняя почасовая ставка специалиста из Соединенных Штатов Америки составляет 95 долларов в час, Великобритании и Западной Европы — 67 долларов в час, Восточной Европы — 37 долларов в час, Азии — 25 долларов в час.
Причем, что любопытно, несмотря на столь большую разницу в зарплате, качество работы специалистов из США и, например, Украины, сопоставимо. Поэтому Apple, Microsoft, Dell, IBM и другие американские IT-компании постоянно отдают часть разработки своих продуктов на аутсорсинг в более «дешевые» страны.
Вот ориентировочная стоимость разработки мобильного мессенджера исходя из его вероятной сложности и местонахождения компании-разработчика:
Чтобы вы могли лучше ориентироваться в зарплатах, вот таблица, где представлены почасовые ставки мобильных разработчиков в зависимости от их специализации, местоположения и уровня навыков: