Notificările push sunt una dintre cele mai eficiente modalități de interacțiune cu utilizatorul după instalarea aplicației. Acestea permit notificarea despre un mesaj nou, reducere, actualizare de conținut sau reamintirea unui coș abandonat. Notificările push (push notifications) funcționează prin servicii cloud: Firebase Cloud Messaging (FCM) pe Android și Apple Push Notification Service (APNS) pe iOS. În acest articol vom analiza arhitectura notificărilor, tipurile lor și procesul de configurare pentru ambele platforme. Mai multe informații în documentația oficială FCM.
Puncte cheie
O notificare push este un mesaj pe care serverul îl trimite unui dispozitiv mobil fără o solicitare din partea aplicației. Mesajul trece printr-un serviciu cloud (FCM sau APNS) care îl livrează dispozitivului chiar dacă aplicația este închisă. Notificările sunt împărțite în două tipuri: notificări de afișare (arătate utilizatorului) și notificări de date (transmit date pentru procesare în fundal).
Arhitectura notificărilor push include trei componente: (1) serverul aplicației — trimite o solicitare către FCM/APNS; (2) serviciul cloud — direcționează notificarea; (3) aplicația client — primește și procesează notificarea. Serverul trebuie să cunoască Device Token-ul dispozitivului pentru a trimite o notificare specifică acestuia. Pentru trimiteri în masă se utilizează Topic Subscription — abonarea dispozitivelor la canale tematice (știri, promoții, vreme).
Pe fiecare dispozitiv, notificările sunt procesate de sistemul de operare: Android — prin NotificationManager și NotificationChannel, iOS — prin UNUserNotificationCenter. Utilizatorul poate configura comportamentul notificărilor pentru fiecare canal: permite sunet, bannere, afișare pe ecranul de blocare sau dezactivare completă. Configurarea corectă a canalelor crește implicarea și reduce rata de dezabonare.
La IT Sectr, proiectăm sistemul de notificări push ținând cont de caracteristicile specifice platformei încă de la început. Decizii cheie: alegerea între FCM și APNS direct, formatul payload-ului, frecvența trimiterii și mecanica abonamentelor. Acest lucru ajută la evitarea situațiilor în care notificările nu ajung sau sunt blocate de sistem.
Firebase Cloud Messaging (FCM) este serviciul multiplatformă al Google pentru livrarea notificărilor. FCM suportă Android, iOS, Web și Flutter. Pe iOS, FCM funcționează prin APNS: FCM trimite o solicitare către APNS, care livrează notificarea către dispozitiv. Avantajele FCM: API unic pentru ambele platforme, analitică integrată, testare A/B, subiecte și segmente de public.
Apple Push Notification Service (APNS) este serviciul nativ Apple. Funcționează doar pe dispozitive Apple (iOS, macOS, watchOS, tvOS). Necesită autorizare directă printr-un certificat TLS sau token (JWT). APNS oferă latență minimă de livrare și integrare directă cu funcțiile iOS: PushKit, Notification Service Extension și alerte critice.
Alegerea între FCM și APNS depinde de arhitectura proiectului. Dacă aplicația este doar pentru iOS — APNS oferă mai mult control. Dacă este multiplatformă — FCM este mai convenabil cu un API unic. Multe proiecte folosesc FCM ca serviciu principal și configurează suplimentar PushKit pentru VoIP pe iOS. O abordare hibridă permite obținerea celor mai bune aspecte din ambele sisteme.
| Caracteristică | FCM | APNS |
|---|---|---|
| Platforme | Android, iOS, Web, Flutter | iOS, macOS, watchOS, tvOS |
| Autorizare | Cheie server (Firebase Console) | Certificat TLS sau token JWT |
| Payload maxim | 4 KB (data), 2 KB (notification) | 4 KB |
| Subiecte | Integrate (Topic Messaging) | Nu (implementate pe server) |
| Silent Push | Suportat | Suportat (content-available) |
| PushKit | Nu | Da (VoIP, activități live) |
| Analitică | Firebase Analytics | Nicio analitică integrată |
| Livrare pe dispozitiv oprit | Limitat (depinde de producător) | Da, prin PushKit |
O Rich Notification este o notificare care conține nu doar text, ci și conținut media: imagini, video, audio și butoane de acțiune. Pe Android este implementată prin stiluri NotificationCompat: BigPictureStyle (imagine mare), BigTextStyle (text pliat/expandat), InboxStyle (listă de mesaje), MediaStyle (control redare). Pe iOS se utilizează Notification Content Extension — un target separat cu UI personalizat pentru notificarea extinsă.
Silent Push (content-available pe iOS) este o notificare livrată fără a fi afișată utilizatorului. Este destinată actualizării datelor în fundal: sincronizare conținut, preîncărcare, actualizare widget-uri. Pe iOS, Silent Push necesită activarea Background Modes → Remote notifications. Pe Android se utilizează FirebaseMessagingService cu onMessageReceived pentru gestionarea notificărilor în fundal. Important: pe iOS, Silent Push are limitări de frecvență și nu garantează livrarea dacă aplicația nu este în prim-plan.
O Interactive Notification permite utilizatorului să efectueze o acțiune fără a deschide aplicația. Pe Android sunt butoane (Action) în notificare: „Răspunde", „Aprobă", „Respinge". Acțiunile sunt procesate prin PendingIntent, care lansează un BroadcastReceiver sau Service. Pe iOS, Notification Action se înregistrează prin UNNotificationAction și UNNotificationCategory. Butoanele pot fi foreground (deschide aplicația), background (execută în fundal) sau destructive (acțiune ireversibilă — șterge, blochează).
Notification Content Extension (iOS) — un controler de vizualizare personalizat pentru afișarea conținutului extins al notificării la apăsare lungă sau 3D Touch. Notification Service Extension (iOS) — middleware pentru modificarea conținutului notificării înainte de afișare: decriptarea mesajelor E2E, încărcarea imaginilor, ofuscarea datelor confidențiale. Pe Android nu există analogi direcți — toate modificările se efectuează în FirebaseMessagingService.
Pentru Android este necesar: (1) adăugarea Firebase SDK la proiect (google-services.json); (2) crearea unui NotificationChannel (Android 8+) pentru fiecare categorie de notificări; (3) implementarea FirebaseMessagingService pentru primirea token-urilor și mesajelor primite. Notification Channel este obligatoriu — fără el notificările nu vor fi afișate pe Android 8+. Canalele au prioritate (IMPORTANCE_HIGH — sunet + fereastră popup, IMPORTANCE_LOW — fără sunet) și sunt configurabile de utilizator în setările sistemului.
Pentru iOS este necesar: (1) activarea capacității Push Notifications în Xcode; (2) configurarea cheii APNS pe Apple Developer Portal; (3) solicitarea autorizării prin UNUserNotificationCenter.requestAuthorization — aceasta este o fereastră de dialog de sistem care se afișează o singură dată. Răspunsul utilizatorului este critic: dacă permisiunea nu este acordată, notificările nu vor fi livrate. Se recomandă explicarea utilizatorului de ce sunt necesare notificările înainte de afișarea ferestrei de dialog de sistem (pre-permission prompt).
Device Token (iOS) și Registration Token (Android) sunt identificatori unici ai dispozitivului pentru notificări push. Token-ul este generat la prima lansare a aplicației și se poate schimba: la reinstalare, ștergere date, resetare setări confidențialitate. Serverul trebuie să actualizeze regulat token-urile. Firebase oferă un API convenabil pentru gestionarea token-urilor prin onNewToken, precum și un panou pentru trimiterea de notificări de test (Firebase Console → Cloud Messaging).
Topic Subscription este unul dintre cele mai eficiente mecanisme FCM. Un dispozitiv se abonează la un subiect (de exemplu, "news", "promo_users_ios"), iar serverul trimite notificări pe subiect fără a fi nevoie să stocheze o listă de token-uri. Firebase Topics suportă până la un milion de abonați pe subiect și trimiterea condiționată (Condition) printr-un limbaj de expresii: "'news' in topics && ('US' in topics || 'UK' in topics)".
Notification Payload este structura JSON trimisă prin FCM/APNS. Pentru FCM: notification separat (partea vizibilă — titlu, corp, imagine) și data (câmpuri personalizate pentru aplicație). Pentru APNS: dicționar aps cu alert, badge, sound, category și content-available. Structura corectă a payload-ului este critică: dacă notification + data sosesc simultan, aplicația în fundal poate să nu primească datele. Se recomandă utilizarea numai a mesajelor data pentru Android și transmiterea câmpurilor vizuale separat prin FCM Console.
Întrebări frecvente
FCM (Firebase Cloud Messaging) este serviciul Google pentru Android și notificări multiplatformă. APNS (Apple Push Notification Service) este serviciul Apple doar pentru iOS/macOS. FCM poate livra notificări prin APNS pe iOS, acționând ca un server proxy.
O Rich Notification este o notificare avansată cu conținut media: imagini, video, audio, butoane de acțiune. Pe iOS este implementată prin Notification Content Extension; pe Android prin BigPictureStyle și InboxStyle.
Device Token este un identificator unic al dispozitivului pentru trimiterea notificărilor push. Pe Android este Registration Token de la FCM; pe iOS este Device Token de la APNS. Token-ul se poate schimba la reinstalarea aplicației sau resetarea setărilor, deci trebuie actualizat pe server.
Silent Push (notificare silențioasă) este o notificare fără afișare utilizatorului. Este utilizată pentru actualizări de date în fundal: sincronizare conținut, actualizări widget, preluare în avans. Pe iOS necesită activarea Background Modes → Remote notifications.
PushKit este un framework Apple pentru livrarea notificărilor cu prioritate ridicată utilizat în aplicații VoIP (apeluri, mesagerie). PushKit livrează notificarea chiar dacă aplicația este oprită și garantează lansarea aplicației pentru procesare.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.