
Traduit pour vous
un article de Brandon Weaver sur l'utilisation des notifications dans Android OS. Le programmeur explique comment ajouter rapidement cette fonctionnalité à votre application. L'article, tout d'abord, sera utile aux développeurs Android débutants.
Les notifications sont l'un des moyens les plus simples et les plus rapides de rendre votre application plus interactive, ce qui attirera plus d'utilisateurs. Les notifications fournissent à l'utilisateur de brèves informations sur ce dont il peut avoir besoin en ce moment. C'est aussi un moyen de s'informer sur les événements à venir. Essayons d'ajouter rapidement cette fonctionnalité à l'application.
Skillbox recommande: Le cours en ligne appliqué Python Data Analyst .
Nous vous rappelons: pour tous les lecteurs de «Habr» - une remise de 10 000 roubles lors de l'inscription à un cours Skillbox en utilisant le code promo «Habr».
Créer une notification
La première étape consiste à créer un objet «Notification». Pour ce faire, utilisez NotificationCompat.Builder. Le contenu de notification minimum autorisé par les développeurs Android est une petite icône. C'est bien, mais pas très utile pour l'utilisateur. Vous trouverez ci-dessous un schéma d'une notification standard bien reçue.

Une petite icône sera affichée en permanence et il est important de la rendre alpha-transparente. Sans cela, au lieu d'une icône, vous obtenez une boîte blanche.
Le titre de la notification est également important. Cela devrait être une brève description pour comprendre pourquoi l'utilisateur est généralement inquiet.
L'organisme de notification contient un long texte avec toutes les informations nécessaires.
Une grande icône peut être un logo d'entreprise ou autre chose.
Voici deux options pour l'utilisateur.
Pour afficher tout cela, vous avez besoin d'un code court:
.setSmallIcon(R.drawable.ic_announcement) .setContentTitle(title) .setContentText(body) .build()
Afficher la notification
Nous avons créé notre notification, maintenant la tâche est de la montrer. Android permet de le faire en utilisant NotificationManagerCompat. Pour envoyer une notification, vous devez utiliser notificationID et la notification elle-même.
with(NotificationManagerCompat.from(context)) { if (getNotificationChannel(CHANNEL_ID) == null) { createNotificationChannel(context) } notify(notificationId, builder.build()) }
Un code supplémentaire est nécessaire pour vérifier l'existence du canal de notification.
Canaux et importance
Pour la première fois, un utilisateur a eu la possibilité de choisir les types de notifications à partir de ses applications dans Oreo. La création de plusieurs canaux est importante, car si tout se passe sur un seul canal, l'utilisateur ne pourra pas sélectionner les types de notifications dont il a besoin et bloquera tout.
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) } }
Le canal doit inclure les informations suivantes:
- ID - identifiant de canal;
- nom - il doit être court, par exemple, "Messages";
- importance - elle peut être élevée, par défaut, faible ou minimale;
- description - il sera affiché dans les paramètres Android. Le développeur doit veiller à la qualité de la description.
Interaction utilisateur
Il existe plusieurs façons pour un utilisateur d'interagir avec les notifications. Heureusement, les API qui vous permettent de contrôler le processus sont assez similaires. Intentions et PendingIntents sont utilisés pour fournir des commentaires à l'application, fournissant une logique de traitement spécifique.
La façon la plus simple de gérer un grand nombre de notifications est d'utiliser BroadcastReceiver. Lorsque l'utilisateur commence à interagir avec la notification, l'intention se déclenche et la méthode onReceive BroadcastReceiver est appelée.
val builder = NotificationCompat.Builder(context, CHANNEL_ID) ... .setContentIntent(onContentTapped ) .setDeleteIntent(onSwipedAway ) .addAction( R.drawable.ic_announcement, actionTitle, onActionTapped )
ContentIntent sera lancé en cliquant sur la notification. Il convient de se rappeler que la notification ne sera pas rejetée si vous n'y appelez pas setAutoCancel (true).
DeleteIntent démarre après que l'utilisateur a supprimé la notification.
Les actions sont les boutons au bas de la notification. Ils ont également des badges et des noms.
Pour créer un BroadcastReceiver, vous devez étendre la classe BroadcastReceiver, remplacer la méthode onReceive et n'oubliez pas de déclarer le récepteur dans AndroidManifest.xml.
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 est un outil rapide pour créer des PendingIntents pour les notifications. La chose la plus importante est de donner aux actions des noms différents afin de gérer correctement les réactions de l'utilisateur à la notification. De plus, si vous avez l'intention de démarrer une activité à partir de BroadcastReceiver, vous devez utiliser IntentFlag NEW_TASK.
Cela est nécessaire pour traiter toutes les notifications en un seul endroit. Les intentions peuvent également être enregistrées pour différents BroadcastReceivers, vous pouvez donc limiter la portée à un BroadcastReceiver pour chaque type de notification.
Tout cela n'est que le début du travail. Il existe de nombreux exemples dans la documentation, alors assurez-vous de l'étudier si vous avez des questions ou si vous voulez faire quelque chose de plus avancé.
Skillbox recommande: