Zeitkritische Benachrichtigungen anzeigen

In bestimmten Situationen, z. B. bei einem laufenden Wecker oder einem eingehenden Anruf, muss deine App möglicherweise dringend die Aufmerksamkeit des Nutzers erregen. Auf Geräten mit Android 9 (API-Level 28) oder niedriger können Sie dies tun, indem Sie eine Aktivität starten, während die App im Hintergrund ausgeführt wird. 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) musst du die Berechtigung POST_NOTIFICATIONS in deiner AndroidManifest.xml-Datei 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

Erstelle einen Benachrichtigungskanal, um Benachrichtigungen anzuzeigen und Nutzern die Möglichkeit zu geben, Benachrichtigungskategorien in den Systemeinstellungen zu verwalten. 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 Kanal auf dem Bildschirm App-Info angezeigt, wie in Abbildung 1 dargestellt:

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 Berechtigungen zum Senden von Benachrichtigungen anfordern, bevor Sie Nutzern Benachrichtigungen anzeigen.

Im folgenden Codebeispiel wird gezeigt, wie Sie in Jetpack Compose die Berechtigung zum Senden von Benachrichtigungen zur Laufzeit 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 zum Senden von Benachrichtigungen.

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

Der Bildschirm „App-Info“ mit den 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 Kanal 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 du dem Nutzer die Benachrichtigung anzeigst, kann er die Warnung oder Erinnerung deiner App bestätigen oder schließen. Der Nutzer kann beispielsweise einen eingehenden Anruf annehmen oder ablehnen.

Wenn die Benachrichtigung eine laufende Hintergrundaufgabe darstellt, z. B. einen aktiven Telefonanruf, verknüpfen Sie die Benachrichtigung mit einem Dienst im Vordergrund. Das folgende Code-Snippet zeigt, wie eine Benachrichtigung angezeigt wird, 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. Du kannst laufende Benachrichtigungen als Livemeldungen bewerben, um Statusinformationen auf verschiedenen Oberflächen der System-UI anzuzeigen.