Идеи для стартапа: стоит ли создавать мессенджер? Пишем свой мессенджер P2P Пишем крутой мессенджер ios андроид

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

Используемые технологии и инструменты

  1. Стек MEAN (Mongo, Express, Angular, Node).
  2. Сокеты для прямого обмена сообщениями.
  3. AJAX для регистрации и входа.

Подготовка

Структура будущего приложения выглядит примерно так:

Схема должна получиться примерно следующего вида:

{ "_id" : ObjectId("5809171b71e640556be904ef"), "name" : "Monkey proger", "handle" : "mkproger", "password" : "proger228", "phone" : "8888888888", "email" : "[email protected]", "friends" : [ { "name" : "habrick", "status" : "Friend" }, { "name" : "javaman", "status" : "Friend" } ], "__v" : 0 }

Собеседникам могут быть присвоены следующие статусы:

  • Friend - собеседник является другом.
  • Pending - собеседник пока не принял запрос.
  • Blocked - собеседник заблокирован.

Предположим, что собеседник отклонил запрос на приватную беседу. В таком случае отправитель должен иметь возможность снова направить запрос.

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

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

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

Ниже – восемь «фишек» продукта, существенно влияющих на вашу защищённость в сети. Некоторые из этих идей совершенно уникальны: такое предлагает только Eleet Private Messenger. Другие, в том или ином виде, можно встретить у конкурентов, но мы всё равно о них расскажем: ведь важна именно комплексная система, построенная командой разработки Eleet.

Итак, начнём.

1. Нет привязки к телефону

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

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

Не забудем и о банальном способе обхода авторизации по SMS, столь популярной сегодня: создании дубликата SIM-карты. Мобильные операторы легко могут осуществить это в чьих-либо интересах. Да, пресловутая «двухфакторная авторизация» с пересылкой кода текстовым сообщением – далеко не так надёжна, как многим кажется.

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

2. Нет привязки к личности

Это не столько конкретная функция приложения, сколько общая идея, которую мы последовательно реализуем – и она естественным образом вытекает из предыдущего пункта. Итак, аккаунт в Eleet Private Messenger вообще никак не связан с вашей реальной личностью. Пользуясь нашим мессенджером, вы не оставляете следов, позволяющих связать вас настоящего с вами же в информационном пространстве Eleet.

3. Приватные ID

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

4. Не «светитесь» онлайн

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

5. Удалить можно действительно всё

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

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

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

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

7. Особо секретные чаты

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

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

8. И самое интересное!

Естественно, нашу любимую функцию мы приберегли напоследок. Пользователи Eleet Private Messenger могут задать «пин-код на удаление». Что это такое?

Со стороны покажется, будто вы вводите самый обыкновенный пин-код (вроде того, что описан в шестом пункте). Обычная мера авторизации. В действительности же, по этой команде Eleet мгновенно удалит все ваши данные – переписки, контакты, пересылаемые материалы, и тому подобное. А как вы уже знаете, под «удалением» наша команда имеет в виду настоящее, бесследное удаление: восстановить ничего не получится.

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

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

Как видите, в этом направлении нами сделано уже очень многое. И будет реализовано ещё больше.

Нам понадобится:
- один сервер с белым статическим IP адресом;
- 2 компьютера за NAT с типом соединения Full Cone NAT (либо 1 компьютер с 2-мя виртуальными машинами);
- STUN-сервер.

Full Cone NAT - это такой тип преобразования сетевых адресов, при котором существует однозначная трансляция между парами «внутренний адрес: внутренний порт» и «публичный адрес: публичный порт».

Вот, что мы можем прочесть о STUN-сервере на Wiki :

«Существуют протоколы, использующие пакеты UDP для передачи голоса, изображения или текста по IP-сетям. К сожалению, если обе общающиеся стороны находятся за NAT’ом, соединение не может быть установлено обычным способом. Именно здесь STUN и оказывается полезным. Он позволяет клиенту, находящемуся за сервером трансляции адресов (или за несколькими такими серверами), определить свой внешний IP-адрес, способ трансляции адреса и порта во внешней сети, связанный с определённым внутренним номером порта.»

При решении задачи использовались следующие питоновские модули: socket, twisted, stun, sqlite3, os, sys.

Для обмена данными, как между Сервером и Клиентом, так и между Сервером, Клиентом и Сигнальным Сервером - используется UDP протокол.

В общих чертах механизм функционирования выглядит так:

Сервер <-> STUN сервер
Клиент <-> STUN сервер

Сервер <-> Сигнальный Сервер
Клиент <-> Сигнальный Сервер

Клиент -> Сервер

1. Клиент, находясь за NAT с типом соединения Full Cone NAT, отправляет сообщение на STUN сервер, получает ответ в виде своего внешнего IP и открытого PORT;

2. Сервер, находясь за NAT с типом соединения Full Cone NAT, отправляет сообщение на STUN сервер, получает ответ в виде своего внешнего IP и открытого PORT;

При этом, Клиенту и Серверу известен внешний (белый) IP и PORT Сигнального Сервера;

3. Сервер отправляет на Сигнальный Сервер данные о своих внешних IP и PORT, Сигнальный Сервер их сохраняет;

4. Клиент отправляет на Сигнальный Сервер данные о своих внешних IP и PORT и id_destination искомого Сервера, для которого ожидает его внешний IP, PORT.

Сигнальный Сервер их сохраняет, осуществляет поиск по базе, используя id_destination и, в ответ, отдает найденную информацию в виде строки: "id_host, name_host, ip_host, port_host";

5. Клиент принимает найденную информацию, разбивает по разделителю и, используя (ip_host, port_host), отправляет сообщение Серверу.

Приложения написаны на Python версии 2.7, протестированы под Debian 7.7.

Создадим файл server.py с содержимым:

server.py

# -*- coding: utf-8 -*- #SERVER from socket import * import sys import stun def sigserver_exch(): # СЕРВЕР <-> СИГНАЛЬНЫЙ СЕРВЕР # СЕРВЕР <- КЛИЕНТ # СЕРВЕР - отправляет запрос на СИГНАЛЬНЫЙ СЕРВЕР с белым статическим IP со своими данными о текущих значениях IP и PORT. Принимает запрос от КЛИЕНТА. #Внешний IP и PORT СИГНАЛЬНОГО СЕРВЕРА: v_sig_host = "XX.XX.XX.XX" v_sig_port = XXXX #id этого КЛИЕНТА, имя этого КЛИЕНТА, id искомого СЕРВЕРА v_id_client = "id_server_1002" v_name_client = "name_server_2" v_id_server = "none" #IP и PORT этого КЛИЕНТА v_ip_localhost = "XX.XX.XX.XX" v_port_localhost = XXXX udp_socket = "" try: #Получаем текущий внешний IP и PORT при помощи утилиты STUN nat_type, external_ip, external_port = stun.get_ip_info() #Присваиваем переменным белый IP и PORT сигнального сервера для отправки запроса host_sigserver = v_sig_host port_sigserver = v_sig_port addr_sigserv = (host_sigserver,port_sigserver) #Заполняем словарь данными для отправки на СИГНАЛЬНЫЙ СЕРВЕР: #текущий id + имя + текущий внешний IP и PORT, #и id_dest - укажем "none" #В качестве id можно использовать хеш случайного числа + соль data_out = v_id_client + "," + v_name_client + "," + external_ip + "," + str(external_port) + "," + v_id_server #Создадим сокет с атрибутами: #использовать пространство интернет адресов (AF_INET), #передавать данные в виде отдельных сообщений udp_socket = socket(AF_INET, SOCK_DGRAM) #Присвоим переменным свой локальный IP и свободный PORT для получения информации host = v_ip_localhost port = v_port_localhost addr = (host,port) #Свяжем сокет с локальными IP и PORT udp_socket.bind(addr) print("socket binding") #Отправим сообщение на СИГНАЛЬНЫЙ СЕРВЕР udp_socket.sendto(data_out,addr_sigserv) while True: #Если первый элемент списка - "sigserv" (сообщение от СИГНАЛЬНОГО СЕРВЕРА), #печатаем сообщение с полученными данными #Иначе - печатаем сообщение "Message from CLIENT!" data_in = udp_socket.recvfrom(1024) if data_in == "sigserv": print("signal server data: ", data_in) else: print("Message from CLIENT!") #Закрываем сокет udp_socket.close() except: print("exit!") sys.exit(1) finally: if udp_socket <>


Создадим файл client.py с содержимым:

client.py

# -*- coding: utf-8 -*- # CLIENT from socket import * import sys import stun def sigserver_exch(): # КЛИЕНТ <-> СИГНАЛЬНЫЙ СЕРВЕР # КЛИЕНТ -> СЕРВЕР # КЛИЕНТ - отправляет запрос на СИГНАЛЬНЫЙ СЕРВЕР с белым IP # для получения текущих значений IP и PORT СЕРВЕРА за NAT для подключения к нему. #Внешний IP и PORT СИГНАЛЬНОГО СЕРВЕРА: v_sig_host = "XX.XX.XX.XX" v_sig_port = XXXX #id этого КЛИЕНТА, имя этого КЛИЕНТА, id искомого СЕРВЕРА v_id_client = "id_client_1001" v_name_client = "name_client_1" v_id_server = "id_server_1002" #IP и PORT этого КЛИЕНТА v_ip_localhost = "XX.XX.XX.XX" v_port_localhost = XXXX udp_socket = "" try: #Получаем текущий внешний IP и PORT при помощи утилиты STUN nat_type, external_ip, external_port = stun.get_ip_info() #Присваиваем переменным белый IP и PORT сигнального сервера для отправки запроса host_sigserver = v_sig_host port_sigserver = v_sig_port addr_sigserv = (host_sigserver,port_sigserver) #Заполняем словарь данными для отправки на СИГНАЛЬНЫЙ СЕРВЕР: #текущий id + имя + текущий внешний IP и PORT, #и id_dest - id известного сервера с которым хотим связаться. #В качестве id можно использовать хеш случайного числа + соль data_out = v_id_client + "," + v_name_client + "," + external_ip + "," + str(external_port) + "," + v_id_server #Создадим сокет с атрибутами: #использовать пространство интернет адресов (AF_INET), #передавать данные в виде отдельных сообщений udp_socket = socket(AF_INET, SOCK_DGRAM) #Присвоим переменным свой локальный IP и свободный PORT для получения информации host = v_ip_localhost port = v_port_localhost addr = (host,port) #Свяжем сокет с локальными IP и PORT udp_socket.bind(addr) #Отправим сообщение на СИГНАЛЬНЫЙ СЕРВЕР udp_socket.sendto(data_out, addr_sigserv) while True: #Если первый элемент списка - "sigserv" (сообщение от СИГНАЛЬНОГО СЕРВЕРА), #печатаем сообщение с полученными данными и отправляем сообщение #"Hello, SERVER!" на сервер по указанному в сообщении адресу. data_in = udp_socket.recvfrom(1024) data_0 = data_in data_p = data_0.split(",") if data_p == "sigserv": print("signal server data: ", data_p) udp_socket.sendto("Hello, SERVER!",(data_p,int(data_p))) else: print("No, it is not Rio de Janeiro!") udp_socket.close() except: print ("Exit!") sys.exit(1) finally: if udp_socket <> "" udp_socket.close() sigserver_exch()


Заполним соответствующие поля разделов: «Внешний IP и PORT СИГНАЛЬНОГО СЕРВЕРА» и «IP и PORT этого КЛИЕНТА».

Создадим файл signal_server.py с содержимым:

signal_server.py

# -*- coding: utf-8 -*- # SIGNAL SERVER #Twisted - управляемая событиями(event) структура #Событиями управляют функции – event handler #Цикл обработки событий отслеживает события и запускает соответствующие event handler #Работа цикла лежит на объекте reactor из модуля twisted.internet from twisted.internet import reactor from twisted.internet.protocol import DatagramProtocol import sys, os import sqlite3 class Query_processing_server(DatagramProtocol): # СИГНАЛЬНЫЙ СЕРВЕР <-> КЛИЕНТ # КЛИЕНТ -> СЕРВЕР # либо # СИГНАЛЬНЫЙ СЕРВЕР <-> СЕРВЕР # СИГНАЛЬНЫЙ СЕРВЕР - принимает запросы от КЛИЕНТА и СЕРВЕРА # сохраняет их текущие значения IP и PORT # (если отсутствуют - создает новые + имя и идентификатор) # и выдает IP и PORT СЕРВЕРА запрошенного КЛИЕНТОМ. def datagramReceived(self, data, addr_out): conn = "" try: #Разбиваем полученные данные по разделителю (,) #id_dest - искомый id сервера data = data.split(",") #Запрос на указание пути к файлу БД sqlite3, при отсутствии будет создана новая БД по указанному пути: path_to_db = raw_input("Enter name db. For example: "/home/user/new_db.db": ") path_to_db = os.path.join(path_to_db) #Создать соединение с БД conn = sqlite3.connect(path_to_db) #Преобразовывать байтстроку в юникод conn.text_factory = str #Создаем объект курсора c = conn.cursor() #Создаем таблицу соответствия для хостов c.execute("""CREATE TABLE IF NOT EXISTS compliance_table ("id_host" text UNIQUE, "name_host" text, "ip_host" text, \ "port_host" text)""") #Добавляем новый хост, если еще не создан #Обновляем данные ip, port для существующего хоста c.execute("INSERT OR IGNORE INTO compliance_table VALUES (?, ?, ?, ?);", data) #Сохраняем изменения conn.commit() c.execute("SELECT * FROM compliance_table") #Поиск данных о сервере по его id c.execute("""SELECT id_host, name_host, ip_host, port_host from compliance_table WHERE id_host=?""", (data,)) cf = c.fetchone() if cf == None: print ("Server_id not found!") else: #transport.write - отправка сообщения с данными: id_host, name_host, ip_host, port_host и меткой sigserver lst = "sigserv" + "," + cf + "," + cf + "," + cf + "," + cf self.transport.write(str(lst), addr_out) #Закрываем соединение conn.close() except: print ("Exit!") sys.exit(1) finally: if conn <> "" conn.close() reactor.listenUDP(9102, Query_processing_server()) print("reactor run!") reactor.run()

Порядок запуска приложения следующий:
- signal_server.py
- server.py
- client.py

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

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

Как мы пришли к этой идее?

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

Допустим, вы хотите сделать приложение а-ля Авито, где люди выкладывают объявления по продаже б/у товаров. Покупатель листает ленту или находит нужный ему товар, ему не нужно ждать отклика на заявку, он сразу же напрямую ведет диалог с продавцом и договаривается о встрече. Быстро, удобно, без кучи созвонов и поиска контакта в WhatsApp или Telegram.

Осознав все плюсы мессенджеров, основанных на общении между людьми, мы решили зайти дальше. Мы подумали: «Что получится, если мессенджер не будет загоняться в жесткие рамки, а будет иметь возможность включать в себя различные функции?» Получится новое коробочное решение а-ля "поставить аналог вотсапа себе на сервер с возможностью доработок". Несомненный плюс данного решения в том, что стоить оно будет явно меньше, чем в других студиях при разработке с нуля (за аналог WhatsApp в среднем называется стоимость от 45000$ до 55000$). Это позволит вам протестировать вашу идею по адекватной цене и решить, взлетает проект или нет.

Что уже включает коробочное решение?

  • Регистрация и авторизация по номеру телефона
  • Профиль пользователя, он может заполнить ФИО и поставить свое фото
  • Список пользователей, контакты
  • Список диалогов
  • Окно Чата
  • Статус сообщения

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

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

  • Objective-C и Java для iOS и Android приложения
  • Node.js - держим сокет-соединения для получения сообщений в режиме реального времени
  • Redis -храним стек сообщений для отправки
  • APN/FCM push-сервер используем для отправки push-уведомлений, если приложение свёрнуто
  • Bitrix.Framework для генерации экранов мобильного приложения и гибкого развития приложения
  • MySQL - для хранения пользователей, ролей доступа, историй сообщений и кастомизированных данных приложения
  • 1С-Битрикс - для административного управления мессенджером

Работа с конкретными задачами

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

Мы с ним пришли к модели, что при внедрении месседжера он сможет получить вот такие ценности:

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

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

  1. Групповой чат (чтобы клиенты "заряжали" друг друга)
  2. Экран с тарифами услуг компании

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

Перспективы развития

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

  1. разработка функции добавления в окна чата различных мультимедиа (фото, видео, файлы), активных ссылок;
  2. работа над улучшением дизайна;
  3. создание групповых чатов.

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

Если вас заинтересовало наше новое коробочное предложение, то пишите мне на почту . Буду рад ответить вам на любые вопросы.

Что количество пользователей мессенджеров к 2021 году составит почти два с половиной миллиарда — это треть населения Земли. Есть ли на рынке мобильных приложений место для вашего стартапа и какими особенностями должен обладать ваш мессенджер, чтобы он мог завоевать популярность в высококонкурентной среде?

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

Тенденции рынка мобильных мессенджеров — Азия наступает на пятки

WhatsApp vs Facebook мессенджер — конкуренты и партнеры

В 2014 году медиагигант Facebook приобрел мессенджер WhatsApp за баснословные 19 миллиардов долларов, и явно не пожалел об этом. Количество активных пользователей WhatsApp уже давно перевалило за миллиард, если точнее — 1.3 миллиарда по состоянию на июль 2017 года. Несмотря на то, что FB messenger и WhatsApp предлагают пользователям довольно схожий набор функций, и даже подобный интерфейс, на данный момент они на двоих занимают две первые позиции в рейтинге самых популярных мобильных мессенджеров в мире.

WhatsApp

Что примечательно, WhatsApp особенно популярен за пределами США и пока что успешно выдерживает конкуренцию с Азиатскими мессенджерами. Кроме того, приложение пользуется большим спросом на развивающихся рынках Бразилии, Мексики и Турции.

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

  • Регистрация по номеру телефона;
  • Realtime-события;
  • Отправка файлов и изображений;
  • Запись голосовых сообщений;
  • Голосовые звонки.

Также WhatsApp позволяет загружать файлы из сторонних облачных сервисов, вроде Google Drive, OneDrive и iCloud сразу в сообщение. Для iOS в приложение интегрирована Siri, она может слать сообщения и совершать голосовые звонки напрямую в мессенджере. В вы можете подробнее почитать об особенностях самого популярного мессенджера, а также узнать стоимость мобильного приложения вроде WhatsApp.

Facebook messenger

Facebook Messenger, приложение разработанное специально для общения, с момента запуска в 2011 уже приобрело популярность почти как у WhatsApp. Чистый, светлый интерфейс приложения, практичен и удобен для пользователя.

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

  • Голосовые и видеозвонки;
  • Возможность реагировать на сообщения внутри чата, слать гифки и стикеры;
  • Возможность добавить человека в друзья, просто отсканировав код его профиля — удобно, когд не хочется печатать имя человека или искать его среди множества однофамильцев;
  • Большое количество игр, встроенных в мессенджер;
  • Функция установки напоминаний о планах;
  • Действительно огромное количество чат-ботов;
  • Последние обновления мессенджера принесли возможность делиться с друзьями своим местоположением в данный момент;

В 2016 году FB Messenger стал одним из самых популярных мобильных приложений в США, получив более 100 миллионов уникальных пользователей в месяц. Мессенджер импортирует контакты из Facebook и удобен в использовании как с мобильных устройств, так и на десктопе.

Самые популярные функции FB мессенджера

Slack — восходящая звезда корпоративных коммуникаций

Программы для корпоративного общения становятся все более популярными. За меньше чем четыре года с тех пор как Slack был выпущен на рынок в 2013 году, он уже успел стать одним из наиболее популярных корпоративных мессенджеров. В феврале 2017 года число его активных пользователей достигло 5 миллионов . Согласно проведенному опросу , треть респондентов отметили, что после внедрения Slack в бизнес-процессы, эффективность работы увеличилась до 20-40%.

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

  • Возможность создавать множество различных каналов под тему беседы;
  • Slack-бот, который работает, как виртуальный блокнот, куда можно прикрепить приглянувшиеся идеи;
  • Возможность поиска сообщений по ключевому слову;
  • Интеграция со сторонними сервисами, такими как Asana, Dropbox и Google Hangouts;
  • Также Slack интегрирован с Giphy (приложение для поиска гифок в сети), пользователь может получить доступ к приложению, просто введя " /giphy" и ключевое слово, например «Hello world!»;
  • Пожалуй к минусам данного корпоративного мессенджера можно отнести то, что он не сохраняет переписку на длительный период, хотя, как показывавет динамика, пользователей этот факт не смущает.

SnapChat - создавая мимолетную реальность

Американские тинейджеры назвали Snapchat самым важным приложением своего поколения. Обращаясь непосредственно к молодой аудитории, почти треть взрослых пользователей Snapchat — это люди от 18 до 24 лет. В нескольких словах, Snapchat позволяет делиться фото- и видео-сообщениями, причем время жизни такого сообщения устанавливает отправитель. Пользователь может наложить на картинку множество эффектов, дудлов и графики. Подробнее о особенностях мессенджера Snapchat:

  • Установка временного лимита: каждое отправленное сообщение самоуничтожается через установленный отрезок времени — предполагается, что пользователи могут не опасаться что их картинки попадут в общий доступ;
  • Информирование о скриншотах — еще одна опция для обеспечения безопасности данных. Если кто-то из получателей надумает заскринить сообщение, отправитель получит уведомление и далее будет осторожно делиться файлами с этим человеком;
  • Возможность сделать так называемый face swap — наложить на свое фото картинки из галереи телефона;
  • Линзы — пожалуй, самая интересная и востребованная опция. Мессенджер Snapchat сканирует лицо человека, во время съемки фото или видео, затем можно накладывать всевозможные эффекты и маски;
  • Снапкод — аватарка, похожая на QR-код, уникальная для каждого пользователя. Если сделать скриншот или фотографию снапкода и отправить другу, тот сможет добавить вас в снэпчате, не вводя никнейм;
  • Летом этого года в мессенджере появилась возможность делиться с друзьями своим местоположением.

Сегодня Snapchat — один из наиболее популярных мессенджеров в мире для обмена мультимедиа-файлами. С момента запуска приложения в 2011 году, сейчас количество его активных пользователей уже перевалило за 150 миллионов .

Стоит ли создать еще одно приложение мессенджер?

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

WhatsApp и FB messenger — пример того, как два продукта со схожими функциями и интерфейсом могут отлично сосуществовать на рынке решений для коммуникации. Как это возможно? Вспомните — сколько мессенджеров на вашем телефоне. Несколько лет назад наша компания разработал мессенджер , поддерживающий Realtime-события, также как WhatsApp, но для корпоративных нужд, как Slack. Хороший пример тому, что ваш мобильный мессенджер может объединять функции уже существующих решений и быть рассчитано на разные цели. Или же вы можете сделать шаг вперед и создать нечто принципиально новое в сфере приложений для общения.

У наших специалистов большой опыт в сфере создания мобильных приложений среднего и энтерпрайз уровней. Нужна разработка MVP, приложения для iOS и Android или создание кастомного дизайна? Взгляните на наше и прямо сегодня!

Поделиться