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. In Apps, die auf Geräte mit Android 9 (API-Level 28) oder niedriger ausgerichtet sind, 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) bis Android 13 (API‑Level 33) erreichen.

Berechtigung POST_NOTIFICATIONS hinzufügen

Fügen Sie ab Android 13 der Datei AndroidManifest.xml die folgende Zeile hinzu:

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

Sobald Sie diese haben, können Sie einen Benachrichtigungskanal erstellen.

Benachrichtigungskanal erstellen

Erstellen Sie einen Benachrichtigungskanal, damit Ihre Benachrichtigungen richtig angezeigt werden und Nutzer Benachrichtigungen in den App-Einstellungen verwalten können. Weitere Informationen zu Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle erstellen und verwalten.

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

Kotlin

class DACapp : 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 Ihre App zum ersten Mal ausführt, sieht er in der Systemanzeige App-Info Ihrer App etwas wie in Abbildung 1:

Ein Bild, auf dem die App-Info und der Benachrichtigungsbildschirm Ihrer App zu sehen sind.
Abbildung 1. Abschnitt „Benachrichtigungen“ auf dem Bildschirm App-Info in den Systemeinstellungen der App.

Berechtigungen für Benachrichtigungen verwalten

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

Die Mindestimplementierung sieht so aus:

Kotlin

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")
}

Wenn auf Ihrem Gerät Android 13 ausgeführt wird, wird durch Tippen auf die Schaltfläche Request permission das Dialogfeld in Abbildung 2 aufgerufen:

Bild mit dem Dialogfeld für die Berechtigungsanfrage
Abbildung 2. Systemdialogfeld für die Anfrage zur Benachrichtigungsberechtigung.

Wenn der Nutzer die Berechtigungsanfrage akzeptiert, sieht der Bereich App-Informationen der App wie in Abbildung 3 aus:

Ein Bild, das den Bildschirm „App-Info“ nach der erteilten Berechtigungsanfrage für Benachrichtigungen zeigt
Abbildung 3. Berechtigungen zum Senden von Benachrichtigungen erteilt.

Benachrichtigung mit hoher Priorität erstellen

Geben Sie beim Erstellen der Benachrichtigung einen aussagekräftigen Titel und eine aussagekräftige Nachricht an.

Das folgende Beispiel enthält eine Benachrichtigung:

Kotlin

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(666, notificationBuilder.build())
}

Benachrichtigung für den Nutzer anzeigen

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

Kotlin

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

Die Benachrichtigung in diesem Beispiel sieht so aus wie in Abbildung 4:

Ein Bild mit einer Benachrichtigung mit hoher Priorität
Abbildung 4: Eine Benachrichtigung mit hoher Priorität.

Benachrichtigung über laufende Aktivitäten

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

Wenn es sich bei Ihrer Benachrichtigung um eine laufende Benachrichtigung handelt, z. B. einen eingehenden Anruf, ordnen Sie die Benachrichtigung einem Vordergrunddienst zu. Das folgende Code-Snippet zeigt, wie eine Benachrichtigung angezeigt wird, die mit einem Vordergrunddienst verknüpft ist:

Kotlin

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

Java

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