Mindbox
iOS | Настройка Rich-push уведомлений

Отображение превью картинки

Результат этапа «Отображение превью картинки»:

Push-уведомление должно отобразится с маленькой квадратной картинкой справа.

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

1. Создание расширения

  1. В Xcode выбрать Select File > New > Target
  2. Выбрать Notification Service Extension и нажать Next.
  3. Ввести Product name MindboxNotificationServiceExtension и нажать Finish.
  4. Нажать Activate на диалоговом окне Activate scheme.


2. Настройка расширения

2.1. iOS Deployment Target

Проверьте версии iOS Deployment Target. Версии iOS Deployment Target должны быть одинаковыми в:

  • Main target,
  • Service extension
  • Content extension.

Их можно найти по пути Your Project Name -> Targets -> Target Name -> General -> Minimum Deployments -> iOS

iOS Deployment Target очень важный пункт для правильной работы Service Extension и Content Extension

Важно следить за этим параметром, особенно после обновления на новую версию Xcode. Он может измениться автоматически, что приведет к неправильной работе Service Extension и Content Extension


2.2. App groups

  1. Откройте настройки проекта;
  2. Выберите таргет MindboxNotificationServiceExtension;
  3. Перейдите на вкладку Signing & Capabilities;
  4. Нажмите на кнопку «добавить» и выберите AppGroups;
  5. Добавьте новую группу с названием по шаблону group.cloud.Mindbox.{bundle id приложения};
    Например, bundle id приложения — Mindbox-Sample-App, тогда значение App Group должно быть group.cloud.Mindbox.Mindbox-Sample-App.

Настройка App Group обязательная для работы Mindbox SDK

Если упустить этот шаг, то при получении push-уведомления расширение может упасть с ошибкой, которую будет очень тяжело отловить.

2.3. Подпись расширения

Нужно подписать расширение тем же сертификатом, что и основное приложение. Если у вас стоит автоматическая подпись — все подпишется само, если ручная — необходимо вручную создать сертификаты для таргетов и проставить в «Signing & Capabilities».

2.4. Проверка rich-push уведомлений, используя Xcode debug сборки.

Проверьте в разделе Target -> Build Phases -> Embed App Extension -> галочка с Copy only when installing должна быть убрана

Убирайте эту галочку ТОЛЬКО если вы собираетесь проверять Rich-Push Notifications используя Debug-сборки, собранные через Xcode напрямую.



3. Добавление SDK в проект


  1. В Xcode нажмите в верхнем меню “File” -> “Add Packages…”
  2. В открывшемся окне добавьте ссылку на Mindbox SDK https://github.com/mindbox-cloud/ios-sdk и нажмите на «Add Package».
  3. После загрузки пакета, необходимо указать таргеты:
  • MindboxNotificationsService добавьте в ранее созданный MindboxNotificationServiceExtension
  • MindboxNotificationsContent добавьте в ранее созданный MindboxNotificationContentExtension


4. Настройка SDK в приложении

Необходимо в основном файле расширения сделать следующие настройки:

  • импортировать библиотеку MindboxNotifications;
  • вызвать метод MindboxNotificationService();
  • поставить в 2 местах вызовы методов didReceive и serviceExtensionTimeWillExpire.

SwiftSwift
import UserNotifications import MindboxNotifications class NotificationService: UNNotificationServiceExtension { lazy var mindboxService: MindboxNotificationServiceProtocol = MindboxNotificationService() override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { mindboxService.didReceive(request, withContentHandler: contentHandler) } override func serviceExtensionTimeWillExpire() { mindboxService.serviceExtensionTimeWillExpire() } }

Проверка результата «Отображение превью картинки»

  • Мобильное push-уведомление должно отобразится с маленькой квадратной картинкой справа.
  • Проверьте, что push-уведомление с картинкой отправляется корректно.

Если вы тестируете push-уведомления в окружении Sandbox, не забудьте поставить галочку "Тестовое сообщение Sandbox" в профиле рассылки "Вручную".
Подробнее про Sandbox-окружение



Last modified on