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:
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:
Wenn der Nutzer die Berechtigung gewährt, aktualisiert das System den Bildschirm App-Info, wie in Abbildung 3 dargestellt:
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:
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.