Aller au contenu

Supprimer le retard des notifications sur un téléphone Xiaomi

Christophe TREMBLAY-GUILLOUX
Christophe TREMBLAY-GUILLOUXIngénieur système Linux

Sur un téléphone Xiaomi sous HyperOS, les notifications de certaines applications arrivent avec plusieurs minutes de retard, parfois seulement au déverrouillage de l'écran. Le système garde une liste blanche d'applications autorisées à recevoir les notifications sans délai. Cette liste est préremplie avec des applications distribuées en Chine, et les messageries installées depuis un autre pays n'y figurent pas.

C'est aussi le cas des services Google Play (com.google.android.gms), qui relaient les notifications push de la plupart des messageries. Quand ils sont installés après coup, ils ne sont pas ajoutés à cette liste blanche : l'installation ne la modifie pas.

  • Un téléphone Xiaomi sous HyperOS.
  • Un poste de travail Linux et un câble USB.
  • Les droits root sur le poste de travail pour installer un paquet.

1. Activer les options pour les développeurs sur le téléphone

Section intitulée « 1. Activer les options pour les développeurs sur le téléphone »

Les captures de ce mémo viennent d'un téléphone dont l'interface est en anglais, sous Xiaomi HyperOS 3.0.307.0. Si votre téléphone est en français, les libellés cités sont ceux à traduire.

Balayez l'écran du haut vers le bas pour ouvrir le centre de contrôle, puis appuyez sur le raccourci des réglages : la pastille ronde marquée d'un écrou hexagonal, à l'extrémité droite de la troisième rangée de raccourcis.

Centre de contrôle de HyperOS, avec le raccourci des réglages à droite de la troisième rangée

Dans Settings, appuyez sur My device, la deuxième ligne du premier bloc.

Écran Settings de HyperOS, avec la ligne My device sous le compte Xiaomi

Sur la page qui affiche Xiaomi HyperOS et son numéro de version, appuyez sept fois de suite sur la ligne OS version. Un message confirme l'activation, ou signale que le mode développeur est déjà actif, comme sur la capture ci-dessous.

Page Xiaomi HyperOS avec le numéro de version et le message indiquant que le mode développeur est déjà actif

Résultat attendu : un message confirme que le mode développeur est activé.

Revenez dans Settings et faites défiler jusqu'à la dernière ligne, Additional settings.

Écran Settings déroulé jusqu'à la ligne Additional settings

Dans cette page, la ligne Developer options se trouve sous le bloc des comptes.

Page Additional settings, avec la ligne Developer options

Activez l'interrupteur USB debugging, sur la première ligne.

Page Developer options, avec l'interrupteur USB debugging activé

Sur le téléphone qui a servi à ce mémo, l'interrupteur USB debugging (Security settings) est également activé. Si la commande d'écriture de l'étape 6 échoue, essayez de l'activer.

Branchez ensuite le téléphone au poste de travail. Le téléphone affiche une demande d'autorisation pour la clé du poste : acceptez-la, en cochant l'option qui la rend permanente si vous comptez recommencer plus tard.

Résultat attendu : le téléphone affiche la notification indiquant que le débogage USB est actif.

Sur une distribution dérivée de Debian ou d'Ubuntu, un seul paquet suffit :

bash
apt install adb

Résultat attendu : la commande adb version répond.

bash
adb devices
List of devices attached
xxxxxxxx device

Le numéro de série est masqué ici.

Si la deuxième colonne indique unauthorized, l'autorisation n'a pas été acceptée sur le téléphone. Si elle indique offline, débranchez et rebranchez le câble.

Résultat attendu : le téléphone est listé avec la mention device.

bash
adb shell settings get system MILLET_NO_RESTRICT_APP
com.whatsapp, org.thoughtcrime.securesms, [...], org.telegram.messenger

Sélectionnez cette ligne dans votre terminal et collez-la dans un éditeur de texte pour vous permettre de rajouter l'application manquante.

La commande suivante remplace la liste entière : il faut donc réécrire la liste d'origine, puis ajouter juste l'application manquante (com.google.android.gms) en fin de liste.

bash
adb shell settings put system MILLET_NO_RESTRICT_APP "com.whatsapp, org.thoughtcrime.securesms, [...], org.telegram.messenger, com.google.android.gms"

Relisez la liste :

bash
adb shell settings get system MILLET_NO_RESTRICT_APP
com.whatsapp, org.thoughtcrime.securesms, [...], org.telegram.messenger, com.google.android.gms

Résultat attendu : la notification arrive sans attendre le déverrouillage de l'écran.