Что из себя представляет мессенджер тамтам и чем отличается от телеграм: основные достоинства и недостатки
Каналы и чаты: возможности и ограничения
Регистрация каналов. Схема создания каналов в обоих мессенджерах одинакова и проста: пишете имя будущего канала, выбираете, будет ли он приватным или публичным, и создаете его. В обоих мессенджерах есть возможность добавить участников из книги контактов и отключить уведомления, но чёрный список участников есть только в Телеграме.
Управление каналом. В обоих мессенджерах можно добавить администратора и выбрать для него права. В Телеграме администратору можно дать права, чтобы изменять описание канала, отправлять, редактировать или удалять сообщения, добавлять пользователей и других администраторов. В ТамТаме к этим функциям добавляется возможность менять фото, название и описание. Функции администратора выделены в отдельную роль суперадминистратора, который может менять права, добавлять и удалять других администраторов.
Поиск каналов. В ТамТаме есть поиск по каналам: в веб-версии и на десктопе мессенджер предлагает подборку популярных каналов, а в мобильном приложении нужно воспользоваться поиском. В Телеграме такого нет.
Количество участников в каналах и чатах. Ограничений на количество участников в каналах нет в обоих мессенджерах. Но они есть в чатах: в Телеграме — 10 000 человек, а в ТамТаме — 20 000. Максимальная длина постов в ТамТаме — 4 000 символов, в Телеграме — 4 096 символов, потом текст разбивается на несколько сообщений. Даже домены для сокращённых ссылок у обоих сервисов похожи: tt.me у Там Там и t.me у Телеграм.
Форматирование сообщений. На первый взгляд разница между мессенджерами невелика, но как насчёт возможностей для удобной работы авторов: отложенного постинга, форматирования текста, возможности размещать статьи и писать хэштеги? Увы, пока что этих возможностей в ТамТаме нет. В блоге мессенджера создатели пишут, что работают над хэштегами и разметкой. Но авторы каналов видят и другие проблемы.
Сложности, которые натолкнули на идеи
Начнём со сложностей: именно они принесли нам идеи, которые потом реализовались в продукте и в итоге превратились в преимущества приложения. Речь прежде всего о быстрой и стабильной работе мессенджера.
Стартовая аудитория TamTam — из самых разных уголков мира, в том числе с нерегулярным покрытием мобильной сети (а иногда и с полным отсутствием стационарного интернета). В некоторых странах СНГ за пределами крупных городов 2G-соединение — вообще фактически единственное окно в интернет.
Важно было и то, что далеко не все потенциальные пользователи TamTam каждый год бегут покупать новый айфон или ГОРЯЧУЮ НОВИНКУ от Samsung. По статистике, самый популярный девайс под iOS у наших пользователей — iPhone 5s, а под Android — недорогие Galaxy выпуска 2014—2015 годов
При этом у TamTam достаточно молодая аудитория: 28 % дневной аудитории — это люди в возрасте 27—34 лет, а более половины пользователей (54 %) — младше 35 лет.
Поэтому одним из приоритетных направлений в разработке мессенджера для нас с самого начала была оптимизация приложения с точки зрения как быстродействия, так и работы с сетью. Словом, требовалось незаметно для пользователей сделать так, чтобы приложение работало при любом уровне подключения. И при любом росте аудитории тоже. TamTam в первые же месяцы показывает неплохие цифры: число установок уже приближается к 3 миллионам, а число каналов уже больше 50 000.
Сходства и различия с Telegram
Если говорить об интерфейсе, то в этом плане ТамТам во многом напоминает Телеграм, да и его функционал является если не прямой, то очень близкой копией проекта Павла Дурова.
К примеру, здесь также есть каналы, вот только ведутся они, исходя из количества подписчиков и регулярности постов, не слишком систематично.
Правда, здесь есть и преимущество, которое отличает мессенджер от Telegram – вы можете искать нужные каналы прямо по названию в самом приложении, что может быть очень удобно.
Интересно, что после регистрации в приложении вы автоматически станете подписчиком на новости ТамТама, и он будет регулярно пушить вам контент, схожий с тем, что вы часто встречаете в Одноклассниках в уведомлениях.
Стикеры в приложении тоже на месте, но и они имеют существенные различия с теми, что присутствуют в Телеграме.
По своей сути это просто gif-картинки, которые анимируются при отправке или нажатии на них. Поиск стикеров вы сможете проводить по ключевым словам, а вот самых популярных картинок из «Телеги» вы здесь не найдёте.
При этом в приложении много коротеньких вырезок из самых разных сериалов и фильмов, так что необходимый вам по смыслу вариант вы всё же обнаружите.
Примечательно, что в ТамТам разработчики встроили не только аудиозвонки, но и видеочат, что, в общем, тоже даёт Телеграму фору. И работает это на вполне приемлемом уровне, да и качество нормальное – интерфейс во многом напоминает известный нам WhatsApp.
Ещё один момент, касающийся шифрования. Признаюсь, мне так и не удалось окончательно докопаться до способа шифрования сообщений, поэтому здесь всё довольно-таки туманно. Неизвестно даже, шифруются ли они вообще.
Правда, на Хабрахабре можно найти пост одного из разработчиков ТамТама, где он рассказывает о том, что создатели старались сфокусироваться именно на оптимизации скорости работы даже в условиях плохой связи, но вот про шифрование там тоже ничего не говорится.
Скачивание мессенджера из App Store
Чтобы использовать новое приложение на «яблочном» девайсе необходимо знать, как подключить тамтам на телефон iOS. Этот процесс выполняется легко всего лишь за несколько кликов. При этом функционал программы для платформы iOS такой же, как и для Android.
Для установки мессенджера необходимо посетить App Store. В этом официальном магазине утилита доступна для пользователей бесплатно.
После запуска соответствующего приложения на устройстве нужно воспользоваться поисковой строкой, где вписывается название софта. На следующем этапе пользователю придется выбрать из списка нужный мессенджер. Это позволит открыть персональную страницу утилиты, где можно узнать всю важную информацию о текущей версии приложения и познакомиться с отзывами людей. Далее, владельцу девайса нужно нажать кнопку «Загрузить».
Все выполненные действия позволят использовать ТамТам, например, на iPhone для безграничного общения с разными абонентами, которые могут находиться в любом уголке мира. Таким же образом осуществляется загрузка мессенджера из Google Play. После установки программы на любой современный телефон пользователь обязательно оценит ее новые функции.
Выберите нужную операционную систему, чтобы перейти на более подробную информацию по скачиванию и установке TamTam Messenger:
Что такое ТамТам
Mail.ru позиционирует мессенджер как замену популярному Телеграму. Оба поддерживаются на всех платформах: iOS, Android, Windows и Linux, есть веб-версия. Визуально интерфейсы мессенджеров тоже похожи, смотрите:
Регистрация. Чтобы зарегистрироваться в Телеграме, нужно ввести номер телефона и ввести код, полученный в смс. В ТамТаме возможностей больше: можно зарегистрироваться по номеру телефона, войти в мессенджер через аккаунт в Одноклассниках или через Google.
Звонки. Аудиозвонки есть в обоих мессенджерах, а вот видеозвонок есть только в Там Таме — в этом его преимущество. Звонить можно во всех версиях: веб, мобайл или десктоп.
Пересылка файлов. В Телеграме можно отправлять собеседнику любые файлы: документы, фото, аудиосообщения и видео в фирменных «кругляшах». ТамТам умеет из этого не все: пользователи могут отправлять аудиосообщения, пересылать файлы из галереи и документы, но функции «снять и отправить видео» у него нет.
Стикеры. У ТамТама есть своя собственная фишка — живые стикеры, которые представляют собой GIF-картинки из фильмов и сериалов или просто котиков и собачек. Зато у Телеграма другой козырь — возможность добавить свой пакет стикеров.
Избранное. Если в Телеграме хочется сохранить полезный пост, можно отправить его в «Избранное». В ТамТам такой возможности нет, но можно создать себе личный канал и отправлять нужную информацию туда.
Настройки профиля
Через соответствующий раздел можно адаптировать аккаунт под себя: менять личные данные, настраивать уведомления, выбирать параметры отправки и сохранения медиафайлов. Набор настроек стандартен для мессенджеров.
Через настройки профиля устанавливают аватар.
Через настройки профиля делают следующее:
- Устанавливают аватар, делая селфи или выбирая изображение из «Галереи». Дополнительно вводят описание.
- Указывают ссылку на страницу. Запоминающийся адрес особенно полезен для бизнес-профилей.
- Активируют функцию автоудаления. Если пользователь не открывает приложение, через заданный период профиль исчезает.
Что такое ТамТам
Проект ТамТам запущен в 2016 году как производный сервис социальной сети Одноклассники. Последний, как известно, принадлежит Mail.ru Group.
Интерфейс, в целом похож на интерфейс Телеграмм. Функционал, по сути, почти такой же. Хорошо скопировали…
Но есть и ряд преимуществ. Например, возможность совершать видеозвонки в формате HD. Причем при нестабильном интернет соединении, происходит автоматическое переключение в режим аудио вызова.
Для общения также создаются тематические каналы, в которых администраторы самостоятельно выбирают уровень приватности, публичности и т.д. На полною анонимность тут, конечно, рассчитывать не приходится, но в целом, к чему нам это? )
Имеется и декстопная версия, со встроенной возможностью просмотра роликов Ютуба и чатом для общения. Работает как на Windows, так и на Linux.
Функционал приложения
Главной особенностью мессенджера стали его приватные и публичные чаты, которые одновременно объединяют до 20 000 человек. Создатели бесед могут назначать до 50 кураторов, которые будут следить за порядком внутри группы и при необходимости отправлять буйных участников в чёрный список.
ТамТам — видеозвонки, чаты и каналы на Андроид
Любители пообщаться в массовых чатах по достоинству оценят функции пересылки сообщений и цитирование. Если беседа происходит между несколькими людьми, поддерживается система оповещений о прочтении сообщений. Добавить больше эмоций в любую переписку позволяют стикеры. Их дополняют каждый день, и они отличаются заданной тематикой:
- котики;
- сказочные персонажи;
- времена года;
- оригинальные наклейки, посвященные социальной сети Одноклассники.
Бывают они в виде классических наклеек и анимированных образов. Последние выглядят ещё интереснее и могут привлечь к себе больше внимания. Также не стоит переживать за защиту личных данных переписки. Все СМС шифруются при помощи протокола TLS, а вся полученная информация распределяется между сетью из нескольких десятков серверов. Доступ к переписке будет доступен только вам и сохранится в кэше мобильного устройства, для просмотра сообщений и вложенных файлов в режиме офлайн.
Если вы устали вести обмен сообщениями, вам всегда доступны голосовые и видео звонки в высоком качестве. Чтобы ими воспользоваться, достаточно подключиться к интернету через 3G, 4G или Wi-Fi. Прямой альтернативой звонкам служат голосовые сообщения, достаточно зажать отведенную для этого клавишу и изложить свои мысли.
Для тех, кто не в состоянии представить свою жизнь без новой информации, представлены публичный и приватные каналы. Они делятся на различные тематики и предлагают подписчикам свежие новости с уведомлениями о появлении новых публикаций. Создать канал может каждый пользователь приложения ТамТам и необязательно использовать его в качестве информационного паблика, он вполне сойдёт за отдельный чат для заметок, достаточно установить к нему закрытый доступ.
Приятным дополнением выступает кроссплатформенная основа сервиса, он доступен на всех самых популярных платформах:
- Android;
- iOS;
- Windows;
- Mac;
- Linux.
Если вы не желаете засорять память на ПК или хотите выйти в сеть с чужого устройства, то имеется веб-версия, доступная через любой браузер. Переход с одной версии на другую происходит молниеносно. Вместе с ним сохраняется история сообщений, отправленных файлов и GIF-анимаций.
Для регистрации на платформе необязательно быть участником социальной сети Одноклассники, достаточно указать номер мобильного или воспользоваться электронной почтой Gmail. Интерфейс программы поделен на начатые чаты, каналы и вспомогательные настройки. К слову, каждый профиль или канал имеет короткую ссылку, по которой его можно найти в глобальном поиске.
Архитектура приложения
Много рассказывать про архитектуру не буду, но совсем не упомянуть о её законах жанра, как говорится, не позволяют. Докладов и статей про MVVM уже очень много (например, классический туториал в версии для Objective-C b RAC: часть 1, часть 2, или статья о реализации этого паттерна для Swift).
Под слоем ViewModels есть набор сервисов, который реализует (и по возможности инкапсулирует) бизнес-логику, логику работы с протоколом и кеширование. Навигация в приложении осуществляется с помощью так называемого роутера, т. е. объекта, инкапсулирующего код, необходимый для открытия того или иного экрана. На самом деле роутеров в процессе стало несколько, поскольку у роутера есть тенденция становиться эдаким очень жирным God Object. Поэтому там, где это возможно, мы стараемся его декомпозировать. Например, за весь процесс регистрации/аутентификации пользователя отвечает отдельный роутер.
По опыту предыдущих проектов мы знали, что Dependency Injection очень упрощает структуру приложения и здорово облегчает изменения в архитектуре. В самом начале мы использовали для DI фреймворк Typhoon, но в ходе оптимизации времени запуска приложения выяснили, что разрешение зависимостей занимает непозволительно долгое время на старте приложения (единицы секунд на слабых устройствах). Поэтому мы перешли на ручной DI через property-based injection. Не сказал бы, что кода стало больше: уровень сервисов в приложении обычно настраивается в одном классе, а вся конфигурация сервисов легко читается. Для share и imessage экстеншенов, естественно, сервисы конфигурируются отдельно, поскольку в этом случае нужен гораздо меньший их набор.
Таким образом, связанность кода была изначально не очень большой, и даже через довольно продолжительное время после начала разработки мы без особого труда смогли вынести часть сервисов и обслуживающего кода в отдельную библиотеку (точнее, даже набор библиотек), которая реализует бо́льшую часть внутренней логики мессенджера, включая работу с протоколом и кеширование, и которую можно встраивать в другие приложения.
Два приёма для плавной работы приложения
Немного расскажу о паре приёмов, которые мы использовали для обхода ограничений системы, мешающих нам сделать дружелюбный и плавный интерфейс. На примере iOS-приложения.
Одной из сложностей при разработке стал бесконечный скролл в чате, т. е. незаметная для пользователя подгрузка истории сообщений при прокрутке чата вверх. В 99 % случаев пользователь находится именно внизу чата и хочет проскроллить его вверх для того, чтобы прочитать старые сообщения. Здесь мы столкнулись с двумя проблемами.
Во-первых, постоянное натыкание на верхнюю границу списка сообщений и ожидание подгрузки каждые несколько экранов раздражает. Эту проблему было не очень сложно решить: мы не дожидаемся, пока пользователь доскроллит до самого верха и увидит там «крутилку», а стараемся заранее запрашивать предыдущие страницы истории еще во время скролла: как из локального кеша, так и с сервера. При наличии сообщений в кеше или на быстром соединении пользователь просто не успеет доскроллить до самого верха к тому моменту, как мы сможем отобразить новую пачку сообщений.
Вторая проблема оказалась гораздо серьезнее: после вставки такой страницы в начало списка сообщений (сделанного на основе UITableView) contentOffset для уже загруженного участка сдвигается, и скролл «прыгает». Конечно, мы можем посчитать размер вставляемой страницы и изменить contentOffset обратно, но это приводит к резкой остановке анимации скролла, что некрасиво и обескураживает пользователя. Мы пытались делать это различными способами, включая такие, например, как отслеживание contentSize таблицы через KVO, но неизменно терпели неудачу: UITableView просто хронически не приспособлен к тому, чтобы элементы добавлялись в начало списка.
В итоге после ряда попыток мы смогли решить эту проблему, применив своего рода «хак»: переворачиваем список вверх ногами с помощью .transform, а затем переворачиваем каждую ячейку в обратном направлении. Пользователь ничего не замечает, но теперь contentOffset отсчитывается снизу, и подгрузка старых сообщений никак на него не влияет.
У этого решения есть ряд подводных камней, но их мы тоже сумели обойти, и нам они не мешают. Во-первых, необходимо конвертировать перевёрнутые индексы ячеек в индексы в вашей модели данных, и обратно. Если у вас больше одной секции, вычисления будут очень сложными, так что лучше ограничиться одной. Конечно, это не даёт нам использовать плавающие заголовки секций, которые на экране чата пригодились бы, например, для отображения разделителей по дням в истории. Но плавающие разделители в итоге оказалось не так сложно сделать вручную.
Во-вторых, в редких случаях могут возникнуть сложности с вычислением координат внутри ячеек, например при работе с жестами, но все они тоже решаемы. В-третьих, при подгрузке данных вниз проблема возвращается, но подгрузка при скролле вниз происходит очень редко, так что для нас это не очень большая сложность. В этом случае мы не делаем предварительную подгрузку при скролле, а дожидаемся, пока пользователь доскроллит до самого низа таблицы, затем показываем индикатор загрузки, обновляем таблицу и меняем contentOffset.
Вторая сложность, с которой мы столкнулись, — это анимированные и асинхронные обновления списков. Если несколько независимых обновлений происходят почти одновременно (например, подгружается страница истории вверху чата и приходит новое сообщение внизу), то данные, используемые делегатом tableView, могут измениться, даже если не закончилась анимация предыдущего обновления.
Это может привести к тому, что UITableView отрендерит неправильную ячейку или вообще упадёт: это ещё более вероятно, если вы используете предыдущий хак. Можно, конечно, обратиться к методу reloadData, синхронному в UITableView, однако это приводит к морганиям, остановке скролла и прочим раздражающим пользователя вещам.
Специально для таких случаев мы сделали отдельную очередь для последовательной обработки таких обновлений. Все изменения модели и отображение их на UI производятся внутри блоков, которые ставятся в очередь. При этом блок может залочить очередь при старте анимации или какой-то другой асинхронной операции и разлочить её при завершении. Таким образом, вся работа с таблицей идёт последовательно, а данные не меняются, пока не завершится предыдущая анимация.
Как пользоваться?
По отзывам мессенджер Там Там напоминает Телеграм – только адаптированный исключительно под русскоязычного пользователя. Некоторое время назад он «пришел на смену» заблокированному на территории страны Телеграму.
Давайте разберемся с доступными возможностями? Открываем программу и приступаем. На главном экране четыре иконки меню:
- Сообщения. Здесь отображаются текущие чаты, можно начать новый диалог;
- Звонки. Открывается журнал вызовов, можно сделать звонок;
- Контакты. Видна телефонная книга, можно искать новых друзей;
- Настройки. Выставляем параметры, персонализируем профиль.
Давайте попробуем начать чат в русском мессенджере ТамТам?
- Откройте раздел «Сообщения» и кликните на карандашик наверху;
- Выберите человека из списка контактов;
- Внизу можно вводить текст сообщения;
-
Кликните на смайлик, чтобы получить доступ к эмодзи и стикерпакам;
- Жмите на скрепку, чтобы добавить фото или видео, локацию или файл или сделать рисунок;
- Нажмите на микрофон, чтобы записать голосовое сообщение;
- Кликните по названию чата на верхней панели, чтобы просмотреть инфо о диалоге, запустить поиск по истории и просмотреть медиафайлы.
Подробности
Что же может предложить данное приложение для общения? Разработчики выделяют следующие преимущества:
- Широкая аудитория. Согласно официальным данным, число пользователей мессенджера превышает отметку в 250 миллионов человек.
- Все функции предоставляются без какой-либо платы, реклама тоже отсутствует. Это относится и к сообщениям, и даже к звонкам.
- Видеосвязь. Расстояние — не преграда для общения. Во время звонка можно использовать камеру устройства, чтобы видеть своего собеседника.
- Простота. Чтобы начать работать в TamTam Messenger, достаточно ввести свой мобильный номер или авторизоваться через ОК или почту Google. Никакой нудной регистрации не требуется.
- Мультиплатформенность. Разработчики выпустили приложение и для мобильных устройств, и для ПК, имеется даже веб-версия, которая не требует установки. Подробнее об этом изложено в разделе «Загрузка».
- Работа без интернета. Когда телефон не подключен к сотовой сети или Wi-Fi, все равно можно просматривать старые переписки или открывать загруженные медиа-файлы.
- Чаты. Доступны как публичные, так и приватные чаты.
- Каналы. Так называются группы по интересам, куда может вступить любой желающий.
- Стикеры. Анимированные «наклейки» удачно впишутся в любую дружескую беседу.
Особенности Tam Tam
Российский мессенджер создан на базе «ОК Сообщения» — это приложение популярной социальной сети «», которое было разработано за год до выхода нового софта от Mail.Ru Group
Данная утилита сразу же привлекла внимание большого количества пользователей. Тем более она была разработана с целью замены «ОК Сообщения», которое очень востребовано среди участников знаменитой соцсети
Их число составляет примерно 290 млн человек. Именно такое количество пользователей уже сразу перешло в приложение TamTam.
Новая программа для мобильных платформ позволяет людям общаться практически без ограничений, используя для этого следующие возможности софта:
- Отправка личных сообщений.
- Беседы в групповых чатах.
- Обмен стикерами.
- Отправка и получение gif-анимации.
- Обмен фотографиями.
- Передача друг другу небольших видеороликов.
- Отправка музыкальных файлов.
При этом пользователи смогут выполнять все вышеперечисленные действия, даже если устройство будет иметь не очень хорошее интернет-подключение. Кроме того, тамтам мессенджер позволяет отправлять сообщения другим абонентам при нахождении в оффлайн-режиме. Их доставка собеседнику осуществится в автоматическом режиме, когда девайс попадает в зону действия, например, Wi-Fi.
Еще одной особенностью нового мессенджера является наличие публичных каналов. Данная функция схожа с опцией Telegram. У каждого созданного канала, может быть, неограниченное количество подписчиков. При этом их вести могут не только пользователи, но и блогеры, средства массовой информации и бренды.
Представители Mail.Ru объяснили создание нового приложения тем, что у них возникло желание предоставить возможность людям использовать усовершенствованный продукт, разработанный на базе старой программы. При этом у корпорации появился шанс как сэкономить средства, так и сразу же получить приличное количество «живых» пользователей.
В связи с тем, что Там там мессенджер еще молодой софт. Поэтому его будущее на 100% неизвестно. Однако данная программа имеет хорошие перспективы. Если надежды на нее оправдаются, тогда существует большая вероятность, что уменьшится популярность такого известного мессенджера, как Viber. Данное мнение высказали некоторые эксперты в этой области. Они основывались на том, что Viber использует много пользователей, которые являются участниками социальной сети «ОК». Эксперты считают реальной возникновение ситуации, когда из Вибера может перейти в TamTam примерно 15% пользователей.
Edit chat info
patch /chats/{chatId}
https://botapi.tamtam.chat/chats/{chatId}
Edits chat info: title, icon, etc…
Request Body schema: application/json
iconoptional |
object Nullable Request to attach image. All fields are mutually exclusive |
|||||||||||
|
||||||||||||
titleoptional |
string characters Nullable |
|||||||||||
pinoptional |
string Nullable Identifier of message to be pinned in chat. In case you want to remove pin, use method |
|||||||||||
notifyoptional |
boolean Nullable Default: true By default, participants will be notified about change with system message in chat/channel |
Роль в оркестре
В большом оркестре роль большого гонга заключается в создании гнетущей атмосферы и усилении ритма. А в опере, его часто используют для отображения твердого характера сильной личности.
Малые гонги широко используются для музыкального сопровождения номеров и арий Пекинской оперы, для исполнения музыкальных драм в стиле пинцзюй, в Хэбэйской местной опере, хунаньской опере хуагуси, а также на эстраде для исполнения китайских народных танцев и песен.
В классической музыке гонг применяется с начала XIX века — одним из первых композиторов, использовавших его в своих произведениях, был Джакомо Мейербер. Удар гонга знаменует собой смерть, катастрофу, присутствие волшебных сил, проклятие, предзнаменование и другие «из ряда вон выходящие события». В «Руслане и Людмиле» Глинки гонг звучит в момент похищения Людмилы Черномором, в «Шехеразаде» Римского-Корсакова — в миг, когда корабль Синдбада разбивается о скалы. Звуки гонга можно услышать в финале Шестой симфонии Чайковского, третьей части поэмы «Колокола» С. Рахманинова («Набатный звон»), трагической кульминации первой части Седьмой симфонии Шостаковича и других сочинениях.
Как мы делали приложение быстрым
Быстродействие с точки зрения пользователя — это в первую очередь скорость запуска. Время, которое проходит до отображения нового контента (например, при открытии чата с новым сообщением по push-уведомлению). Плавность работы в целом — в частности скролла. В iOS-команде мы стараемся тестировать и замерять быстродействие на iPhone 5 и iPhone 4S. Андроид-команда имеет в распоряжении Galaxy S3 и Мегафон логин за 1000 рублей. Как следствие, на более мощных девайсах приложение просто летает.
В каждой тестовой сборке можно включить счётчик кадров в секунду, а в логи и в систему статистики записывается длительность выполнения операций в узких местах.
Например, на этом графике показано время с момента запуска приложения при открытии по пушу до момента, когда пользователь увидит это конкретное сообщение на экране. Два падения на графике соответствуют включению контент-пушей на половину и на всех пользователей.
Несмотря на обилие инструментов и метрик, главным инструментом оценки быстродействия приложения остаются субъективные ощущения. Никто не может точно ответить, какая задержка в миллисекундах допустима при открытии экрана сообщения, но практически каждый может сказать, есть ли у него ощущение того, что приложение «тупит».
Как мы оптимизируем? В первую очередь выносим всё, что можно, из главного потока: работу с БД (об этом чуть ниже), работу с сетью, сериализацию и десериализацию данных, процессинг картинок и даже вычисления, связанные с вёрсткой текста.
Когда мы запускаем приложение или открываем экран чата, выполнение тяжелых операций в фоне не спасёт от видимой задержки. Так что одни операции вроде вёрстки бабблов всё равно нужно оптимизировать по времени, а другие лучше делать сразу при получении сообщения и кешировать результат их выполнения в базе.
При выборе сторонних решений и библиотек в узких местах мы тоже старались учитывать быстродействие и компактность. В частности, именно поэтому мы выбрали MessagePack (причём для iOS специально делали бенчмарк разных реализаций), поменяли библиотеку для маппинга данных в объекты с Mantle на YYModel и остановились на lz4 в качестве алгоритма компрессии трафика.
Кроме того, для достижения плавности работы интерфейса мы симптоматически оптимизируем рендеринг:
- избегаем offscreen-рендеринга, нагружающего процессор;
- заранее в фоне ресайзим картинки вместо использования работающих в главном потоке стандартных UIViewContentMode;
- делаем наши иерархии UI более «плоскими» и простыми;
- кешируем те объекты и данные, создание которых слишком затратно. Начиная с высоты ячеек с текстом и заканчивая YYTextLayout (объект, который хранит информацию об отображении текста в библиотеке YYText), NSAttributedStrings и даже самими UIViews.
Во всех списках идёт ручная вёрстка без auto layout. Хотя auto layout мы тоже очень любим и используем декларативную вёрстку с помощью Masonry в коде — но только там, где это целесообразно.