Ab Android 8.0 (API-Level 26) müssen alle Benachrichtigungen einer Kanal. Sie können für jeden Kanal das visuelle und akustische Verhalten festlegen, wird auf alle Benachrichtigungen in diesem Kanal angewendet. Nutzer können diese Einstellungen ändern und entscheiden, welche Benachrichtigungskanäle aufdringlich oder sichtbar sind.
Das folgende Video bietet einen Überblick über Kanäle und andere Benachrichtigungen. in Android 8.0 unterstützt.
Die Nutzereinstellungen für Benachrichtigungskanäle sind für jede App in der Systemeinstellungen, wie in Abbildung 1 dargestellt.
Nachdem du einen Benachrichtigungskanal erstellt hast, kannst du die Benachrichtigung nicht mehr ändern Verhaltensweisen. Zu diesem Zeitpunkt hat der Nutzer die vollständige Kontrolle. Sie können jedoch den Namen und die Beschreibung eines Kanals ändern.
Erstelle einen Kanal für jede Art von Benachrichtigung, die du senden möchtest. Sie können auch Erstellen von Benachrichtigungskanälen, um die von den Nutzenden getroffenen Entscheidungen widerzuspiegeln. Zum Beispiel haben Sie können separate Benachrichtigungskanäle für jede Konversationsgruppe einrichten, die von in einer Messaging-App angezeigt wird.
Wenn deine App auf Android 8.0 (API-Level 26) oder höher ausgerichtet ist, musst du eine oder
weitere Benachrichtigungskanäle. Wenn Ihre targetSdkVersion
auf 25 oder niedriger eingestellt ist,
Wenn Ihre App unter Android 8.0 (API-Level 26) oder höher läuft, verhält sie sich gleich.
etwa auf Geräten mit Android 7.1 (API-Level 25) oder niedriger.
Benachrichtigungskanal erstellen
So erstellen Sie einen Benachrichtigungskanal:
Ein Objekt
NotificationChannel
mit einer eindeutigen Kanal-ID, einem für den Nutzer sichtbaren Namen und der Prioritätsstufe.Geben Sie optional die Beschreibung an, die dem Nutzer in den Systemeinstellungen angezeigt wird mit
setDescription()
Registrieren Sie den Benachrichtigungskanal, indem Sie ihn an
createNotificationChannel()
Das folgende Beispiel zeigt, wie Sie einen Benachrichtigungskanal erstellen und registrieren:
Kotlin
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create the NotificationChannel. val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_DEFAULT val mChannel = NotificationChannel(CHANNEL_ID, name, importance) mChannel.description = descriptionText // Register the channel with the system. You can't change the importance // or other notification behaviors after this. val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(mChannel) }
Java
private void createNotificationChannel() { // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is not in the Support Library. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { CharSequence name = getString(R.string.channel_name); String description = getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); channel.setDescription(description); // Register the channel with the system. You can't change the importance // or other notification behaviors after this. NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); } }
Wenn Sie einen vorhandenen Benachrichtigungskanal mit seinen ursprünglichen Werten neu erstellen, daher können Sie diesen Code bedenkenlos beim Starten einer App aufrufen.
Standardmäßig werden für alle auf einem Kanal
geposteten Benachrichtigungen das visuelle und
akustische Verhaltensweisen, die durch die Wichtigkeitsstufe der
NotificationManagerCompat
Klasse, z. B.
IMPORTANCE_DEFAULT
oder
IMPORTANCE_HIGH
Im nächsten Abschnitt finden Sie weitere Informationen
Wichtigkeitsstufen festlegen.
Wenn du das Standardverhalten von Benachrichtigungen auf deinem Kanal weiter anpassen möchtest,
können Sie Methoden wie
enableLights()
,
setLightColor()
,
und
setVibrationPattern()
am NotificationChannel
. Sobald du den Kanal erstellt hast,
kann diese Einstellungen nicht ändern und der Nutzer hat die endgültige Kontrolle darüber,
aktiv sind.
Sie können auch mehrere Benachrichtigungskanäle in einem Vorgang erstellen, indem Sie
Anrufen
createNotificationChannels()
Prioritätsstufe festlegen
Die Wichtigkeit des Kanals wirkt sich auf die Unterbrechungsstufe aller Benachrichtigungen aus, die in
für den Kanal. Geben Sie sie im NotificationChannel
-Konstruktor mit einer der folgenden Methoden an:
fünf Wichtigkeitsstufen ein, darunter
IMPORTANCE_NONE(0)
bis
IMPORTANCE_HIGH(4)
Damit Geräte mit Android 7.1 (API-Level 25) oder niedriger unterstützt werden, müssen Sie außerdem
Anruf
setPriority()
für jede Benachrichtigung mit einer Prioritätskonstante des
NotificationCompat
.
Die Wichtigkeit (NotificationManager.IMPORTANCE_*
) und Priorität
(NotificationCompat.PRIORITY_*
) Konstanten werden der für den Nutzer sichtbaren Bedeutung zugeordnet.
wie in der folgenden Tabelle dargestellt.
Für den Nutzer sichtbare Wichtigkeitsstufe | Wichtigkeit (Android 8.0 und höher) | Priorität (Android 7.1 und niedriger) |
---|---|---|
Dringend Ein Ton ertönt und wird als Vorabbenachrichtigung angezeigt. |
IMPORTANCE_HIGH |
PRIORITY_HIGH oder PRIORITY_MAX |
Hoch Macht ein akustisches Signal. |
IMPORTANCE_DEFAULT |
PRIORITY_DEFAULT |
Mittel Macht keinen Ton. |
IMPORTANCE_LOW |
PRIORITY_LOW |
Niedrig Es ist kein akustisches Signal zu hören und sie wird nicht in der Statusleiste angezeigt. |
IMPORTANCE_MIN |
PRIORITY_MIN |
Keine Macht keinen Ton und wird weder in der Statusleiste noch in der Schattierung angezeigt. |
IMPORTANCE_NONE |
N/A |
Alle Benachrichtigungen, unabhängig von ihrer Wichtigkeit, werden im nicht störenden System angezeigt. Positionen in der Benutzeroberfläche wie z. B. in der Benachrichtigungsleiste und ein Badge auf dem Launcher-Symbol, Sie können Darstellung des Benachrichtigungskennzeichens ändern.
Sobald du den Kanal bei der
NotificationManager
, ich
die Prioritätsstufe nicht ändern kann. Der Nutzer kann jedoch
für die Kanäle Ihrer App jederzeit ändern.
Informationen zur Auswahl einer geeigneten Prioritätsstufe finden Sie unter "Priorität Levels“ in der Leitfaden zur Gestaltung von Benachrichtigungen
Einstellungen für Benachrichtigungskanäle lesen
Nutzer können die Einstellungen für Benachrichtigungskanäle ändern, einschließlich des Verhaltens wie Vibration und Benachrichtigungston. Wenn Sie wissen möchten, welche Einstellungen für Ihre Benachrichtigungskanäle gilt, gehen Sie so vor:
Rufen Sie das
NotificationChannel
-Objekt ab, indem SiegetNotificationChannel()
odergetNotificationChannels()
Fragen Sie bestimmte Kanaleinstellungen wie
getVibrationPattern()
,getSound()
undgetImportance()
Wenn du eine Kanaleinstellung feststellst, die deiner Meinung nach das beabsichtigte Verhalten verhindert für Ihre App haben, können Sie dem Nutzer vorschlagen, es zu ändern, und ihm eine Aktion öffne die Kanaleinstellungen, wie im nächsten Abschnitt beschrieben.
Einstellungen für den Benachrichtigungskanal öffnen
Nachdem du einen Benachrichtigungskanal erstellt hast, kannst du die Benachrichtigung nicht mehr ändern das visuelle und akustische Verhalten deines Kanals programmatisch. Nur der Nutzer kann das Kanalverhalten in den Systemeinstellungen ändern. Um Ihren Nutzern auf diese Benachrichtigungseinstellungen zugreifen können, Einstellungen, über die die Systemeinstellungen geöffnet werden.
Sie können die Systemeinstellungen für Benachrichtigungskanäle mit einem
Intent
mit dem
ACTION_CHANNEL_NOTIFICATION_SETTINGS
Aktion ausführen.
Der folgende Beispielcode zeigt, wie Sie einen Nutzer an die Einstellungen für einen Benachrichtigungskanal:
Kotlin
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, packageName) putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()) } startActivity(intent)
Java
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); intent.putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()); startActivity(intent);
Beachten Sie, dass für den Intent zwei Extras erforderlich sind, die den Paketnamen Ihrer App angeben (auch Anwendungs-ID genannt) und den zu bearbeitenden Kanal enthält.
Benachrichtigungskanal löschen
Sie können Benachrichtigungskanäle löschen, indem Sie
deleteNotificationChannel()
Der folgende Beispielcode zeigt, wie dieser Vorgang ausgeführt wird:
Kotlin
// The id of the channel. val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val id: String = "my_channel_01" notificationManager.deleteNotificationChannel(id)
Java
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String id = "my_channel_01"; notificationManager.deleteNotificationChannel(id);
Channelgruppe für Benachrichtigungen erstellen
Wenn du die Darstellung deiner Kanäle in der Benutzeroberfläche für die Einstellungen noch weiter organisieren möchtest, Channelgruppen erstellen. Das ist sinnvoll, wenn Ihre App mehrere Nutzerkonten, z. B. für Arbeitsprofilen, da Sie hiermit Benachrichtigungs-Channelgruppe für jedes Konto. So können Nutzende leicht erkennen, und steuern Sie mehrere Benachrichtigungskanäle mit identischen Namen.
Eine Social-Networking-App kann beispielsweise persönliche und berufliche Unterstützung bieten. Konten. In diesem Szenario sind für jedes Konto möglicherweise mehrere Benachrichtigungen erforderlich. Kanäle mit identischen Funktionen und Namen wie die folgenden:
Ein privates Konto mit zwei Kanälen:
Neue Kommentare
Empfehlungen für Beiträge
Ein Geschäftskonto mit zwei Kanälen:
Neue Kommentare
Empfehlungen für Beiträge
Wenn Sie die Benachrichtigungskanäle für jedes Konto in Gruppen organisieren, können Nutzer unterscheiden können.
Für jede Benachrichtigungs-Channelgruppe ist eine ID erforderlich, die innerhalb Ihres Paket und einem für den Nutzer sichtbaren Namen. Das folgende Snippet veranschaulicht, um eine Channelgruppe für Benachrichtigungen zu erstellen.
Kotlin
// The id of the group. val groupId = "my_group_01" // The user-visible name of the group. val groupName = getString(R.string.group_name) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))
Java
// The id of the group. String groupId = "my_group_01"; // The user-visible name of the group. CharSequence groupName = getString(R.string.group_name); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannelGroup(new NotificationChannelGroup(groupId, groupName));
Nachdem Sie eine neue Gruppe erstellt haben, können Sie
setGroup()
um ein neues NotificationChannel
-Objekt mit der Gruppe zu verknüpfen.
Nachdem du den Kanal beim Benachrichtigungsmanager eingereicht hast, kannst du die Verknüpfung zwischen Benachrichtigungskanal und -gruppe.