【iOS】Дизайн платформы обмена мгновенными сообщениями для приложений (на основе стороннего SDK)
предисловие
При разработке приложений для социальных чатов функция обмена мгновенными сообщениями является незаменимой, и службы обмена мгновенными сообщениями многих компаний подключены к сторонним компаниям, и используются лишь немногие собственные разработки.Отечественные производители обмена мгновенными сообщениями также очень зрелы.Решения также основаны на сторонних сервисах. party SDK; я использовал службы обмена мгновенными сообщениями собственной разработки, Tencent, Huanxin, Rongyun и Shengwang.
Платформа APP IM должна иметь следующие преимущества или отдавать приоритет нескольким моментам:
-
1. Идеальная поддержка бизнес-сценариев;
-
2. Сильная масштабируемость (способность, пользовательский интерфейс), способная справляться с различными «трудностями» продакт-менеджеров;
-
3. Сторонний IM SDK мало связан с бизнесом приложений и может быть заменен в любое время;
-
4. Удобно хранить локализованные данные, обычно информацию о пользователях и записи чатов;
возможность обмена мгновенными сообщениями
Когда мы подключаемся к стороннему IM SDK, нам нужно сначала создать пакет на основе стороннего SDK, чтобы, если мы сменим поставщика в будущем, нам нужно было только изменить наше достижение пакета, что в основном не имеет никакого влияния. на нашем бизнес-API и пользовательском интерфейсе; Позвольте мне взять в качестве примера мой запечатанный SMTXIMManager:
QA: 2. Сильная масштабируемость (возможности, UI), способная справляться с различными «трудностями» продакт-менеджеров,
спрос: продакт-менеджеры хотят добавить в интерфейс чата спрос на заказ песен пользователями.
Анализ: пользователь A заказывает песню для пользователя B, а пользователь A выбирает песню и отправляет ее B. Пользовательское сообщение будет добавлено в списки сообщений A и B, а затем появится контроллер воспроизведения для воспроизведения песня; разработка:
1.
Во-первых, мы просто добавляем пользовательский тип сообщения в SMIMManager;
2. Подождите минутку...
QA: 3. Сторонний IM SDK мало связан с бизнесом приложений и может быть заменен в любое время;
Затем мне нужно только изменить привязку между SMIMManager и SDK.На самом деле, мне не нужно изменять другие бизнес-модули, или вы также можете интегрировать два IM SDK в приложение одновременно, так что вам нужно принять решение в СМИМменеджере.
Фреймворк пользовательского интерфейса
Как правило, есть только два контроллера, связанных с IM, один — интерфейс списка сеансов, а другой — интерфейс чата.Я также добавил сюда контакты, поскольку контакты также являются частью APPIM, как показано ниже:
Интерфейс диалогового чата (SMChatViewController)
Список сообщений (SMMessageController)
Это в основном отвечает за отображение сообщений IM.Инкапсулированный SMIMManager API отвечает за вызовы здесь, такие как получение кэшированных исторических записей чата, отображение новых сообщений, отзыв сообщений и т. д.
SMMessageController в основном использует ячейку и данные сообщения, как показано на рисунке ниже:
вышеприведенный иерархический режим, многие новички Xiaobai могут понять его с первого взгляда.
QA: 2. Сильная масштабируемость (возможности, UI), способная справляться с различными «трудностями» продакт-менеджеров,
спрос: продакт-менеджеры хотят добавить в интерфейс чата спрос на заказ песен пользователями.
Анализ: пользователь A заказывает песню для пользователя B, а пользователь A выбирает песню и отправляет ее B. Пользовательское сообщение будет добавлено в списки сообщений A и B, а затем появится контроллер воспроизведения для воспроизведения песня; разработка:
1.
Во-первых, мы добавляем пользовательский тип сообщения в SMIMManager;
2. Добавляем пользовательский SMMusicMessageCell и SMMusicMessageCellData, а затем регистрируем и анализируем его в списке;
3. После нажатия на сообщение SMMusicMessageCell он вызовет пакет Плеер песен играет.
SMInputController (поле ввода)
Поле ввода объединяет ввод текста, языковой ввод, пакеты смайликов, изображения, видео, подарки и т. д. следующим образом:
Соответствующая структурная схема выглядит следующим образом:
SMShowVipGiftView (подарок, заказ песни, членство и т. д. платные услуги)
Это инкапсулированный всплывающий слой, который вызывается на подарочной кнопке SMInputBar, и сказать тут нечего.
Список друзей (SMContactsListViewController)
Об этом нечего сказать, SMUserRelationship уже инкапсулировал соответствующий API.
Список бесед (SMConversationListViewController)
Есть системные сообщения, агрегация сообщений, удаление сеанса, пометка сеанса как непрочитанного, SMIMManager и SMUserRelationship также инкапсулировали соответствующие API.
QA: 1. Он отлично поддерживает бизнес-сценарии,
может ли приведенный выше дизайн идеально подойти для вашего бизнеса?
хранилище
Нижний уровень локального хранилища данных, используемый в проекте, использует sqlite и сторонний фреймворк с открытым исходным кодом FMDB GitHub.Также в Интернете есть много вторичных пакетов на основе FMDB, которые также очень хороши.IM в основном предназначен для хранения информации о пользователе и данных чата. Если вы хотите рассмотреть Когда дело доходит до безопасности, вы можете выбрать шифрование базы данных. Я не буду говорить здесь о шифровании. Когда-нибудь у меня будет время поговорить о безопасности мобильных терминалов.
QA: 4. Локализованное хранение данных удобно, в основном информация о пользователях и записи чатов,
здесь я думаю удобство в простоте использования упаковки, безопасности доступа и локальной безопасности данных.
другой
При отправке сообщений, таких как изображения или видео, мы обычно загружаем их в облачное хранилище (Qiniu, OSS и т. д.), а затем помещаем ссылку на облачное хранилище в пользовательский формат сообщения и отправляем ее другой стороне.
При именовании файла ресурсов лучше всего добавить такую информацию, как ширина, высота и формат изображения или видео, поэтому, когда мы получим ссылку, даже если сеть не очень хорошая, мы можем сначала установить контейнер, который способствует отображению пользовательского интерфейса страницы.