Push-Benachrichtigungen mit Cloud Messaging
FCM-Benachrichtigungen senden und empfangen
Push-Benachrichtigungen mit Cloud Messaging ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Cloud Messaging?
Firebase Cloud Messaging (FCM) übermittelt Push-Benachrichtigungen und Datennachrichten an Ihre App — auch wenn sie geschlossen ist.
Der Ablauf ist einfach:
- Jede App-Installation erhält ein eindeutiges Registrierungstoken.
- Ihr Server (oder die Firebase Console) sendet eine Nachricht an dieses Token oder an ein Topic.
- FCM leitet sie an das Gerät weiter, das sie anzeigt oder verarbeitet.
Die Messaging-Abhängigkeit hinzufügen
FCM ist in der Bibliothek firebase-messaging enthalten, deren Version durch die zuvor eingerichtete BoM festgelegt wird.
Wenn die BoM vorhanden ist, ist keine Versionsnummer erforderlich.
// app/build.gradle.kts
dependencies {
implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
implementation("com.google.firebase:firebase-messaging")
}Die Benachrichtigungsberechtigung
Unter Android 13 (API 33) und höher ist zum Senden von Benachrichtigungen die Laufzeitberechtigung POST_NOTIFICATIONS erforderlich.
Deklarieren Sie sie im Manifest und fordern Sie sie anschließend zur Laufzeit an — ohne Erteilung der Berechtigung werden Ihre Benachrichtigungen stillschweigend verworfen.
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />Die Berechtigung anfordern
Verwenden Sie die Activity Result API, um POST_NOTIFICATIONS zur Laufzeit anzufordern. Fordern Sie die Berechtigung nur ab API 33 an; ältere Versionen erteilen sie implizit.
import android.Manifest
import android.os.Build
import androidx.activity.result.contract.ActivityResultContracts
val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { granted ->
println(if (granted) "Notifications allowed" else "Notifications denied")
}
fun askNotificationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermission.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}Das Registrierungstoken
Jede Installation besitzt ein eindeutiges FCM-Token, das sie als Ziel identifiziert. Rufen Sie es mit Firebase.messaging.token ab.
Senden Sie dieses Token an Ihr Backend, damit es genau dieses Gerät erreichen kann. Tokens können sich ändern; behandeln Sie daher immer das neueste Token als maßgeblich.
import com.google.firebase.Firebase
import com.google.firebase.messaging.messaging
import kotlinx.coroutines.tasks.await
suspend fun currentToken(): String {
return Firebase.messaging.token.await()
}Der Messaging-Service
Um Nachrichten zu empfangen, erweitern Sie FirebaseMessagingService. Überschreiben Sie onMessageReceived, um eingehende Payloads zu verarbeiten, und onNewToken, um auf eine Token-Erneuerung zu reagieren.
Registrieren Sie den Service mit dem FCM-Intent-Filter im Manifest.
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
class MyFcmService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
// Upload the fresh token to your backend
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
val title = message.notification?.title ?: "New message"
val body = message.notification?.body ?: ""
showNotification(title, body)
}
private fun sendTokenToServer(token: String) { /* ... */ }
private fun showNotification(title: String, body: String) { /* ... */ }
}Den Service registrieren
Deklarieren Sie Ihren Service im Manifest, damit Android Nachrichten an ihn zustellen kann. Der MESSAGING_EVENT-Intent-Filter ist erforderlich.
<!-- AndroidManifest.xml inside <application> -->
<service
android:name=".MyFcmService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>Benachrichtigungs- und Datennachrichten
FCM-Nachrichten gibt es in zwei Varianten:
- Benachrichtigungsnachrichten — FCM zeigt sie automatisch im Benachrichtigungsbereich an, wenn die App im Hintergrund ausgeführt wird;
onMessageReceivedwird nur ausgelöst, wenn die App im Vordergrund ist. - Datennachrichten — sie werden immer als Schlüssel-Wert-Zuordnung an
onMessageReceivedübergeben, sodass Sie die Verarbeitung selbst steuern können.
Lesen Sie benutzerdefinierte Felder aus message.data aus.
import com.google.firebase.messaging.RemoteMessage
fun handle(message: RemoteMessage) {
val type = message.data["type"] // your custom field
val itemId = message.data["itemId"]
when (type) {
"chat" -> openChat(itemId)
"promo" -> openPromo(itemId)
}
}
fun openChat(id: String?) {}
fun openPromo(id: String?) {}Einen Benachrichtigungskanal erstellen
Seit Android 8 benötigt jede Benachrichtigung einen Kanal. Erstellen Sie ihn einmal beim Start; das System verwendet den Kanal, um Ton, Wichtigkeit und die benutzerspezifischen Einstellungen für diesen Kanal zu steuern.
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
fun createChannel(context: Context) {
val channel = NotificationChannel(
"messages",
"Messages",
NotificationManager.IMPORTANCE_HIGH
)
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}Die Benachrichtigung anzeigen
Erstellen Sie die Benachrichtigung mit NotificationCompat.Builder, verknüpfen Sie sie mit der ID Ihres Kanals und veröffentlichen Sie sie anschließend mit NotificationManagerCompat.
Beachten Sie: Ab API 33 wird sie nur angezeigt, wenn der Benutzer POST_NOTIFICATIONS erlaubt hat.
import android.content.Context
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
fun showNotification(context: Context, title: String, body: String) {
val notification = NotificationCompat.Builder(context, "messages")
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.build()
NotificationManagerCompat.from(context).notify(1, notification)
}Topic-Abonnements
Statt einzelne Tokens zu verwalten, können Sie an ein Topic senden. Clients abonnieren einen Topic-Namen, und Ihr Server sendet eine Nachricht an alle Abonnenten.
Das eignet sich beispielsweise für Ankündigungen zu news, sports oder all-users.
import com.google.firebase.Firebase
import com.google.firebase.messaging.messaging
import kotlinx.coroutines.tasks.await
suspend fun subscribeToNews() {
Firebase.messaging.subscribeToTopic("news").await()
}
suspend fun unsubscribeFromNews() {
Firebase.messaging.unsubscribeFromTopic("news").await()
}Kurze Überprüfung
Ihre App befindet sich im Hintergrund und empfängt von FCM eine reine Benachrichtigungsnachricht. Was geschieht?
Zusammenfassung: Cloud Messaging
Sie können Benutzer jetzt mit Push-Benachrichtigungen erreichen:
- Fügen Sie
firebase-messaginghinzu und fordern Sie POST_NOTIFICATIONS ab API 33 an. - Jede Installation besitzt ein FCM-Token; laden Sie es auf Ihren Server hoch.
- Erweitern Sie
FirebaseMessagingServiceund überschreiben SieonMessageReceived/onNewToken. - Kennen Sie den Unterschied zwischen Benachrichtigungs- und Datennachrichten.
- Erstellen Sie einen Benachrichtigungskanal, erstellen Sie Benachrichtigungen mit
NotificationCompatoder senden Sie sie über Topics.
Damit ist das Firebase-Trio vollständig: Auth, Firestore und Messaging — ein vollständiges Backend für Ihre Android-App.
Häufig gestellte Fragen
Ist die Lektion „Push-Benachrichtigungen mit Cloud Messaging“ kostenlos?
Ja — der vollständige Text von „Push-Benachrichtigungen mit Cloud Messaging“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Push-Benachrichtigungen mit Cloud Messaging“?
FCM-Benachrichtigungen senden und empfangen Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Android Academy zu starten?
Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Push-Benachrichtigungen mit Cloud Messaging“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?
Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Firebase einrichten
- Firebase Authentication
- Grundlagen von Cloud Firestore
- Push-Benachrichtigungen mit Cloud Messaging