Результат выполнения шага
Мобильные пуши, полученные не из Mindbox, обрабатываются корректно.
Статья описывает дополнительную схему интеграции для совместного использования сторонних push-провайдеров на примере Firebase. Инструкция подходит для всех провайдеров.
Необходимо провести следующие изменения:
Разделить обработку пушей в AppDelegate с помощью метода isMindboxPush;
При наличии нескольких Notification Service Extension(NSE) добавить isMindboxPush в каждый из расширений.
Разделение обработки пушей в AppDelegate
В метод didReceive добавьте проверку источника пуша:
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 расширения добавьте проверку источника пуша:
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 September 4, 2026