Benachrichtigungskanäle erstellen und verwalten

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.

Abbildung 1: Benachrichtigungseinstellungen für die Uhr App und einem seiner Kanäle.

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:

  1. Ein Objekt NotificationChannel mit einer eindeutigen Kanal-ID, einem für den Nutzer sichtbaren Namen und der Prioritätsstufe.

  2. Geben Sie optional die Beschreibung an, die dem Nutzer in den Systemeinstellungen angezeigt wird mit setDescription()

  3. 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:

  1. Rufen Sie das NotificationChannel-Objekt ab, indem Sie getNotificationChannel() oder getNotificationChannels()

  2. Fragen Sie bestimmte Kanaleinstellungen wie getVibrationPattern(), getSound() und getImportance()

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.

Abbildung 2: Einstellungen für Benachrichtigungskanal mit Gruppen für private und geschäftliche Konten.

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.