тамтам мессенджер что это такое

Звоните
с видео

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Общайтесь
в чатах

Объедините до 20 000 участников в чате и назначьте до 50 администраторов. Упоминания и отметки о прочтении помогут общаться комфортно. Отправляйте файлы до 2 Гб, ТамТам предоставляет неограниченное место в облаке для хранения информации.

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Ведите канал

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Делитесь
местоположением

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Создавайте
и используйте ботов

для добавления реакций к сообщениям
@reactions

для обсуждения постов
@comments

для защиты чатов от спама
@antispam

для поддержки и жалоб
@support и @abuse

Источник

Что за мессенджер «Там-Там» от mail.ru — разбираемся в приложении

Мессенджер «Там-Там» создан в 2017 году разработчиками из России. Данный продукт принадлежит компании Mail.Ru Group. Там-там отстает по популярности от своих конкурентов таких как Viber, WhatsApp или Telegram, но своя аудитория у него есть. В этом обзоре рассмотрим приложение для ОС Android.

Установка приложения и регистрация

Скачать и установить приложение «Там-Там» можно из GooglePlay Маркета для Android, App Store для IOS, так же приложение доступно в web-версии.

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Настройки профиля.

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

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

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

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

Во вкладке «контакты» можно найти контакты из телефонной книги, начать чат и пригласить контакт в приложение Там-Там.

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

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Каналы

ТамТам во многом напоминает Телеграм, а именно возможностью создания и ведения канала.

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

Для создания канала в Там-Там перейдите во вкладку «сообщения» и в правом нижнем углу нажмите «+», выберите пункт «Создать канал». Далее придумываем название своего канала и добавляем фото (логотип). Нажимаем «создать».

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Приложение направляет на страницу настроек канала. Здесь выбираете какой у вас канал, приватный или публичный, создаете ссылку канала и вводите описание. Все! Канал создан.

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Приложение «Там-Там» доступна для мобильных платформ Android и iOS, а также для ОС Windows, macOS и Linux.

Преимущества и недостатки.

К достоинствам следует отнести:

Приложение «Там-Там» — это хорошая копия Telegram с небольшими изменениями. Отсутствует шифрование, что очень понравится спец.службам. Компания Mail.Ru Group скопировала концепцию мессенджера, не внеся, практически, ничего нового.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Тамтам мессенджер что это такое

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

«ТамТам» доступен на всех возможных платформах: iOS, Android, Windows и даже Linux. Есть и веб-версия.

Одна из уникальных особенностей мессенджера — для входа необязательно указывать свой номер телефона. Войти можно через все те же «Одноклассники» или с помощью аккаунта Google.

В целом, «ТамТам» очень похож на Telegram. Здесь, например, тоже есть каналы, правда, судя по количеству подписчиков и истории постов, ведутся они не слишком регулярно. В Mash на момент публикации насчитывалось 5600 человек, тогда как в Telegram — 280 тысяч. То же самое касается обоих «Лентачей» — 50 и 301 человек соответственно, причем последние посты датированы 10-м апреля.

Зато каналы можно искать по названию прямо внутри приложения — Telegram, например, так не умеет.

Из более-менее крупных новостных каналов есть BBC и RT.

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

Есть свой канал и у «вДудя».

Тоже не слишком активный.

На месте и стикеры — правда, здесь они отличаются от того, что есть в мессенджере Павла Дурова. По сути это гиф-картинки, которые воспроизводятся при отправлении или по нажатию. Искать их можно внутри приложения по ключевым словам. Популярных стикеров из «ТГ» тут большей частью нет (прощай, taxiderm!), зато есть свои. Чаще всего они представляют собой коротенькие вырезки из популярных фильмов и сериалов. Нам, например, удалось найти стикеры из «Физрука», «Клиники» и Gravity Falls. Герой из последнего мультсериала, кстати, почему-то отображается при запросе «ведьмак». Ждем кроссовер!

В «Там-там» встроены аудиозвонки, а также видеочат — и в этом он дает Telegram фору. Работает все это вполне неплохо, качество связи не хватает звезд с неба, но пользоваться можно, — интерфейс такой же, как, например, в Whatsapp.

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

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

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

На «Хабре» есть пост от одного из разработчиков приложения, но там тоже ничего об этом не сказано. Зато, по словам программиста «ТамТам», создатели фокусировались на скорости работы и оптимизации в условиях плохой связи. Мы запускали приложение на Galaxy S9 и iPhone 6S — в обоих случаях приложение работало здорово. Что, в общем-то, неудивительно.

А теперь главное: стоит ли переходить в «ТамТам» из Telegram? Если вы привыкли к мессенджеру Павла Дурова и после блокировки сможете настроить его для работы через VPN (что не так уж и сложно) — скорее, нет.

В «ТамТам» нет большинства интересных и популярных каналов, а базу контактов вам придется наращивать заново, буквально уговаривая людей установить себе очередной мессенджер. Кроме того, вы будете скучать и по стикерам — анимированные картинки из «Холостяка» вряд ли заменят вам тот огромный набор мемов, что сгенерировали за эти годы пользователи Telegram. И самое главное — нет никакой гарантии, что условный «Товарищ Майор» не получит доступ к вашей переписке.Тем не менее, в целом «ТамТам» производит скорее положительное впечатление, пускай и способен окунуть вас в чудную атмосферу «Одноклассников». Здесь есть все, что нужно: чаты и групповые чаты, аудио и видеозвонки, каналы и клиенты для разных платформ. Кроме того, если «ОК» — ваша основная социальная сеть, вы оцените и интеграцию. На мой взгляд, «ТамТам» гораздо удобнее того же WhatsApp.

А еще это хороший вариант «мессенджера для родственников» — в самый раз, чтобы позвонить маме или бабушке

Источник

Тамтам мессенджер что это такое

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

ТамТам был разработан крупнейшим IT-холдингом России Mail.ru Group.

1.2. Уровень подготовки пользователей

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

Базовые навыки работы с мобильными приложениями на смартфонах под управлением одной из следующих операционных систем:

Базовые навыки работы на ПК ЭВМ в интернет браузере.

1.3. Назначение документа

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

2. Назначение и условия применения

2.1. Назначение и ограничения

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

2.2. Основные возможности

2.2.1. Чаты

До 20 000 участников в приватном или публичном чате;

До 50 администраторов чата;

Упоминания, цитирование, ответы, пересылка сообщений, а также отметки о прочтении;

Публичные чаты доступны в интернет без регистрации в ТамТам.

2.2.2. Бесплатные звонки

Групповые видеозвонки до 100 участников помогут собрать коллег или друзей;

Возможность позвонить в чат. Общайтесь в чате и соберите его участников на звонке;

Демонстрация экрана при видеозвонке с компьютера;

Звонки со ссылкой, к которым можно присоединиться без регистрации в ТамТам.

2.2.3. Каналы

Приватные и публичные каналы с неограниченным количеством участников;

Возможность модерации канала администраторами (до 50 администраторов);

Публичные каналы доступны в интернет без регистрации в ТамТам;

Создание закрытого канала без ссылки (например, для заметок).

2.2.4. Геосервисы

Отправляйте точки на карте друзьям;

Включайте постоянную трансляцию местоположения только для самых близких;

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

2.2.5. Безопасность

Вся переписка в ТамТам зашифрована с помощью протокола TLS;

Собственный протокол для передачи личной информации, а также общепринятые алгоритмы защиты;

Данные надежно защищены и хранятся на распределенной сети серверов;

Блокировка кодом в настройках приложения.

2.2.6. Облачное хранение

Вся переписка хранится в облаке, не нужно тратить память телефона;

Неограниченное место для хранения ваших файлов;

Отправка файлов до 2Гб.

2.2.7. Просмотр видео

Встроенный плеер для видео с поддержкой режима “картинка в картинке”;

Перемотка видео по двойному нажатию и отправка видео без звука в приложениях;

В настройках можно включить или отключить автовоспроизведение видео при прокрутке;

Прослушивание видео в фоне при сворачивании приложения (удобно для лекций и вебинаров, например);

Переключение между звуковыми дорожками, если видео отправлено как файл;

2.2.8. Редактирование

Прикрепление сообщений в чатах и каналах;

Отправка и редактирование коллажей, включая фото и видео;

24 часа на редактирование личных сообщений и неограниченное время на редактирование сообщений в каналах;

2.2.9. Оформление

Установка любого изображения как фона;

2.2.10. Мультиплатформенность

Android и iOS приложения для мобильных;

Десктоп-клиент для Windows, Mac и Linux;

Веб-версия (доступна в любом браузере);

Одновременное использование и синхронизация на любых платформах.

2.2.11. Bot API

Разработчики могут создавать ботов для ТамТам с помощью Bot API;

Добавление новых функций в ТамТам с помощью ботов-конструкторов;

Официальные боты: @reactions для лайков и реакций, @comments для обсуждений, @antispam для защиты чатов от спама.

2.2.12. Другие возможности

Быстрая регистрация по номеру телефона либо через Gmail, возможность войти через профиль в социальной сети Одноклассники;

Ваш номер телефона в ТамТам скрыт, если он не добавлен в телефонную книгу собеседника;

Возможность скрыть свой статус в сети;

Короткие ссылки для профилей, публичные и приватные ссылки для чатов и каналов;

Удобный поиск по чатам и каналам, а также поиск внутри чата;

3. Подготовка к работе

Перед использованием ТамТам необходимо:

Установить ТамТам, либо открыть браузер и перейти по адресу веб-версии;

Войти в учетную запись.

3.1. Установка

ТамТам имеет веб-версию, которая не требует установки перед началом использования. Достаточно открыть веб-браузер и перейти по адресу:

3.1.1. Дистрибутив установки

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

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

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

3.1.2. Процесс установки

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

3.2. Вход

Для начала общения необходимо войти с использование учетной записи. Отдельная регистрация не требуется. О способах входа в учетную запись читайте далее.

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

Вход в ТамТам осуществляется при помощи одного из следующих способов:

Отправки кода на мобильный номер телефона (с последующим вводом этого кода в специальное поле ТамТам);

С использованием учетной записи в социальной сети Одноклассники;

С использованием учетной записи Google.

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

Основные элементы интерфейса:

Список чатов и каналов в левой части окна приложения;

Основной блок для просмотра содержимого чатов и каналов в правой части окна;

Кнопка для вызова Главного меню в левом верхнем углу;

Поле для полнотекстового поиска над списком чатов и каналов;

Кнопка для быстрого создания чата.

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Рисунок 1. Общий вид графического интерфейса ТамТам

4.1. Основные возможности Главного меню

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Рисунок 2. Общий вид Главного меню

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

Кнопка «Создать чат» – для открытия окна создания нового чата;

Кнопка «Создать канал» – для открытия окна создания нового канала;

Кнопка «Создать звонок» – для начала нового звонка;

Кнопка «На главную» – закрывает Главное меню и открывает в основном блоке интерфейса инструкции по добавлению контактов с мобильного телефона, а также список интересных каналов;

Кнопка «Контакты» – открывает окно поиска по списку контактов, добавленных в ТамТам с возможностью добавления новых контактов;

Кнопка «Настройки» – открывает окно настроек ТамТам;

Кнопка «Выйти» – открывает окно подтверждения выхода из ТамТам. При подтверждении выхода будет произведено безопасное завершение сессии работы с ТамТам. После этого, для дальнейшей работы с ТамТам понадобится повторно выполнить вход (авторизоваться);

В самом низу Главного меню указана версия ТамТам, установленного у вас;

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

Источник

TamTam: как мы делали новый мессенджер

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

Привет, Хабр! Меня зовут Юрий Буянов, я разработчик мессенджера TamTam. Сегодня я хочу рассказать вам немного о том, как он создавался и как устроен изнутри. TamTam — это новый мессенджер Mail.Ru Group, который был разработан на базе приложения «ОК Сообщения». В 2016 году мы сделали отдельный мессенджер в Одноклассниках для тех, кто часто переписывается в соцсети и кому удобнее это делать с помощью отдельного приложения.

Эксперимент получился удачным, поэтому в начале года мы решили развивать «ОК Сообщения» как отдельный от соцсети мессенджер под собственным брендом TamTam, но уже с набранной стартовой аудиторией. Уже за первые недели после запуска в TamTam появились десятки тысяч каналов, а аудитория продолжила общаться так же активно, как и в «ОК Сообщениях». Это стало возможным в том числе благодаря быстрой работе приложения и нескольким техническим фишкам. О них я расскажу подробнее.

Сложности, которые натолкнули на идеи

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

Стартовая аудитория TamTam — из самых разных уголков мира, в том числе с нерегулярным покрытием мобильной сети (а иногда и с полным отсутствием стационарного интернета). В некоторых странах СНГ за пределами крупных городов 2G-соединение — вообще фактически единственное окно в интернет.

Важно было и то, что далеко не все потенциальные пользователи TamTam каждый год бегут покупать новый айфон или ГОРЯЧУЮ НОВИНКУ от Samsung. По статистике, самый популярный девайс под iOS у наших пользователей — iPhone 5s, а под Android — недорогие Galaxy выпуска 2014—2015 годов. При этом у TamTam достаточно молодая аудитория: 28 % дневной аудитории — это люди в возрасте 27—34 лет, а более половины пользователей (54 %) — младше 35 лет.

Поэтому одним из приоритетных направлений в разработке мессенджера для нас с самого начала была оптимизация приложения с точки зрения как быстродействия, так и работы с сетью. Словом, требовалось незаметно для пользователей сделать так, чтобы приложение работало при любом уровне подключения. И при любом росте аудитории тоже. TamTam в первые же месяцы показывает неплохие цифры: число установок уже приближается к 3 миллионам, а число каналов уже больше 50 000.

Как мы делали приложение быстрым

Быстродействие с точки зрения пользователя — это в первую очередь скорость запуска. Время, которое проходит до отображения нового контента (например, при открытии чата с новым сообщением по push-уведомлению). Плавность работы в целом — в частности скролла. В iOS-команде мы стараемся тестировать и замерять быстродействие на iPhone 5 и iPhone 4S. Андроид-команда имеет в распоряжении Galaxy S3 и Мегафон логин за 1000 рублей. Как следствие, на более мощных девайсах приложение просто летает.

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

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

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

Как мы оптимизируем? В первую очередь выносим всё, что можно, из главного потока: работу с БД (об этом чуть ниже), работу с сетью, сериализацию и десериализацию данных, процессинг картинок и даже вычисления, связанные с вёрсткой текста.

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

При выборе сторонних решений и библиотек в узких местах мы тоже старались учитывать быстродействие и компактность. В частности, именно поэтому мы выбрали MessagePack (причём для iOS специально делали бенчмарк разных реализаций), поменяли библиотеку для маппинга данных в объекты с Mantle на YYModel и остановились на lz4 в качестве алгоритма компрессии трафика.

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

Во всех списках идёт ручная вёрстка без auto layout. Хотя auto layout мы тоже очень любим и используем декларативную вёрстку с помощью Masonry в коде — но только там, где это целесообразно.

Офлайн и работа при плохом интернете

При работе с сетью мы стараемся минимизировать трафик и задержки за счёт выбора быстрого компактного протокола и агрессивного кеширования.

В качестве способа общения с сервером мы используем только TCP-сокеты и бинарный протокол. Это позволяет нам как получать обновления с сервера в реальном времени, так и работать в более привычном режиме «запрос — ответ».

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

тамтам мессенджер что это такое. Смотреть фото тамтам мессенджер что это такое. Смотреть картинку тамтам мессенджер что это такое. Картинка про тамтам мессенджер что это такое. Фото тамтам мессенджер что это такое

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

В качестве формата для пэйлоада мы решили попробовать messagepack. Он не требует жёсткого задания схемы, очень компактный и имеет довольно шустрые библиотеки сериализации под множество платформ. По сути, это эффективный бинарный аналог JSON. Для того чтобы ещё более снизить потребление трафика, мы сжимаем пэйлоад алгоритмом lz4. Его мы также выбрали за скорость и небольшую нагрузку на CPU и батарейку.

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

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

С историей сообщений в чате всё чуть сложнее. Грузить заранее всю историю всех чатов бессмысленно, но что мы один раз получили — то мы кешируем и стараемся больше не запрашивать. Если посмотреть на то, какие участки истории чата закешированы, мы увидим, что в истории есть «разрывы». Например, с обновлением списка чатов после логина мы увидели, что последнее сообщение в чате изменилось. При этом у нас в БД есть участок (или несколько участков) истории чата, закешированный в ходе предыдущей сессии. Кроме того, мы не знаем, сколько сообщений есть на сервере между последним сообщением в чате и предыдущим закешированным сообщением, и это добавляет своих сложностей.

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

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

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

Два приёма для плавной работы приложения

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

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

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

Вторая проблема оказалась гораздо серьезнее: после вставки такой страницы в начало списка сообщений (сделанного на основе UITableView) contentOffset для уже загруженного участка сдвигается, и скролл «прыгает». Конечно, мы можем посчитать размер вставляемой страницы и изменить contentOffset обратно, но это приводит к резкой остановке анимации скролла, что некрасиво и обескураживает пользователя. Мы пытались делать это различными способами, включая такие, например, как отслеживание contentSize таблицы через KVO, но неизменно терпели неудачу: UITableView просто хронически не приспособлен к тому, чтобы элементы добавлялись в начало списка.

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

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

Вторая сложность, с которой мы столкнулись, — это анимированные и асинхронные обновления списков. Если несколько независимых обновлений происходят почти одновременно (например, подгружается страница истории вверху чата и приходит новое сообщение внизу), то данные, используемые делегатом tableView, могут измениться, даже если не закончилась анимация предыдущего обновления.

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

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

Persistence

Для кеширования данных в iOS-клиенте мы используем библиотеку YapDatabase.

YapDatabase — это Key-Value хранилище поверх SQLite с очень большим набором возможностей. Мне эта библиотека кажется гораздо более простой и гибкой, чем CoreData. Здесь можно выбрать механизм сериализации объектов в базе: по умолчанию это NSCoding, а мы используем всё тот же MessagePack.

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

А при помощи системы расширений доступны все те же возможности, что и в «настоящей» БД: произвольные SQL-запросы и индексирование нескольких полей, полнотекстовый поиск, подписка на изменения (как в NSFetchedResultsController), подключаемое шифрование, работа с CloudKit и т. д. Hello-world примеры работы с БД приводить здесь не буду, они есть в вики на github.

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

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

Вообще работа с базой очень удобно встраивается в наш реактивный стиль написания кода. Асинхронные шаблоны транзакций (чтение/запись/модификация отдельного объекта) очень просто завернуть, например, в сигналы ReactiveCocoa, и встраивать работу с базой в одну цепочку с отправкой и обработкой сетевых запросов.

Архитектура приложения

Много рассказывать про архитектуру не буду, но совсем не упомянуть о её законах жанра, как говорится, не позволяют. Докладов и статей про MVVM уже очень много (например, классический туториал в версии для Objective-C b RAC: часть 1, часть 2, или статья о реализации этого паттерна для Swift).

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

По опыту предыдущих проектов мы знали, что Dependency Injection очень упрощает структуру приложения и здорово облегчает изменения в архитектуре. В самом начале мы использовали для DI фреймворк Typhoon, но в ходе оптимизации времени запуска приложения выяснили, что разрешение зависимостей занимает непозволительно долгое время на старте приложения (единицы секунд на слабых устройствах). Поэтому мы перешли на ручной DI через property-based injection. Не сказал бы, что кода стало больше: уровень сервисов в приложении обычно настраивается в одном классе, а вся конфигурация сервисов легко читается. Для share и imessage экстеншенов, естественно, сервисы конфигурируются отдельно, поскольку в этом случае нужен гораздо меньший их набор.

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

Заключение

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *