0Pricing
Android Academy · Lektion

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; onMessageReceived wird 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-messaging hinzu und fordern Sie POST_NOTIFICATIONS ab API 33 an.
  • Jede Installation besitzt ein FCM-Token; laden Sie es auf Ihren Server hoch.
  • Erweitern Sie FirebaseMessagingService und überschreiben Sie onMessageReceived / onNewToken.
  • Kennen Sie den Unterschied zwischen Benachrichtigungs- und Datennachrichten.
  • Erstellen Sie einen Benachrichtigungskanal, erstellen Sie Benachrichtigungen mit NotificationCompat oder 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

  1. Firebase einrichten
  2. Firebase Authentication
  3. Grundlagen von Cloud Firestore
  4. Push-Benachrichtigungen mit Cloud Messaging
← Zurück zu Android Academy