
Übersetzt für Sie
einen Artikel von Brandon Weaver über die Arbeit mit Benachrichtigungen in Android OS. Der Programmierer erklärt, wie Sie diese Funktionalität schnell zu Ihrer Anwendung hinzufügen können. Der Artikel wird vor allem für Anfänger von Android-Entwicklern nützlich sein.
Benachrichtigungen sind eine der einfachsten und schnellsten Möglichkeiten, Ihre Anwendung interaktiver zu gestalten, wodurch mehr Benutzer angezogen werden. Benachrichtigungen bieten dem Benutzer kurze Informationen darüber, was er gerade benötigt. Es ist auch eine Möglichkeit, über bevorstehende Ereignisse zu informieren. Versuchen wir, diese Funktion schnell zur Anwendung hinzuzufügen.
Skillbox empfiehlt: Der Python Data Analyst Applied Online-Kurs.
Wir erinnern Sie daran: Für alle Leser von „Habr“ - ein Rabatt von 10.000 Rubel bei der Anmeldung für einen Skillbox-Kurs mit dem Promo-Code „Habr“.
Benachrichtigung erstellen
Der erste Schritt besteht darin, ein "Benachrichtigungs" -Objekt zu erstellen. Verwenden Sie dazu NotificationCompat.Builder. Der minimale Benachrichtigungsinhalt, der von Android-Entwicklern zugelassen wird, ist ein kleines Symbol. Dies ist gut, aber für den Benutzer nicht sehr nützlich. Unten sehen Sie ein Diagramm einer Standardbenachrichtigung, die gut angenommen wird.

Ein kleines Symbol wird ständig angezeigt, und es ist wichtig, es alpha-transparent zu machen. Ohne dieses Symbol erhalten Sie anstelle eines Symbols eine weiße Box.
Der Benachrichtigungstitel ist ebenfalls wichtig. Dies sollte eine kurze Beschreibung sein, um zu verstehen, warum der Benutzer im Allgemeinen besorgt ist.
Die Benachrichtigungsstelle enthält einen Langtext mit allen erforderlichen Informationen.
Ein großes Symbol kann ein Firmenlogo oder etwas anderes sein.
Nachfolgend sind zwei Optionen für den Benutzer aufgeführt.
Um all dies anzuzeigen, benötigen Sie einen Funktionscode:
.setSmallIcon(R.drawable.ic_announcement) .setContentTitle(title) .setContentText(body) .build()
Benachrichtigung anzeigen
Wir haben unsere Benachrichtigung erstellt, jetzt besteht die Aufgabe darin, sie anzuzeigen. Android macht dies mit NotificationManagerCompat möglich. Um eine Benachrichtigung zu senden, müssen Sie die Benachrichtigungs-ID und die Benachrichtigung selbst verwenden.
with(NotificationManagerCompat.from(context)) { if (getNotificationChannel(CHANNEL_ID) == null) { createNotificationChannel(context) } notify(notificationId, builder.build()) }
Zusätzlicher Code wird benötigt, um das Vorhandensein des Benachrichtigungskanals zu überprüfen.
Kanäle und Bedeutung
Zum ersten Mal hatte ein Benutzer die Möglichkeit, die Benachrichtigungstypen aus seinen Anwendungen in Oreo auszuwählen. Das Erstellen mehrerer Kanäle ist wichtig, da der Benutzer nicht in der Lage ist, die von ihm benötigten Benachrichtigungstypen auszuwählen, wenn alles auf einem Kanal läuft, und alles blockiert.
teNotificationChannel(context: Context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val name = context.getString(R.string.channel_name) val descriptionText = context.getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_HIGH val channel = NotificationChannel(CHANNEL_ID, name, importance).apply { description = descriptionText } NotificationManagerCompat.from(context).createNotificationChannel(channel) } }
Der Kanal sollte die folgenden Informationen enthalten:
- ID - Kanalkennung;
- Name - es sollte kurz sein, zum Beispiel "Nachrichten";
- Wichtigkeit - es kann hoch, Standard, niedrig oder minimal sein;
- Beschreibung - wird in den Android-Einstellungen angezeigt. Der Entwickler sollte auf die Qualität der Beschreibung achten.
Benutzerinteraktion
Es gibt verschiedene Möglichkeiten, wie ein Benutzer mit Benachrichtigungen interagieren kann. Glücklicherweise sind die APIs, mit denen Sie den Prozess steuern können, ziemlich ähnlich. Intents und PendingIntents werden verwendet, um der Anwendung Feedback zu geben und eine spezifische Verarbeitungslogik bereitzustellen.
Der einfachste Weg, eine große Anzahl von Benachrichtigungen zu verarbeiten, ist die Verwendung von BroadcastReceiver. Wenn der Benutzer mit der Benachrichtigung interagiert, wird die Absicht ausgelöst und die onReceive BroadcastReceiver-Methode wird aufgerufen.
val builder = NotificationCompat.Builder(context, CHANNEL_ID) ... .setContentIntent(onContentTapped ) .setDeleteIntent(onSwipedAway ) .addAction( R.drawable.ic_announcement, actionTitle, onActionTapped )
ContentIntent wird durch Klicken auf die Benachrichtigung gestartet. Beachten Sie, dass die Benachrichtigung nicht abgelehnt wird, wenn Sie nicht setAutoCancel (true) aufrufen.
DeleteIntent wird gestartet, nachdem der Benutzer die Benachrichtigung gelöscht hat.
Aktionen sind die Schaltflächen am unteren Rand der Benachrichtigung. Sie haben auch Abzeichen und Namen.
Um einen BroadcastReceiver zu erstellen, müssen Sie die BroadcastReceiver-Klasse erweitern, die onReceive-Methode überschreiben und den Receiver in AndroidManifest.xml deklarieren.
class NotificationBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val action = intent.action when (action) { ACTION_ONE -> { Toast.makeText(context, "Action One hit!", Toast.LENGTH_SHORT).show() } ACTION_TWO -> { Toast.makeText(context, "Action Two hit!", Toast.LENGTH_SHORT).show() } } } } object NotificationController { fun pendingIntent(context: Context, name: String, extras: Bundle?): PendingIntent { val intent = Intent(context, NotificationBroadcastReceiver::class.java).apply { action = name putExtra(EXTRA_NOTIFICATION_ID, extras) } return PendingIntent.getBroadcast(context, 0, intent, 0) } }
NotificationController ist ein schnelles Tool zum Erstellen von PendingIntents für Benachrichtigungen. Das Wichtigste ist, den Aktionen unterschiedliche Namen zu geben, um die Reaktionen des Benutzers auf die Benachrichtigung korrekt zu behandeln. Wenn Sie eine Aktivität von BroadcastReceiver aus starten möchten, sollten Sie IntentFlag NEW_TASK verwenden.
Dies ist erforderlich, um alle Benachrichtigungen an einem Ort zu verarbeiten. Absichten können auch für verschiedene BroadcastReceiver registriert werden, sodass Sie den Umfang für jeden Benachrichtigungstyp auf einen BroadcastReceiver beschränken können.
All dies ist nur der Anfang der Arbeit. Die Dokumentation enthält viele gute Beispiele. Lesen Sie sie daher unbedingt durch, wenn Sie Fragen haben oder etwas Fortgeschritteneres tun möchten.
Skillbox empfiehlt: