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

В Части 1 мы создали приложения для Android и iOS (далее будем называть Сейчас) и исследовали различные функции приложения, например, обмен сообщениями, голосовые и видеозвонки, групповой чат и т. Д. мы использовали бэкэнд, который уже размещен и настроен, чтобы вы могли быстро играть с приложениями, не беспокоясь о бэкэнде. Теперь в этой части мы опишем, как разместить бэкэнд на ваших серверах / инфраструктуре и получить полный контроль над пользователями, группами и т. Д.

Предпосылки

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

  • Веб-сервер с поддержкой HTTPS и PHP. В зависимости от используемого веб-сервера (apache / h2o / Lighttpd / Nginx) настройка может быть разной. В следующих примерах мы будем предполагать, что ваше имя хоста example.com, а код серверной части, который вы скоро загрузите, доступен по URL https://example.com/api.php
  • Сервер MySQL

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

Основные используемые службы и SDK

В Части 1 мы кратко упомянули о следующих SDK и сервисах, используемых в этом проекте. Поскольку теперь вы будете размещать серверную часть в своей инфраструктуре, вам необходимо зарегистрироваться и получить ключи API для этих сервисов.

  • SDK Facebook AccountKit для проверки телефона. Account Kit прост, достаточно надежен и предлагает бесплатную проверку телефона до 100 тысяч пользователей.
  • SDK Google Maps и Google Places для интеграции геолокации.
  • SDK Mesibo для общения в реальном времени. Как и Account Kit и карты Google, Mesibo является лидером отрасли в области связи в реальном времени и предлагает мощные API для обмена сообщениями, звонков и т. Д.

Давайте начнем регистрацию в этих сервисах и получим ключи API.

Комплект учетной записи Facebook

Первый экран, который вы видите в приложениях Messenger, - это экран входа в систему. Экран входа в систему позволяет пользователям вводить свой номер телефона, а затем проверять его, отправляя одноразовый пароль по SMS или звонку.

Подтверждение номера телефона - дорогостоящий процесс, так как для подтверждения номера телефона требуется отправить SMS или позвонить, часто это международные номера. Однако благодаря Facebook Account Kit весь этот процесс автоматизирован и доступен бесплатно (ну, почти). Account Kit позволяет вам быстро зарегистрироваться и войти в приложение, используя только свой номер телефона или адрес электронной почты - пароль не требуется. Он надежен, прост в использовании и дает вам возможность выбрать способ регистрации в приложениях - с помощью телефона, электронной почты или, при желании, через свою учетную запись Facebook.

Чтобы использовать Account Kit, вам необходимо создать приложение и сгенерировать клиентский токен Account Kit. Весь процесс занимает менее 5 минут.

  1. Перейдите на страницу приложения Facebook
  2. Если у вас уже есть приложение, щелкните по нему. В противном случае нажмите, чтобы создать новое приложение, и перейдите к его настройкам.
  3. В левой части навигации вы увидите PRODUCTS. Если вы не видите Account Kit, нажмите значок + и добавьте «Account Kit».
  4. Теперь вы увидите Account Kit под PRODUCTS. Щелкните Settings в меню Account Kit.
  5. Запишите APP ID и Account Kit Client Token

Геолокация - Google Карты и Google Адреса

Приложения для обмена сообщениями позволяют вам выбрать и отправить местоположение вашим друзьям и семье. Приложения Messenger используют для этой функции Google Maps и Google Places SDK. Следовательно, вы должны добавить в проект Google Maps и Google Places API Key, чтобы он работал.

Чтобы получить инструкции по получению ключа API и его настройке, посетите

Mesibo - обмен сообщениями и звонки в реальном времени

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

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

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

Создав приложение, запишите токен приложения. Токен приложения выглядит следующим образом:

**cn9cvk6gnm15e7lrjb2k7ggggax5h90n5x7dp4sam6kwitl2hmg4cmwabet4zgdw**

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

Вот и все! Теперь приступим к настройке бэкэнда.

Загрузите исходный код Backend с GitHub

Мы загрузили исходный код backend на GitHub, чтобы вы могли быстро приступить к работе. Есть несколько способов загрузить код с GitHub.

Клонировать репозиторий (рекомендуется)

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

Для загрузки откройте терминал и выполните следующие команды в корневой папке вашего веб-сервера:

$ git clone https://github.com/mesibo/messenger-app-backend

Загрузите код в виде zip-файла

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

"Скачать"

После завершения загрузки разархивируйте в корневую папку вашего веб-сервера.

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

Настройка базы данных

Вам нужно будет настроить базу данных, чтобы серверная часть могла хранить различную информацию:

  • Телефонный номер пользователя и токены для входа
  • Группы, участники групп и администраторы групп
  • Контакты пользователей для синхронизации контактов.
  • Жетоны push-уведомлений Google и Apple

Серверная часть использует MySQL в качестве базы данных. Мы не будем вдаваться в подробности настройки сервера MySQL; Если вы не знакомы, в Интернете есть множество руководств. После настройки сервера MySQL создайте базу данных и учетные данные. Эти учетные данные потребуются внутреннему коду для доступа к базе данных.

Следующим шагом является создание схемы базы данных с использованием предоставленного файла SQL mysql-schema.sql. Выполните следующее, чтобы создать схему базы данных для серверной части.

$ mysql -h <host> -u <username> -p <password> <dbname> < mysql-schema.sql

Всплывающие уведомления

Последний набор информации, который вам нужен, - это включить push-уведомления для Android и iOS. Вам понадобится следующее:

  • Ключ Google FCM / GCM для push-уведомлений Android.
  • Сертификат Apple VoIP и кодовая фраза.

См. Документ с push-уведомлением Google FCM и Apple, чтобы получить вышеуказанные учетные данные.

Настройка Backend

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

Откройте config.php в бэкэнд-коде и введите всю информацию, которую мы получили выше, а именно:

  • Хост MySQL, имя базы данных, имя пользователя и пароль
  • Комплект учетной записи Facebook AppID и секрет
  • Ключ Google Maps
  • Ключ API Mesibo и токен приложения
  • Ключ Google GCM / FCM
  • Сертификат Apple VoIP и кодовая фраза

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

Вот и все! Теперь мы готовы протестировать серверную часть!

Тестирование серверной части

Пришло время протестировать серверную часть. Откройте https://example.com/api.php в своем браузере. Он должен выводить

{ "code": "NOOP", "result": "FAIL" }

Приведенные выше выходные данные указывают на то, что серверная часть настроена правильно. Вы можете продолжить тестирование, открыв api.php с некоторыми параметрами. Например,

https://example.com/api.php?op=login&aktoken=test&appid=com.mesibo.mesiboapplication

это должно выглядеть следующим образом

{ "op": "login", "ts": 1555861088, "error": "BADAKTOKEN", "result": "FAIL" }

Выглядит хорошо! Следующим шагом будет обновление приложения для Android и iOS, которое мы создали в Части 1, с помощью нового бэкэнда.

Настройте приложения для использования новой серверной части

Отредактируйте следующие файлы в приложениях Messenger, которые мы создали в Части 1, чтобы использовать новый бэкэнд.

Android

  • Editapp/src/main/res/values/strings.xml и введите идентификатор приложения Account Kit и токен клиента в поля FACEBOOK_APP_ID и ACCOUNT_KIT_CLIENT_TOKEN соответственно.
  • В том же файле введите ключ карты Google в поле GOOGLE_MAP_KEY.
  • Отредактируйте SampleApi.java и измените mApiUrl, чтобы отразить новый URL-адрес серверной части.

iOS

  • Нажмите Info.plist и введите свой идентификатор приложения и токен клиента в поля FacebookAppID и AccountKitClientToken соответственно. Вам также необходимо отредактировать поле CFBundleURLSchemes, чтобы оно отображало ваш идентификатор приложения Facebook после префикса fb.
  • В том же файле введите ключ карты Google в поле GoogleMapKey.
  • В том же файле введите новый URL-адрес серверной части в поле MessengerApiUrl.

Вот и все. Перекомпилируйте оба приложения и начните им пользоваться!

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

Продолжение следует!

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

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