Zeitkritische Benachrichtigungen anzeigen

In bestimmten Situationen muss Ihre App die Aufmerksamkeit des Nutzers dringend auf sich ziehen, z. B. bei einem laufenden Wecker oder einem eingehenden Anruf. Auf Geräten mit Android 9 (API‑Level 28) oder niedriger können Sie dies möglicherweise durch Starten einer Aktivität im Hintergrund beheben. In diesem Dokument wird beschrieben, wie Sie dieses Verhalten auf Geräten mit Android 10 (API-Level 29) und höher erreichen.

Berechtigung POST_NOTIFICATIONS hinzufügen

Ab Android 13 (API‑Level 33) müssen Sie die Berechtigung POST_NOTIFICATIONS in Ihrer Datei AndroidManifest.xml deklarieren:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

Nachdem Sie die Berechtigung deklariert haben, erstellen Sie einen Benachrichtigungskanal.

Benachrichtigungskanal erstellen

Erstellen Sie einen Benachrichtigungskanal, um Benachrichtigungen anzuzeigen und Nutzern die Verwaltung von Benachrichtigungskategorien in den Systemeinstellungen zu ermöglichen. Weitere Informationen zu Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.

Erstellen Sie Ihre Benachrichtigungskanäle in der Methode onCreate Ihrer Klasse Application:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        val channel = NotificationChannel(
            CHANNEL_ID,
            "High priority notifications",
            NotificationManager.IMPORTANCE_HIGH
        )

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}

Wenn der Nutzer die App zum ersten Mal ausführt, wird der Channel auf dem Bildschirm App-Info angezeigt (siehe Abbildung 1):

Der Benachrichtigungsbildschirm „App-Info“ mit dem erstellten Kanal.
Abbildung 1. Abschnitt „Benachrichtigungen“ auf dem Bildschirm App-Info in den Systemeinstellungen der App.

Berechtigungen zum Senden von Benachrichtigungen verwalten

Ab Android 13 müssen Sie Benachrichtigungsberechtigungen anfordern, bevor Sie Nutzern Benachrichtigungen anzeigen.

Das folgende Codebeispiel zeigt, wie Sie in Jetpack Compose die Berechtigung für Laufzeitbenachrichtigungen anfordern:

val permissionLauncher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission(),
    onResult = { hasNotificationPermission = it }
)
// ...
Button(
    onClick = {
        if (!hasNotificationPermission) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
            }
        }
    },
) {
    Text(text = "Request permission")
}

Auf Geräten mit Android 13 und höher wird durch Tippen auf die Schaltfläche Berechtigung anfordern das in Abbildung 2 gezeigte Systemdialogfeld angezeigt:

Das Systemdialogfeld, in dem der Nutzer aufgefordert wird, Benachrichtigungen zuzulassen.
Abbildung 2. Systemdialogfeld für die Berechtigungsanfrage für Benachrichtigungen.

Wenn der Nutzer die Berechtigung erteilt, aktualisiert das System den Bildschirm App-Info, wie in Abbildung 3 dargestellt:

Der Bildschirm „App-Info“ mit erteilten Berechtigungen zum Senden von Benachrichtigungen.
Abbildung 3. Berechtigung zum Senden von Benachrichtigungen erteilt.

Benachrichtigung mit hoher Priorität erstellen

Wenn Sie eine Benachrichtigung mit hoher Priorität erstellen, geben Sie einen klaren Titel und Nachrichtentext an. Weisen Sie außerdem einen Channel mit hoher Wichtigkeit und eine Prioritätsstufe zu.

Im folgenden Codebeispiel wird eine Benachrichtigung mit hoher Priorität konfiguriert und erstellt:

private fun showNotification() {
    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

    val notificationBuilder =
        NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.baseline_auto_awesome_24)
            .setContentTitle("HIGH PRIORITY")
            .setContentText("Check this dog puppy video NOW!")
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION)

    notificationManager.notify(0, notificationBuilder.build())
}

Benachrichtigung für den Nutzer anzeigen

Durch den Aufruf der Funktion showNotification wird die Benachrichtigung so ausgelöst:

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

Abbildung 4 zeigt die vom System angezeigte Benachrichtigung mit hoher Priorität:

Eine Benachrichtigung mit hoher Priorität, die auf dem Gerät angezeigt wird.
Abbildung 4. Eine Benachrichtigung mit hoher Priorität.

Benachrichtigung über laufende Aktivitäten

Wenn Sie dem Nutzer Ihre Benachrichtigung anzeigen, kann er die Benachrichtigung oder Erinnerung Ihrer App bestätigen oder schließen. So kann der Nutzer beispielsweise einen eingehenden Anruf annehmen oder ablehnen.

Wenn Ihre Benachrichtigung eine laufende Hintergrundaufgabe wie einen aktiven Anruf darstellt, verknüpfen Sie die Benachrichtigung mit einem Dienst im Vordergrund. Das folgende Code-Snippet zeigt, wie Sie eine Benachrichtigung anzeigen, die mit einem Dienst im Vordergrund verknüpft ist:

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

Livemeldungen verwenden

Zeitkritische laufende Benachrichtigungen können von einer erhöhten Sichtbarkeit profitieren. Sie können laufende Benachrichtigungen als Live-Updates bewerben, um Statusinformationen auf allen Oberflächen der System-UI anzuzeigen.