Центр уведомлений
Центр уведомлений (ЦУ) позволяет пользователям мобильного приложения просматривать отправленные им ранее мобильные пуши.
Для реализации ЦУ приложение должно быть интегрировано с SDK Mindbox
В результате этой интеграции вы сможете:
- настроить сохранение и отображение пушей Mindbox в ЦУ;
- передавать данные об открытии ЦУ и пушей в нем в Mindbox для дальнейшей аналитики.
Вывод промокодов
Если основная задача — вывод промокодов, ее можно решить запросом на доступные для клиента промоакции. Это позволит выводить актуальные на данный момент промокоды без привязки к ранее полученным коммуникациям. В таком случае сохранение пушей в ЦУ не понадобится.
1. Получить тело пуша из SDK
Этот шаг нужен для того, чтобы извлечь и обработать данные пушей, которые будут отображаться в ЦУ.
Получить тело пуша в iOS
Чтобы пуши сохранялись в центр уведомлений и в активном, и в фоновом состоянии приложения, добавьте соответствующие методы из разделов ниже (в зависимости от версии SDK) в расширения NotificationServiceExtension и NotificationContentExtension.
Пример JSON структуры пуш-уведомления с кнопкой и картинкой
JSON структура push-уведомления
Версия SDK 2.11.0 и выше
В версии SDK 2.11.0 сделали доступными методы isMindboxPush и getMindboxPushData в таргетах Mindbox и MindboxNotifications. Методы можно использовать в Notification Service Extension или Notification Content Extension:
isMindboxPush— возвращаетtrue, если сообщение получено от Mindbox, иfalse, если нет.getMindboxPushData— возвращает модельMBPushNotification, в которой содержатся данные полученного пуша:
Структура push-уведомления
Описание параметров:
- uniqueKey - уникальный идентификатор пуш-уведомления. Помогает определить, что уведомление пришло именно от Mindbox
- clickUrl - ссылка, на которую нужно перейти, если пользователь нажмет на пуш-уведомление
- imageUrl - ссылка на изображение, которое будет показано в пуш-уведомлении
- payload - дополнительная информация, переданная вместе с пуш-уведомлением
- buttons - кнопки, которые могут быть отображены в уведомлении. Каждая кнопка содержит:
- uniqueKey - уникальный ключ кнопки пуша от Mindbox. Не используется
- text - текст на кнопке
- url - ссылку, на которую нужно перейти при нажатии на кнопку
- aps- блок данных, который содержит основную информацию, необходимую для отображения пуш-уведомления на устройстве пользователя
- alert отвечает за текстовое содержимое пуш-уведомления. Включает в себя:
- title - заголовок пуша
- body - тело пуша
- alert отвечает за текстовое содержимое пуш-уведомления. Включает в себя:
Пример использования методов в расширениях в NotificationServiceExtension или NotificationContentExtension
Вы можете использовать данные методы после импорта MindboxNotifications в расширениях NotificationServiceExtension или NotificationContentExtension.
Code
Версии SDK ниже 2.11.0
Если вы используете версию SDK ниже 2.11.0, то для обработки push-уведомлений в расширениях NotificationServiceExtension или NotificationContentExtension используйте параметр userInfo из UNNotificationRequest.UNNotificationContent. Этот параметр содержит данные push-уведомления в виде словаря (dictionary), из которого можно извлекать нужные объекты по конкретным ключам.
Чтобы упростить чтение и обработку структуры данных пуш-уведомления, вы можете сериализовать userInfo в JSON-формат или работать с данными напрямую как со словарем типа [String: Any]. Полный список полей, которые могут содержаться в модели пуш-уведомления, можно найти здесь.
Вы также можете самостоятельно реализовать в таргете Notification Service Extension структуру MBPushNotification, которая была описана ранее.
Code
Получить тело пуша в Android
В приложении используются сервисы уведомлений, наследуемые от FirebaseMessagingService и HmsMessageService. Метод onMessageReceived в этих сервисах обрабатывает все входящие пуш-уведомления, включая уведомления от Mindbox, и позволяет отслеживать получение пушей как в активном режиме (когда приложение открыто), так и в фоновом режиме (когда приложение свернуто или закрыто).
Версия SDK 2.8.4 и выше
В версии SDK 2.8.4 были добавлены два новых метода у объектов MindboxFirebase и MindboxHuawei:
isMindboxPush- возвращаетtrue, если сообщение получено от Mindbox, иfalse, если нетconvertToMindboxRemoteMessage- возвращает объектMindboxRemoteMessage, в котором содержатся данные полученного пуша:
Code
Описание параметров:
- uniqueKey - уникальный идентификатор пуш-уведомления. Помогает определить, что уведомление пришло именно от Mindbox
- title - заголовок пуша
- description - тело пуша
- pushLink - ссылка, на которую нужно перейти, если пользователь нажмет на пуш-уведомление
- imageUrl - ссылка на изображение, которое будет показано в пуш-уведомлении
- payload - дополнительная информация, переданная вместе с пуш-уведомлением
- pushActions - кнопки, которые могут быть отображены в уведомлении. Каждая кнопка содержит:
- uniqueKey - уникальный ключ кнопки пуша от Mindbox. Не используется
- text - текст на кнопке
- url - ссылку, на которую нужно перейти при нажатии на кнопку
Пример структуры пуш-уведомления с кнопкой и картинкой при использовании функцииconvertToMindboxRemoteMessage
Code
Пример вызова методов
Code
Code
Версии SDK ниже 2.8.4
Для обработки пуш-уведомлений от Mindbox в версиях SDK ниже 2.8.4, данные уведомлений извлекаются из параметра remoteMessage: RemoteMessage и преобразуются в модели следующим образом:
- для Firebase — из массива remoteMessage.data
- для Huawei — из JSON remoteMessage.data
Code
Описание параметров:
- uniqueKey - уникальный идентификатор пуш-уведомления. Помогает определить, что уведомление пришло именно от Mindbox
- title - заголовок пуша
- message - тело пуша
- clickUrl - ссылка, на которую нужно перейти, если пользователь нажмет на пуш-уведомление
- imageUrl - ссылка на изображение, которое будет показано в пуш-уведомлении
- payload - дополнительная информация, переданная вместе с пуш-уведомлением
- buttons - кнопки, которые могут быть отображены в уведомлении. Каждая кнопка содержит:
- uniqueKey - уникальный ключ кнопки пуша от Mindbox. Не используется
- text - текст на кнопке
- url - ссылку, на которую нужно перейти при нажатии на кнопку
Пример структуры пуш-уведомления с кнопками и картинкой при получении данных изremoteMessage
Code
2. Сохранить пуш
Полученное пуш-уведомление необходимо сохранить либо на бэкенде, либо непосредственно на устройстве пользователя.
Сохранение пушей в кроссплатформенном приложении
В кроссплатформенном приложении на Flutter или React Native, при сохранении пуш-уведомлений на устройстве используйте нативные механизмы хранения для iOS и Android отдельно.
3. Отрисовать пуш в мобильном приложении
Выведите пуши в центре уведомления. В payload можно передавать любые признаки, которые будут влиять на отрисовку пуша. Например, признак даты актуальности пуша.
Рекомендуем отрисовать пуши только для авторизованных клиентов, так как есть вероятность вывести чужие пуши, если на устройстве логинилось несколько пользователей.
4. Передать события в Mindbox
Этот шаг не обязателен. Позволяет фиксировать в Mindbox факт открытия ЦУ и клики по пушам в нем в виде действий.
- Настроить операции для выдачи действий.
-
- Для открытия ЦУ. Системное имя -
NotificationCentrOpen:

- Для открытия пуша из ЦУ. Системное имя -
NotificationCentrPushOpen

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

-
Дата пуша:
- для сущности - действие клиента
- системное имя -
MobPushSendDateTime - тип поля - Дата и время

- Транслитерированное название пуша - по этому полю будем искать рассылку:
-
-
Для открытия ЦУ. Системное имя -
mobileapp.NCOpen
-
Для открытия пуша из ЦУ. Системное имя -
mobileapp.NCPushOpen
-
- Реализовать обработку клика по пушу из ЦУ.
- Разметить payload пуша, чтобы в дальнейшем передать в Mindbox информацию при его открытии из ЦУ. Например, для передачи названия и даты отправки пуша:
Code
- Передать в Mindbox действие открытия ЦУ.
Пример вызова метода для передачи открытия ЦУ
При открытии ЦУ приложение отправляет запрос для выполнения операции, настроенной в пункте 1.3.
Code
Если вызов прошел успешно, то в карточке клиента появится действие “Открытие центра уведомлений”:

- Передать в Mindbox действие открытия пуша из ЦУ.
Пример вызова метода для передачи открытия пуша из ЦУ
При открытии пуша в ЦУ приложение отправляет запрос для выполнения операции, настроенной в пункте 1.3.
В вызове передаем сохраненные значения из push_name и push_date.
Code
Если вызов прошел успешно, то в карточке клиента появится действие “Открытие пуша в центре уведомлений” с доп. полями:

Как использовать данные об открытии ЦУ и пушей в нем для дальнейшей аналитики описали в инструкции