Android Academy · Lektion

Pushnotiser

Skicka pushnotiser via Firebase Cloud Messaging. Konfigurera FCM, skapa notiskanaler, bygg notiser med åtgärder och hantera leverans i förgrunden respektive bakgrunden.

Lektion 4 av 613 steg

Pushnotiser är en gratis lektion i Android Academy på CoddyKit. Detta är lektion 4 av 6. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Android Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Android Academy innehåller totalt 6 lektioner.

Vad är pushnotiser?

Pushnotiser gör att servern kan skicka meddelanden till användare även när appen inte är i förgrunden. Vanliga användningsområden är:

  • aviseringar om nya meddelanden
  • uppdateringar av orderstatus
  • senaste nytt
  • påminnelser och erbjudanden

I Android är Firebase Cloud Messaging (FCM) standardtjänsten för pushleverans.

Översikt över FCM

Flödet för Firebase Cloud Messaging (FCM):

  1. Appen registreras hos FCM vid första starten → tar emot en token för enheten
  2. Appen skickar token till Er server
  3. När Ni vill skicka en push skickar Er server ett meddelande till FCM
  4. FCM levererar det till enheten

FCM är kostnadsfritt, tillförlitligt och fungerar även när appen har avslutats.

Lägga till Firebase i projektet

Så här lägger Ni till Firebase:

  1. Gå till Firebase Console → Add project → Add Android app
  2. Registrera appen med paketnamnet
  3. Ladda ned google-services.json och placera den i app/
  4. Lägg till plugin-program och beroenden
// project/build.gradle:
buildscript {
    dependencies { classpath 'com.google.gms:google-services:4.4.1' }
}

// app/build.gradle:
plugins { id 'com.google.gms.google-services' }

dependencies {
    implementation platform('com.google.firebase:firebase-bom:32.7.4')
    implementation 'com.google.firebase:firebase-messaging-ktx'
}

FCM-behörighet (Android 13+)

Från och med Android 13 (API 33) måste Ni begära behörigheten POST_NOTIFICATIONS under körning — precis som en farlig behörighet:

<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

// In Activity (Android 13+):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    requestPermissionLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS)
}

FirebaseMessagingService

Skapa en tjänst som hanterar inkommande FCM-meddelanden och token-uppdateringar:

class MyFirebaseService : FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        // Send token to your backend to enable push delivery
        sendTokenToServer(token)
    }

    override fun onMessageReceived(message: RemoteMessage) {
        val title = message.notification?.title ?: "New Message"
        val body  = message.notification?.body  ?: ""
        showNotification(title, body)
    }
}

Registrera tjänsten i manifestet

Deklarera tjänsten i AndroidManifest.xml:

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

Notiskanaler (Android 8+)

Sedan Android 8 (Oreo) måste notiser tilldelas en kanal. Användarna kan styra ljud, vibration och viktighet för varje kanal:

fun createNotificationChannel(context: Context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val channel = NotificationChannel(
            "messages_channel",           // channel ID
            "Messages",                   // user-visible name
            NotificationManager.IMPORTANCE_HIGH
        ).apply {
            description = "Incoming message notifications"
            enableVibration(true)
        }
        val manager = context.getSystemService(NotificationManager::class.java)
        manager.createNotificationChannel(channel)
    }
}

Skapa och visa en notis

Använd NotificationCompat.Builder för kompatibilitet mellan Android-versioner:

fun showNotification(context: Context, title: String, body: String) {
    val intent = Intent(context, MainActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(
        context, 0, intent,
        PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
    )

    val notification = NotificationCompat.Builder(context, "messages_channel")
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle(title)
        .setContentText(body)
        .setPriority(NotificationCompat.PRIORITY_HIGH)
        .setAutoCancel(true)             // dismiss on tap
        .setContentIntent(pendingIntent) // open app on tap
        .build()

    NotificationManagerCompat.from(context)
        .notify(System.currentTimeMillis().toInt(), notification)
}

Notis med åtgärder

Lägg till åtgärdsknappar i notiser så att användarna kan agera utan att öppna appen:

val replyIntent = Intent(context, ReplyReceiver::class.java)
val replyPending = PendingIntent.getBroadcast(
    context, 1, replyIntent,
    PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)

val notification = NotificationCompat.Builder(context, "messages_channel")
    .setSmallIcon(R.drawable.ic_notification)
    .setContentTitle("New message from Alice")
    .setContentText("Hey, are you coming?")
    .addAction(R.drawable.ic_reply, "Reply", replyPending)
    .addAction(R.drawable.ic_dismiss, "Dismiss", null)
    .build()

Hantering i förgrunden och bakgrunden

FCM fungerar olika beroende på appens tillstånd:

  • Appen i förgrunden — onMessageReceived() anropas; Ni skapar och visar notisen själv
  • Appen i bakgrunden eller avslutad — FCM visar automatiskt notisen från nyttolasten notification; onMessageReceived anropas INTE

Placera extra data i nyttolasten data (inte notification) för att alltid ta emot den i onMessageReceived.

Hämta FCM-token

Hämta den aktuella FCM-token för att skicka den till Er server:

FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w("FCM", "Fetching token failed", task.exception)
        return@addOnCompleteListener
    }
    val token = task.result
    Log.d("FCM", "Token: $token")
    // Send token to your server
    sendTokenToServer(token)
}

Snabbkontroll

Vad händer när appen är i bakgrunden och FCM levererar ett meddelande med en nyttolast av typen 'notification'?

Sammanfattning: Pushnotiser

Pushnotiser med FCM i Android:

  • Lägg till Firebase, google-services.json och firebase-messaging-ktx
  • Begär POST_NOTIFICATIONS i Android 13+
  • Skapa FirebaseMessagingService → onNewToken + onMessageReceived
  • Skapa en NotificationChannel för Android 8+
  • Skapa notiser med NotificationCompat.Builder
  • Använd nyttolasten data för att alltid ta emot den i onMessageReceived

Nästa steg: schemalägg bakgrundsarbete med WorkManager.

Gratis att börja

Lär dig Kotlin med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
36
Lektioner
152

Vanliga frågor

Är lektionen ”Pushnotiser” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Android Academy, inklusive ”Pushnotiser”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Android Academy innehåller totalt 6 lektioner.

Vad lär jag mig i ”Pushnotiser”?

Skicka pushnotiser via Firebase Cloud Messaging. Konfigurera FCM, skapa notiskanaler, bygg notiser med åtgärder och hantera leverans i förgrunden respektive bakgrunden. Ni övar på Android Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Android Academy?

Du behöver inga förkunskaper. Utbildningen i Android Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 6.

Hur lång tid tar lektionen ”Pushnotiser”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Android Academy-lektionen?

Ja. Varje Android Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Retrofit och REST-API:er
  2. Ladda bilder med Coil
  3. Felhantering och UX
  4. Pushnotiser
  5. WorkManager och bakgrundsjobb
  6. Publicera i Play Store
← Tillbaka till Android Academy