Технология Push является одним из самых быстрых способ доставки уведомлений пользователям вашего приложения. Для их получения пользователю не нужно выполнять какие-то действия, они инициируются на стороне сервера и появляются прямо в строке уведомлений на экране мобильного устройства. В данном уроке мы разберемся с тем, как реализовать отправку push-уведомлений в приложениях созданных на платформе AppMaster.
Блок Send Push
Для отправки push-уведомлений используются блоки Send Push, соответствующие операционной системе целевого устройства (iOS или Android).
Получение Push Token и Bundle ID
Для выполнения отправки необходимо указать, как минимум, два параметра: Push Token и IOS (Android) Bundle ID. Поэтому стоит начать с подготовительной части и разобраться, как данные параметры получить.
По умолчанию база данных каждого проекта содержит модель Mobile Instance, которая связана с моделью User и содержит необходимые поля: push_token и bundle_id.
Создадим отдельный бизнес процесс для мобильного приложения, который и будет формировать заполненную модель Mobile Instance. Для получения токена push воспользуемся блоком Get Push Token.
Следующий шаг - получение информации об устройстве. И тут, в зависимости от операционной системы, потребуются различные блоки. Поэтому для определения операционной системы необходимо воспользоваться блоком Platform Switch.
В зависимости от результата используется соответствующий блок IOS Device Info или Android Device Info. Оттуда можно получить разнообразную информацию об устройстве, но в нашем примере достаточно узнать только Bundle ID.
Собрав все данные можно сформировать модель Mobile Instance, указать к какой операционная системе она относится и передать ее в качестве выходного параметра бизнес-процесса.
Запись информации о мобильном устройстве пользователя
Следующий шаг - создание бизнес-процесса бэкенда для связи сформированного Mobile Instance с конкретным пользователем и записи в базу. В данном бизнес-процессе необходимо:
- Узнать текущего пользователя с помощью блока Auth: Get current user.
- Развернуть содержимое полученной модели Mobile Instance
- Собрать модель заново и добавить в нее связь с пользователем с помощью блока Make Mobile Instance.
- Воспользоваться блоком DB: Create Mobile Instance и сохранить данные в базе.
В эндпойнте POST /Mobile Instance/ можно заменить стандартный бизнес-процесс на тот, который был только что создан.
Завершающий этап подготовки - определиться с тем, когда именно стоит записывать в базу данных информацию об устройстве пользователя. Логичным решением будет делать это при выполнении авторизации в приложении. Для этого, в процесс авторизации пользователя в мобильном приложении сразу после блока Set Auth Token нужно добавить два новых блока с ранее созданными бизнес-процессами. Первый получает и формирует необходимую информацию, второй создает связь с пользователем и выполняет запись в базу данных.
Отправка push-уведомлений
Подготовительная часть завершена и можно приступать к отправке push-уведомлений. Для этого создадим бизнес процесс бэкенда. Представим, что нашей задачей будет разослать уведомление всем пользователям нашего приложения. Мы будем отправлять их только на устройства с операционной системой Android, при этом не на все устройства пользователя, а только на то, которое использовалось последним.
Начнем со входящих параметров. Необходимо передать сам текст уведомления. Он состоит из трех частей: тела сообщения (body), его заголовка (title) и подзаголовка (subtitle).
Далее необходимо найти всех пользователей приложения. Для этого воспользуемся блоком Search User и зададим необходимые параметры:
- _With = Mobile Instances (нужно получить не только информацию о пользователе, но и о связанном с ним мобильном устройстве)
- Limit = -1 (по умолчанию запрос отдает 25 записей, “-1” указывается чтобы снять это ограничение и получить всех пользователей)
- _mobile_instances_os = Android (по условиям задачи нас интересуют только устройства Android)
Для сформированного массива пользователей нужно запустить цикл операций (блок For each loop)
Для каждого пользователя из блока Expand User нужно получить информацию о мобильных устройствах (Mobile Instances). Нам необходимо отправить уведомление только на одно устройство, поэтому установим index = 0 в блоке Array Element, а также проверим, содержит ли массив вообще хоть один элемент (ведь у пользователя может быть только устройство на iOS). Для этого проверим элемент на валидность, передадим значение valid index в блок If-Else и продолжим цикл только в случае значения true.
Если все правильно и информация об устройстве пользователя найдена, то нужно воспользоваться блоком Expand Mobile Instance и передать необходимые значения в блок Send Push (Android).
Обратите внимание на то, что при разработке и тестировании приложения в Developer App необходимо установить значение Developer Mode = True.
Также можно воспользоваться опцией TTL (Time to live). Она определяет время в секундах для отправки уведомления. В случае если уведомление не удается доставить сразу, например, если пользователь временно вне зоны доступа, то в отведенное время будут совершаться повторные попытки доставки.
По окончанию цикла и отправки уведомлений всем возможным пользователям, работа бизнес процесса также завершается.
Дополнительные параметры
Отдельно стоит обговорить дополнительные параметры блока отправки:
- Push ID
- Push Class
- Data
Они никак не влияют на сам факт отправки уведомления, или его содержание, но могут использоваться при обработке уведомления на стороне пользователя. В мобильном приложении есть специальные триггеры, которые запускаются при получении или нажатии на полученное push-уведомление.
Триггеры push-уведомлений содержат данные из указанных выше дополнительных текстовых параметров. В качестве примера можно привести простейший процесс, который при нажатии на триггер отобразит на экране дальнейшее уведомление с информацией переданной в параметре Data.
Другой популярный вариант использования триггеров - сбор информации о факте доставки уведомлений. Например, они могут отправлять сообщение на сервер о том, что push-уведомление действительно было доставлено, а также собирать статистику и подсчитывать количество нажатий на уведомления.