Mindbox
iOS SDK

iOS. Как получать пуши из нескольких источников отправки

Результат выполнения шага

Мобильные пуши, полученные не из Mindbox, обрабатываются корректно.

Статья описывает дополнительную схему интеграции для совместного использования сторонних push-провайдеров на примере Firebase. Инструкция подходит для всех провайдеров.

Перед настройкой

Убедитесь, что базовая интеграция Mindbox iOS SDK выполнена.

Необходимо провести следующие изменения:

  1. Разделить обработку пушей в AppDelegate с помощью метода isMindboxPush;
  2. При наличии нескольких Notification Service Extension(NSE) добавить isMindboxPush в каждый из расширений.

Разделение обработки пушей в AppDelegate

В метод didReceive добавьте проверку источника пуша:

SwiftCode
func userNotificationCenter( _ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void ) { let userInfo = response.notification.request.content.userInfo if Mindbox.shared.isMindboxPush(userInfo: userInfo) { // Mindbox-ветка if let pushModel = Mindbox.shared.getMindboxPushData(userInfo: userInfo) { // Ваша обработка: диплинк, аналитика и т.д. } } else { // Не-Mindbox: Firebase / другой провайдер / собственный backend } completionHandler() }

Разделение обработки пушей в NSE

В метод didReceive расширения добавьте проверку источника пуша:

SwiftCode
override func didReceive( _ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void ) { self.contentHandler = contentHandler self.bestAttempt = (request.content.mutableCopy() as? UNMutableNotificationContent) let userInfo = request.content.userInfo if isMindboxPush(userInfo: userInfo) { // Mindbox: картинки, кнопки, диплинк mindboxService.didReceive(request, withContentHandler: contentHandler) } else { // Не-Mindbox (пример Firebase): // Передайте запрос в ваш Firebase-обработчик // Если стороннего расширения нет — передайте контент как есть: contentHandler(bestAttempt ?? request.content) } }
Last modified on