Pushnotiser
Skicka pushnotiser via Firebase Cloud Messaging. Konfigurera FCM, skapa notiskanaler, bygg notiser med åtgärder och hantera leverans i förgrunden respektive bakgrunden.
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):
- Appen registreras hos FCM vid första starten → tar emot en token för enheten
- Appen skickar token till Er server
- När Ni vill skicka en push skickar Er server ett meddelande till FCM
- 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:
- Gå till Firebase Console → Add project → Add Android app
- Registrera appen med paketnamnet
- Ladda ned
google-services.jsonoch placera den iapp/ - 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;onMessageReceivedanropas 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.jsonochfirebase-messaging-ktx - Begär
POST_NOTIFICATIONSi Android 13+ - Skapa
FirebaseMessagingService→onNewToken+onMessageReceived - Skapa en
NotificationChannelfö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.
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
- Retrofit och REST-API:er
- Ladda bilder med Coil
- Felhantering och UX
- Pushnotiser
- WorkManager och bakgrundsjobb
- Publicera i Play Store