Skip to content

Cum să implementezi notificări push în aplicații mobile

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să implementezi notificări push în aplicații mobile. We cover key concepts, practical examples, and best practices.

În acest ghid rapid vei învăța cum să implementezi notificări push în aplicațiile tale mobile, folosind Firebase Cloud Messaging și gestionând primirea și afișarea notificărilor.

The Problem

Notificările push sunt esențiale pentru reangajarea utilizatorilor, dar implementarea corectă pe Android și iOS implică configurarea serviciilor de notificări, gestionarea permisiunilor și tratarea diferitelor stări ale aplicației.

The Wrong Way

// Notificare locală hardcodată — nu este push
val notification = NotificationCompat.Builder(this, "channel")
    .setContentTitle("Test")
    .setSmallIcon(R.drawable.ic_notification)
    .build()

The Right Way

class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onMessageReceived(message: RemoteMessage) {
        val title = message.notification?.title ?: "Notificare"
        val body = message.notification?.body ?: ""
        
        val channel = NotificationChannel(
            "general", "General", NotificationManager.IMPORTANCE_HIGH
        )
        val manager = getSystemService(NotificationManager::class.java)
        manager.createNotificationChannel(channel)
        
        val notification = NotificationCompat.Builder(this, "general")
            .setContentTitle(title)
            .setContentText(body)
            .setSmallIcon(R.drawable.ic_notification)
            .setAutoCancel(true)
            .build()
        
        manager.notify(System.currentTimeMillis().toInt(), notification)
    }
}

Output: Notificarea push apare pe dispozitiv indiferent dacă aplicația este deschisă sau în fundal.

Step-by-Step Fix

1. Adaugă Firebase la proiect

// build.gradle (app level)
implementation("com.google.firebase:firebase-messaging:24.0.0")

2. Configurează serviciul în AndroidManifest.xml

<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

3. Solicită permisiunea pe iOS

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
    if granted {
        DispatchQueue.main.async {
            application.registerForRemoteNotifications()
        }
    }
}

4. Trimite o notificare de test de pe server

curl -X POST https://fcm.googleapis.com/fcm/send \
  -H "Authorization: key=SERVER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":"DEVICE_TOKEN","notification":{"title":"Test","body":"Notificare de test"}}'

Prevention Tips

  • Testează notificările atât în foreground, cât și în background
  • Gestionează click-ul pe notificare pentru a deschide ecranul corect
  • Păstrează token-ul FCM actualizat pe server
  • Folosește canale de notificare diferite pe Android pentru diferite tipuri

Common Mistakes

  1. Fără canal de notificare pe Android 8+ — notificarea nu se afișează deloc
  2. Permisiune nerespectată pe iOS — fără cerere explicită, utilizatorul nu primește notificări
  3. Token FCM neactualizat — notificările eșuează silențios când token-ul expiră
  4. Payload prea mare — FCM limitează payload-ul la 4KB
  5. Confuzia între notification și data messages — notificările sunt gestionate automat de sistem, data messages ajung în onMessageReceived

FAQ

### Ce este FCM?

Firebase Cloud Messaging (FCM) este un serviciu gratuit de notificări push care funcționează pe Android, iOS și web.

Notificările push funcționează și pe iOS?

Da, FCM trimite notificări și pe iOS prin intermediul APNs (Apple Push Notification service).

Care este diferența dintre notificare push și notificare locală?

Notificarea push vine de la un server extern, în timp ce notificarea locală este generată de aplicație pe dispozitiv.

Cum testez notificările fără server?

Folosește Firebase Console > Cloud Messaging > Send Your First Message, sau trimite cu curl.

Ce se întâmplă când utilizatorul neagă permisiunea?

Aplicația nu va mai primi token FCM valid. Trebuie să solicite din nou permisiunea sau să ghideze utilizatorul către Settings.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with mobile technologies for enhanced productivity and security.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro