Loupe

[Xamarin] Petit helper pour créer une notification locale simplement sur Android

Android (et iOS) mettent à disposition des utilisateurs un centre de notifications dans lequel l’utilisateur peut retrouver toutes les notifications envoyées par les applications.

Il est possible, pour les développeurs que nous sommes, de créer nos propres notifications pour que celles-ci apparaissent dans le centre de notifications. Pour vous faciliter la vie, je vous propose un petit helper:

public static class NotificationsHelpers
{
    public static void CreateNotification<T>(this Context context, int icon, string title, string description, params NotificationFlags[] flags)
        where T : Activity
    {
        var notificationManager = context.GetSystemService(Context.NotificationService) as NotificationManager;
        if(notificationManager == null)
            throw new NullReferenceException("notificationManager should not be null!");

        // On définit l'intent qui servira a afficher l'activité indiqué lorsque l'utilisateur cliquera sur la notification
        var uiIntent = new Intent(context, typeof (T));

        // On créé la notification
        var notification = new Notification(icon, title);

        // On définit les flags qui serviront à notifier ce que doit faire l'application 
        // lorsque l'utilisateur appuie sur la notification
        foreach (var flag in flags)
        {
            notification.Flags |= flag;
        }

        // On définit le texte et la description de la notification
        // On passe également l'activité qui sera lancée
        notification.SetLatestEventInfo(context, title, description, PendingIntent.GetActivity(context, 0, uiIntent, 0));

        // Affichage de la notification
        notificationManager.Notify(1, notification);
    }
}

Le code est documenté et relativement clair mais, en gros, voici les grandes étapes:

  1. On récupère le NotificationManager du système
  2. On initialise “l’intent” qui correspond à l’activité qui sera lancée lorsque l’utilisateur appuiera sur la notification
  3. On créé la notification et on lui affecte les “flags” (afin de la paramètrer)
  4. On définit le texte et la description
  5. On affiche la notification

Pour utiliser ce help, rien de plus simple:

this.CreateNotification<HomeView>(Resource.Drawable.Icon, "Test de notification",
    "Ceci est le contenu de la notification", NotificationFlags.AutoCancel, NotificationFlags.NoClear);

 

Ainsi, grâce aux génériques et aux méthodes d’extension de C#, il devient très facile de se créer un ensemble d’outils pour faciliter et accélérer vos développements cross-plateforme!

 

Happy coding!

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus