Реализация Rich Push Notifications в мобильном приложении

Стандартные push-уведомления теряются среди десятков других и часто остаются незамеченными. Мы внедряем Rich Push Notifications — уведомления с изображениями, кнопками действий и интерактивными элементами, которые выделяют ваш бренд. Наша команда реализует проект под ключ на iOS и Android, обеспечивая стабильную работу и последующую поддержку.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация Rich Push Notifications в мобильном приложении
Средний
~2-3 дня
Часто задаваемые вопросы

Реализация Rich Push Notifications в мобильном приложении

Стандартное уведомление — заголовок и текст. Клиенты жалуются, что такие уведомления игнорируют. Мы внедряем Rich Push: изображения, кнопки действий, иногда видео. На iOS это требует Notification Service Extension, на Android — BigPictureStyle. Наш опыт: такие уведомления повышают CTR на 40%, а вовлечённость — до 70%. Ниже разберём оба пути с реальными примерами. Стоимость интеграции Rich Push — от $450–650. на одну платформу, экономия от повторных разработок достигает 30%.

Как настроить Rich Push на iOS?

Без NSE изображение в push на iOS не работает. NSE — отдельный таргет в Xcode, перехватывающий уведомление до показа. Он скачивает медиа и прикрепляет как UNNotificationAttachment. Мы гарантируем совместимость с последними версиями iOS.

// NotificationService.swift
class NotificationService: UNNotificationServiceExtension {
    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        let content = request.content.mutableCopy() as! UNMutableNotificationContent
        guard let urlString = content.userInfo["image_url"] as? String, let url = URL(string: urlString) else {
            contentHandler(content)
            return
        }
        downloadImage(from: url) { localURL in
            if let localURL, let attachment = try? UNNotificationAttachment(identifier: "image", url: localURL) {
                content.attachments = [attachment]
            }
            contentHandler(content)
        }
    }

    private func downloadImage(from url: URL, completion: @escaping (URL?) -> Void) {
        URLSession.shared.downloadTask(with: url) { tempURL, _, _ in
            completion(tempURL)
        }.resume()
    }
}

NSE имеет лимит выполнения около 30 секунд. Если медиа не скачалось, iOS покажет уведомление без изображения. Оптимизируем медиа: размер до 1 МБ, формат JPEG или PNG. Согласно документации Apple, превышение лимита скрывает изображение.

Кнопки действий на iOS. Регистрируем категории при старте приложения:

let likeAction = UNNotificationAction(identifier: "LIKE", title: "Лайк", options: [])
let replyAction = UNNotificationAction(identifier: "REPLY", title: "Ответить", options: [.foreground])
let category = UNNotificationCategory(identifier: "POST_CATEGORY", actions: [likeAction, replyAction], intentIdentifiers: [])
UNUserNotificationCenter.current().setNotificationCategories([category])

В payload уведомления указываем category: "POST_CATEGORY" — iOS покажет кнопки. Обработка нажатия:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    switch response.actionIdentifier {
    case "LIKE":
        likePost(id: response.notification.request.content.userInfo["post_id"] as? String)
    case "REPLY":
        openReplyScreen(for: response.notification.request.content.userInfo)
    default:
        break
    }
    completionHandler()
}

Почему Data Message предпочтительнее Notification Message на Android?

На Android кастомный UI нативно:

val bitmap = BitmapFactory.decodeStream( URL(imageUrl).openConnection().getInputStream() )
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notification)
    .setContentTitle(title)
    .setContentText(body)
    .setStyle(
        NotificationCompat.BigPictureStyle()
            .bigPicture(bitmap)
            .setSummaryText(body)
    )
    .addAction(
        R.drawable.ic_like,
        "Лайк",
        getLikePendingIntent(postId)
    )
    .addAction(
        R.drawable.ic_reply,
        "Ответить",
        getReplyPendingIntent(postId)
    )
    .build()

Загрузку bitmap нельзя делать на main thread. Используем Glide или WorkManager. FCM Data Message — правильный подход, так как Notification Message обрабатывается системой без вызова кода. Data Message всегда идёт в onMessageReceived. В реальных проектах Data Message надёжнее: при убитом приложении Notification Message не гарантирует показ изображения, а Data Message — гарантирует.

Форматы медиа

Платформа Изображение Видео GIF
iOS NSE JPEG, PNG, GIF (превью), HEIC MP4 (до 50 МБ) Нет нативно
Android JPEG, PNG Нет Нет нативно

Пошаговая инструкция интеграции Rich Push

  1. Оценка архитектуры push — выясняем, используется FCM или сторонний сервис.
  2. Проектирование категорий и payload — определяем типы уведомлений, кнопки, поля для медиа.
  3. Реализация NSE на iOS — создаём таргет, добавляем код загрузки и прикрепления.
  4. Реализация BigPictureStyle на Android — настраиваем Data Message, используем NotificationCompat.
  5. Тестирование на реальных устройствах — проверяем все сценарии (активное/фоновое/убитое приложение).
  6. Деплой и мониторинг — публикация в сторах, отслеживание кликов.

Сроки и что входит в работу

Этап Описание Срок
Аналитика Оценка текущей архитектуры push, выбор подхода 1 день
Проектирование Создание схемы категорий, payload, дизайн медиа 1–2 дня
Реализация Написание NSE, BigPictureStyle, кнопок, обработчиков 2–3 дня
Тестирование Проверка на реальных устройствах, сценарии ошибок 1 день
Деплой Публикация в App Store/Google Play, мониторинг 0,5 дня

Входит: настройка NSE, регистрация категорий и обработка нажатий на iOS; интеграция FCM Data Message и BigPictureStyle на Android; тестирование на обеих платформах; документация. Не входит: кастомный Notification Content Extension и аналитика — обсуждается отдельно. Стоимость реализации — от $450–650. за одну платформу, рассчёт индивидуально.

Типичные ошибки

  • OneSignal и NSE. Если используете OneSignal, добавьте таргет OneSignalNotificationServiceExtension в App Groups. Иначе изображения не появятся без ошибок в логах.
  • Двойной payload на Android. При одновременном использовании notification и data полей в FCM, когда приложение убито, onMessageReceived не вызывается. Используйте только data payload.
  • Размер медиа. На iOS медиа свыше 1 МБ может не успеть загрузиться за 30 секунд. На Android большие изображения вызывают OutOfMemoryError. Оптимизируйте до 500 КБ.

Почему стоит доверить нам

Мы имеем 7+ лет опыта в мобильной разработке, реализовали более 30 проектов с push-уведомлениями. Гарантируем совместимость с последними версиями iOS и Android, соблюдение App Store Review Guidelines. Обрабатываем до 1000 уведомлений в минуту без потери производительности. Закажите внедрение Rich Push в вашем приложении — и мы подготовим предложение за 1 день. Получите консультацию по вашему проекту — это поможет оценить экономию бюджета.

Источники: UNNotificationServiceExtension — Apple Developer Documentation, BigPictureStyle — Android Developers

Что такое NSE и BigPictureStyle? NSE (Notification Service Extension) — расширение для iOS, позволяющее модифицировать контент уведомления до отображения. BigPictureStyle — стиль уведомлений Android, отображающий большое изображение. Оба компонента критичны для Rich Push.

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714