Les notifications

En informatique, le terme notification est souvent employé pour décrire des fonctions d’alerte automatisées entre processus ou vers des utilisateurs.

De manière générale, les notifications utilisateurs sont des alertes qui s’afficheront sur le terminal mobile ou l’ordinateur afin de l’avertir.

Zone de notification
La zone de notification ou la barre de notification est la partie de l’interface utilisateur qui affiche des icônes d’information d’état du système d’exploitation permettant l’accès rapide aux fonctions système de base et les logiciels qui n’ont aucune pertinence à s’afficher sur le bureau ou l’écran d’accueil.
Bulle de notification
En informatique, une bulle de notification (pop-up notification ou toast en anglais) est un composant d’interface graphique constitué d’une petite fenêtre d’information. Les bulles de notification informent les utilisateurs de différents événements. Les bulles de notification sont préférables aux boîtes de dialogue parce qu’ils n’interrompent pas le travail de l’utilisateur et lui permettent de lire l’information affichée au moment qui lui convient.

Qt

QSystemTrayIcon

La classe QSystemTrayIcon permet d’intégrer une icône pour une application dans la barre d’état système (ou zone de notification). Une instance de cette classe permettra d’afficher des messages courts accompagnés d’icônes.

La classe QSystemTrayIcon est plus ou moins bien intégrée dans les systèmes Windows, GNU/Linux et macOS.

Il est possible de vérifier la présence de la barre d’état système en appelant la méthode statique QSystemTrayIcon::isSystemTrayAvailable().

Exemple pour créer l’icône de l’application dans la barre d’état système (system tray) :

QSystemTrayIcon *iconeSysteme = new QSystemTrayIcon(this);
iconeSysteme->setContextMenu(menuIconeSysteme);
iconeSysteme->setToolTip("MainWindow");
QIcon icone(":/icone1.png");
iconeSysteme->setIcon(icone);
setWindowIcon(icone);

Exemple pour afficher une notification :

QString titre = "Un titre";
QString message = "Un message";
int duree = 1000; // une duree en ms

QSystemTrayIcon::MessageIcon messageIcon;
//messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::NoIcon);
//messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Information);
//messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Warning);
messageIcon = QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Critical);
iconeSysteme->showMessage(titre, message, messageIcon, duree);

// ou avec sa propre icône
QIcon icone(":/icone2.png");
iconeSysteme->showMessage(titre, message, icone, duree);

Code source : notification-v2.zip

QWidget

On peut tout simplement créer son propre système de notification en utilisant un simple QWidget que l’on affichera sur le bureau. Ce système plus intrusif pourra être utiliser pour des alertes urgentes car on les fera apparaître en avant-plan.

Qt fournit un type d’énumération Qt::WindowType qui est utilisé pour spécifier diverses propriétés pour un widget (Qt::WindowFlags).

On va appliquer au QWidget de notification les propriétés suivantes en utilisant la méthode setWindowFlags(Qt::WindowFlags type) :

  • Qt::FramelessWindowHint : pour obtenir une fenêtre sans bordure. De plus, l’utilisateur ne pourra pas la déplacer ou redimensionner.

  • Qt::WindowStaysOnTopHint : pour que la fenêtre reste au-dessus de toutes les autres fenêtres.

On pourra gérer l’acquittement (effacer le QWidget de notification) avec un clic de souris (en redéfinissant mousePressEvent()) ou en intégrant un temporisateur (avec la méthode statique QTimer::singleShot()).

Code source : notification-v1.zip

Android

Toast

Un Toast est un message d’information non bloquant qui s’affiche dans une petite fenêtre contextuelle. Il ne remplit que l’espace requis pour le message et l’activité en cours reste visible et interactive. Les toasts disparaissent automatiquement après un certain temps.

Exemple simple :

import android.widget.Toast;

...

Toast.makeText(getApplicationContext(), "Sending message...", Toast.LENGTH_SHORT).show(); // ou Toast.LENGTH_LONG

NotificationManager

La classe NotificationManager permet d’informer l’utilisateur des événements qui se produisent.

Les notifications peuvent prendre différentes formes :

  • une icône persistante qui va dans la barre d’état et qui sera accessible via le lanceur,
  • allumer ou clignoter les LED de l’appareil,
  • alerter l’utilisateur en faisant clignoter le rétroéclairage, en jouant un son ou en faisant vibrer.

On utilise la méthode notify(int id, Notification notification) pour envoyer une Notification.

Exemple Android

Retour au sommaire