Пусх обавештења су један од најефикаснијих начина интеракције са корисником након инсталације апликације. Омогућавају обавештавање о новој поруци, попусту, ажурирању садржаја или подсећање на напуштену корпу. Пусх обавештења (push notifications) раде преко облачних сервиса: Firebase Cloud Messaging (FCM) на Android-у и Apple Push Notification Service (APNS) на iOS-у. У овом чланку ћемо анализирати архитектуру обавештења, њихове врсте и процес подешавања за обе платформе. Више информација у званичној FCM документацији.
Кључне тачке
Пусх обавештење је порука коју сервер шаље на мобилни уређај без захтева од апликације. Порука пролази кроз облачни сервис (FCM или APNS) који је доставља на уређај чак и ако је апликација затворена. Обавештења се деле на два типа: display обавештења (приказују се кориснику) и data обавештења (преносе податке за позадинску обраду).
Архитектура пусх обавештења укључује три компоненте: (1) сервер апликације — шаље захтев на FCM/APNS; (2) облачни сервис — усмерава обавештење; (3) клијентска апликација — прима и обрађује обавештење. Сервер мора да зна Device Token уређаја да би послао обавештење управо њему. За масовна слања користи се Topic Subscription — претплата уређаја на тематске канале (вести, промоције, време).
На сваком уређају обавештења обрађује оперативни систем: Android — преко NotificationManager-а и NotificationChannel-а, iOS — преко UNUserNotificationCenter-а. Корисник може да подеси понашање обавештења за сваки канал: дозволи звук, банере, приказ на закључаном екрану или потпуно искључивање. Правилно подешавање канала повећава ангажованост и смањује стопу одјављивања.
У IT Sectr-у, пројектујемо систем пусх обавештења узимајући у обзир платформске карактеристике од самог почетка. Кључне одлуке: избор између FCM-а и директног APNS-а, формат payload-а, учесталост слања и механика претплата. Ово помаже да се избегну ситуације када обавештења не стижу или их систем блокира.
Firebase Cloud Messaging (FCM) је Google-ов међуплатформски сервис за доставу обавештења. FCM подржава Android, iOS, Web и Flutter. На iOS-у, FCM ради преко APNS-а: FCM шаље захтев APNS-у, који доставља обавештење на уређај. Предности FCM-а: јединствени API за обе платформе, уграђена аналитика, A/B тестирање, теме и сегменти публике.
Apple Push Notification Service (APNS) је Apple-ов изворни сервис. Ради само на Apple уређајима (iOS, macOS, watchOS, tvOS). Захтева директну ауторизацију преко TLS сертификата или токена (JWT). APNS обезбеђује минимално кашњење доставе и директну интеграцију са iOS функцијама: PushKit, Notification Service Extension и критична упозорења.
Избор између FCM-а и APNS-а зависи од архитектуре пројекта. Ако је апликација само за iOS — APNS даје више контроле. Ако је међуплатформска — FCM је згоднији са јединственим API-јем. Многи пројекти користе FCM као основни сервис, а на iOS-у додатно подешавају PushKit за VoIP. Хибридни приступ омогућава да се добије најбоље из оба система.
| Карактеристика | FCM | APNS |
|---|---|---|
| Платформе | Android, iOS, Web, Flutter | iOS, macOS, watchOS, tvOS |
| Ауторизација | Серверски кључ (Firebase Console) | TLS сертификат или JWT токен |
| Максимални payload | 4 KB (data), 2 KB (notification) | 4 KB |
| Теме | Уграђене (Topic Messaging) | Нема (имплементирају се на серверу) |
| Silent Push | Подржан | Подржан (content-available) |
| PushKit | Нема | Да (VoIP, live activities) |
| Аналитика | Firebase Analytics | Нема уграђене |
| Достава на угашеном уређају | Ограничено (зависи од произвођача) | Да, преко PushKit-а |
Rich Notification је обавештење које садржи не само текст већ и медијски садржај: слике, видео, аудио и дугмад за акцију. На Android-у се имплементира кроз NotificationCompat стилове: BigPictureStyle (велика слика), BigTextStyle (сажети/проширени текст), InboxStyle (листа порука), MediaStyle (контрола репродукције). На iOS-у се користи Notification Content Extension — засебан target са прилагођеним UI-јем за проширено обавештење.
Silent Push (content-available на iOS-у) је обавештење које се доставља без приказивања кориснику. Намењено је за позадинско ажурирање података: синхронизација садржаја, преучитавање, ажурирање виџета. На iOS-у, Silent Push захтева укључивање Background Modes → Remote notifications. На Android-у се за обраду позадинских обавештења користи FirebaseMessagingService са onMessageReceived. Важно: на iOS-у, Silent Push има ограничења учесталости и не гарантује доставу ако апликација није у предњем плану.
Interactive Notification омогућава кориснику да изврши радњу без отварања апликације. На Android-у су то дугмад (Action) у обавештењу: „Одговори", „Одобри", „Одбиј". Радње се обрађују преко PendingIntent-а, који покреће BroadcastReceiver или Service. На iOS-у, Notification Action се региструје преко UNNotificationAction и UNNotificationCategory. Дугмад могу бити foreground (отвара апликацију), background (извршава у позадини) или destructive (неповратна радња — избриши, блокирај).
Notification Content Extension (iOS) — прилагођени view controller за приказивање проширеног садржаја обавештења при дугом притиску или 3D Touch-у. Notification Service Extension (iOS) — middleware за модификацију садржаја обавештења пре приказивања: дешифровање E2E порука, учитавање слике, обфускација поверљивих података. На Android-у нема директних аналога — све модификације се обављају у FirebaseMessagingService-у.
За Android је потребно: (1) додати Firebase SDK у пројекат (google-services.json); (2) креирати NotificationChannel (Android 8+) за сваку категорију обавештења; (3) имплементирати FirebaseMessagingService за пријем токена и долазних порука. Notification Channel је обавезан — без њега обавештења неће бити приказана на Android 8+. Канали имају приоритет (IMPORTANCE_HIGH — звук + искачући прозор, IMPORTANCE_LOW — без звука) и корисник их може подесити у системским поставкама.
За iOS је потребно: (1) укључити Push Notifications capability у Xcode-у; (2) подесити APNS кључ на Apple Developer Portal-у; (3) затражити ауторизацију кроз UNUserNotificationCenter.requestAuthorization — ово је системски дијалог који се приказује једном. Одговор корисника је критичан: ако дозвола није добијена, обавештења неће бити достављена. Препоручује се да се кориснику објасни зашто су обавештења потребна пре приказивања системског дијалога (pre-permission prompt).
Device Token (iOS) и Registration Token (Android) су јединствени идентификатори уређаја за пусх обавештења. Токен се генерише при првом покретању апликације и може се променити: при поновној инсталацији, чишћењу података, ресетовању подешавања приватности. Сервер мора редовно да ажурира токене. Firebase пружа згодан API за управљање токенима преко onNewToken, као и панел за тестно слање обавештења (Firebase Console → Cloud Messaging).
Topic Subscription је један од најефикаснијих механизама FCM-а. Уређај се претплаћује на тему (нпр. „news", „promo_users_ios"), а сервер шаље обавештења по теми без потребе за чувањем листе токена. Firebase Topics подржава до милион претплатника по теми и условно слање (Condition) кроз језик израза: „'news' in topics && ('US' in topics || 'UK' in topics)".
Notification Payload је JSON структура која се шаље кроз FCM/APNS. За FCM: одвојено notification (видљиви део — наслов, тело, слика) и data (прилагођена поља за апликацију). За APNS: aps речник са alert, badge, sound, category и content-available. Правилна структура payload-а је критична: ако notification + data стигну истовремено, апликација у позадини можда неће примити data. Препоручује се коришћење само data порука за Android и преношење визуелних поља одвојено кроз FCM Console.
Често постављана питања
FCM (Firebase Cloud Messaging) је Google-ов сервис за Android и међуплатформска обавештења. APNS (Apple Push Notification Service) је Apple-ов сервис само за iOS/macOS. FCM може достављати обавештења преко APNS-а на iOS-у, делујући као прокси сервер.
Rich Notification је напредно обавештење са медијским садржајем: слике, видео, аудио, дугмад за акцију. На iOS-у се имплементира кроз Notification Content Extension; на Android-у кроз BigPictureStyle и InboxStyle.
Device Token је јединствени идентификатор уређаја за слање пусх обавештења. На Android-у је то Registration Token од FCM-а; на iOS-у Device Token од APNS-а. Токен се може променити при поновној инсталацији апликације или ресетовању подешавања, па га треба ажурирати на серверу.
Silent Push (тихо обавештење) је обавештење без приказивања кориснику. Користи се за позадинско ажурирање података: синхронизација садржаја, ажурирање виџета, преузимање унапред. На iOS-у захтева укључивање Background Modes → Remote notifications.
PushKit је Apple-ов оквир за доставу обавештења високог приоритета који се користи у VoIP апликацијама (позиви, месенџери). PushKit доставља обавештење чак и ако је апликација убијена и гарантује покретање апликације за обраду.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.