Notificări locale în dezvoltarea mobilă: esența, tipurile și cum funcționează

Autor: IT Sectr Publicat: 2026-03-19 Timp de citire: 8 min

Notificarea locală este un mesaj pe care aplicația îl trimite utilizatorului fără participarea unui server la distanță. Toate datele sunt procesate și afișate direct pe dispozitivul destinatarului. Un astfel de mecanism este potrivit pentru memento-uri, timer-e și alarme, când aplicația este în fundal sau închisă. Conform Apple Developer Documentation, UNUserNotificationCenter asigură gestionarea centralizată a notificărilor locale pe iOS.

Principalele puncte

  • Notificarea locală — un mesaj planificat și livrat de dispozitiv fără participarea serverului
  • Platforme — Android folosește NotificationManager, iOS folosește UNUserNotificationCenter
  • Planificare — notificările pot fi amânate în funcție de timp, geolocație sau calendar
  • Limitări — notificările locale nu funcționează între dispozitive și necesită o logică separată de sincronizare
  • UX — notificările configurate corect cresc implicarea utilizatorului și îl aduc înapoi în aplicație

Ce este o notificare locală?

O notificare locală este un mesaj declanșat și afișat de sistemul de operare pe același dispozitiv pe care este instalată aplicația. Spre deosebire de notificările push, cele locale nu trec printr-un server extern — întreaga logică de planificare se execută pe client.

Astfel de notificări funcționează indiferent de starea aplicației: activă, minimizată sau complet închisă. Sistemul de operare preia livrarea la momentul stabilit, iar dezvoltatorul specifică doar conținutul și declanșatorul.

Sistemul garantează livrarea notificării locale chiar și în absența rețelei. Acesta este un avantaj cheie față de notificările push, care necesită o conexiune stabilă la internet și un server funcțional.

Componentele principale ale cererii

Fiecare notificare locală este formată din trei părți: conținut (titlu, corp, sunet), declanșator (condiție temporală sau geografică) și identificatorul cererii. Identificatorul permite anularea sau actualizarea notificării înainte de livrare.

Dezvoltatorul poate seta până la 64 de notificări locale pentru o aplicație pe iOS și un număr nelimitat pe Android. Diferența se datorează limitărilor arhitecturale ale sistemelor de operare.

Cum funcționează notificările locale pe iOS și Android?

Ambele platforme oferă propriile API-uri pentru lucrul cu notificările locale. Pe iOS elementul central este UNUserNotificationCenter, pe Android — NotificationManager. În ciuda interfețelor diferite, logica este aceeași: aplicația creează o cerere, o înregistrează în sistem, iar OS-ul livrează notificarea la momentul stabilit.

iOS folosește UNCalendarNotificationTrigger pentru evenimente calendaristice, UNTimeIntervalNotificationTrigger pentru intervale și UNLocationNotificationTrigger pentru geolocație. Android oferă AlarmManager, WorkManager și planificarea exactă prin setExact.

Începând cu Android 12 — SCHEDULE_EXACT_ALARM necesită o permisiune specială de la utilizator. Pe iOS permisiunea se solicită o singură dată prin UNUserNotificationCenter.requestAuthorization, iar utilizatorul alege nivelul de acces: bannere, sunete, ecusoane.

Tipuri de notificări locale

Notificările locale se clasifică după tipul declanșatorului, nu după conținut. Fiecare tip determină când și în ce condiții va fi afișată notificarea utilizatorului.

Compararea declanșatoarelor pe platforme

Pe iOS și Android tipurile de declanșatoare sunt implementate diferit, deși clasificarea logică este aceeași. iOS folosește UNCalendarNotificationTrigger pentru date, UNTimeIntervalNotificationTrigger pentru intervale și UNLocationNotificationTrigger pentru geolocație. Android oferă AlarmManager cu setExact și setRepeating, precum și WorkManager pentru sarcini întârziate.

Tip declanșatorDescriereExemplu
Interval de timpNotificare după N secunde de la pornireTimer de numărătoare inversă
Dată calendaristicăNotificare la o oră și dată specificăMemento de întâlnire
GeolocațieNotificare la intrarea/ieșirea dintr-o regiuneMemento lângă magazin
NecondiționatLivrare imediată la apelul APINotificare de descărcare

Pe iOS este disponibil și UNNotificationAttachment — atașament de imagine, audio sau video în corpul notificării. Android suportă șabloane personalizate cu butoane și imagini mari prin NotificationCompat.Style.

Alegerea declanșatorului depinde de scenariu: memento-urile calendaristice funcționează cel mai bine prin declanșatorul calendaristic, iar geo-memento-urile — prin geolocație. Declanșatoarele pe interval sunt potrivite pentru evenimente regulate cu o perioadă fixă.

Comportamentul declanșatoarelor în fundal

Pe iOS notificările locale sunt livrate de sistem chiar și când aplicația este închisă — UNUserNotificationCenter gestionează coada independent. Pe Android livrarea depinde de mecanismul ales: AlarmManager se activează chiar și cu ecranul oprit, iar WorkManager — ținând cont de economisirea energiei.

Scenarii de utilizare în aplicațiile mobile

Notificările locale rezolvă sarcini în care infrastructura externă este redundantă sau indisponibilă. Principalele scenarii: memento-uri, timer-e, sfaturi educaționale și acțiuni amânate.

  • Memento-uri — aplicația de calendar creează o notificare locală pentru o dată specifică a evenimentului
  • Sfaturi educaționale — la o zi după instalare, aplicația afișează un sfat despre ecran
  • Timer-e — timerul de bucătărie se activează după un timp stabilit chiar și când aplicația este închisă
  • Progresul operațiilor — notificare despre finalizarea descărcării sau exportului de date

Cercetările Localytics arată că aplicațiile care folosesc memento-uri locale rețin cu 35% mai mulți utilizatori în prima săptămână după instalare. Acest lucru face notificările locale un instrument puternic de onboardig.

Este important să nu abuzați de frecvență — sistemul grupează singur notificările de la o aplicație, iar utilizatorul poate dezactiva toate notificările locale dacă devin deranjante. Frecvența optimă este de cel mult 2–3 notificări pe zi pentru evenimente non-critice.

Exemplu de planificare pe Android

Pentru planificarea unei notificări locale pe Android folosiți NotificationManager împreună cu AlarmManager. Începând cu Android 8+ trebuie creat mai întâi un canal de notificări, altfel notificarea nu va fi afișată.

kotlin
val channelId = "reminder_channel"
val notificationId = "task_reminder_42"

val channel = NotificationChannel(
    channelId,
    "Mementouri",
    NotificationManager.IMPORTANCE_HIGH
).apply {
    description = "Canal pentru mementouri de sarcini"
}

val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)

val intent = Intent(this, ReminderReceiver::class.java).apply {
    putExtra("notification_id", notificationId)
    putExtra("channel_id", channelId)
}

val pendingIntent = PendingIntent.getBroadcast(
    this, notificationId.hashCode(),
    intent, PendingIntent.FLAG_UPDATE_CURRENT
)

val alarmManager = getSystemService(AlarmManager::class.java)
alarmManager.setExact(
    AlarmManager.RTC_WAKEUP,
    triggerTimeMillis,
    pendingIntent
)

Pe Android 12+ verificați permisiunea SCHEDULE_EXACT_ALARM înainte de a apela setExact. Dacă permisiunea nu a fost acordată — folosiți setWindow, care garantează livrarea într-o fereastră de timp.

Procesarea în BroadcastReceiver

La activarea AlarmManager, sistemul trimite un Intent de difuzare care este recepționat de BroadcastReceiver. În interiorul acestuia trebuie creată și afișată notificarea prin NotificationManager. Asigurați-vă că PendingIntent folosește FLAG_UPDATE_CURRENT, altfel la modificarea datelor notificările vechi vor continua să folosească Intent-ul învechit.

Exemplu de planificare pe iOS

Pe iOS notificările locale se creează prin UNUserNotificationCenter folosind UNMutableNotificationContent și unul dintre declanșatoare. Înainte de planificare trebuie solicitată permisiunea utilizatorului.

swift
import UserNotifications

let center = UNUserNotificationCenter.current()

center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
    guard granted else { return }
}

let content = UNMutableNotificationContent()
content.title = "Memento de sarcină"
content.body = "Nu uitați să finalizați raportul până la 18:00"
content.sound = .default
content.userInfo = ["task_id": "42"]

let trigger = UNTimeIntervalNotificationTrigger(
    timeInterval: 3600,
    repeats: false
)

let request = UNNotificationRequest(
    identifier: "task_reminder_42",
    content: content,
    trigger: trigger
)

center.add(request)

iOS suportă până la 64 de cereri simultane de notificări locale. Dacă limita este depășită — sistemul respinge cererile noi până când cele active sunt livrate sau anulate. Folosiți getPendingNotificationRequests pentru a verifica coada curentă.

Procesarea răspunsului delegatului

Când utilizatorul interacționează cu o notificare locală iOS, este apelată metoda userNotificationCenter:didReceive response a delegatului UNUserNotificationCenterDelegate. În această metodă sunt disponibile identificatorul cererii, actionIdentifier (care buton a fost apăsat) și userInfo personalizat. Acest lucru permite diferențierea între deschiderea simplă a notificării și apăsarea unui buton specific.

Cele mai bune practici pentru notificări locale

Pentru ca notificările locale să fie utile și să nu deranjeze utilizatorul, respectați câteva reguli cheie. Prima: controlați frecvența — nu mai mult de 2–3 notificări pe zi pentru evenimente non-critice, altfel utilizatorul va dezactiva toate notificările aplicației.

A doua: oferiți utilizatorului alegere. Adăugați în interfață posibilitatea de a dezactiva anumite tipuri de notificări locale. Pe Android este convenabil să folosiți un NotificationChannel separat cu importanță scăzută, pe iOS — o categorie separată în setările aplicației.

A treia: relevanță contextuală — notificarea ar trebui să apară când este necesară utilizatorului. Declanșatoarele geo sunt ideale pentru memento-uri despre treburi lângă casă, cele calendaristice — pentru întâlniri, cele pe interval — pentru acțiuni regulate precum băutul apei sau întinderile. Nu amestecați tipurile fără necesitate.

A patra: testați pe dispozitive reale. Simulatorul iOS nu emulează toate scenariile de livrare a notificărilor locale, în special în fundal. Pe Android folosiți adb shell dumpsys notification pentru a verifica coada notificărilor planificate și parametrii acestora. A cincea: oferiți întotdeauna utilizatorului posibilitatea de a dezactiva notificările prin interfața aplicației — aceasta este o cerință obligatorie de UX și a ghidurilor App Store Review.

Întrebări frecvente

Cu ce se diferențiază notificarea locală de push?

Notificarea locală este planificată și livrată de dispozitiv fără participarea serverului. Notificarea push necesită un serviciu extern (FCM, APNS) și conexiune la internet. Cele locale funcționează offline, push — doar cu acces la rețea.

Câte notificări locale pot fi planificate?

iOS limitează la 64 de cereri planificate simultan. Android nu are o limită strictă, dar peste 500 de notificări poate reduce performanța sistemului și poate afecta timpul de livrare.

Pot anula o notificare locală după planificare?

Da, pe iOS folosiți removePendingNotificationRequests cu identificatorul cererii. Pe Android apelați NotificationManager.cancel sau anulați PendingIntent prin AlarmManager. Un identificator unic este obligatoriu pentru anulare.

Este necesară permisiunea utilizatorului pentru notificările locale?

Pe iOS permisiunea se solicită obligatoriu prin requestAuthorization. Pe Android 13+ (Tiramisu) este necesară și permisiunea POST_NOTIFICATIONS. Versiunile mai vechi de Android nu necesită permisiune explicită pentru notificări locale.

Cum adaug butoane la o notificare locală?

Pe iOS creați UNNotificationAction și adăugați în UNNotificationCategory. Pe Android folosiți NotificationCompat.Builder.addAction cu PendingIntent pentru BroadcastReceiver. Fiecare buton declanșează o acțiune separată în aplicație.

Rezumat

  • Notificările locale — mesaje planificate și livrate de dispozitiv fără infrastructură de server
  • UNUserNotificationCenter — API-ul principal pentru lucrul cu notificări locale pe iOS
  • NotificationManager — API-ul principal pentru lucrul cu notificări locale pe Android
  • Tipuri de declanșatoare — interval de timp, dată calendaristică, geolocație și livrare necondiționată
  • Limite — iOS limitează la 64 de cereri planificate, Android nu are o limită strictă
  • Permisiuni — pe iOS și Android 13+ este necesară acordul explicit al utilizatorului pentru afișarea notificărilor
  • Offline — notificările locale funcționează fără conexiune la internet, ceea ce le face mai fiabile decât push

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.

Discutați proiectul

Citiți și