Реалізація Rich Push Notifications у мобільному застосунку

Реалізація Rich Push Notifications у мобільному застосунку Стандартне сповіщення — заголовок і текст. Клієнти скаржаться, що такі сповіщення ігнорують. Ми впроваджуємо Rich Push: зображення, кнопки дій, іноді відео. На iOS це вимагає Notification Service Extension, на Android — BigPictureStyle. Н

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

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

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Реалізація Rich Push Notifications у мобільному застосунку

Стандартне сповіщення — заголовок і текст. Клієнти скаржаться, що такі сповіщення ігнорують. Ми впроваджуємо Rich Push: зображення, кнопки дій, іноді відео. На iOS це вимагає Notification Service Extension, на Android — BigPictureStyle. Наш досвід: такі сповіщення підвищують CTR на 40%, а залученість — до 70%. Нижче розберемо обидва шляхи з реальними прикладами. Вартість інтеграції визначається після аналізу.

Як налаштувати 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 та аналітика — обговорюється окремо. Вартість визначається індивідуально.

Типові помилки

  • 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.