Aller au contenu

Notifications Firebase Cloud Messaging (FCM)

Aperçu

Vous devez d’abord creer un compte pour le service Firebase Cloud Messaging, ou FCM, de Google afin d’utiliser cette integration.

Ensuite, vous accederez a la console de gestion FCM et choisirez le mode que vous souhaitez utiliser pour l’envoi de vos notifications. Les modes disponibles sont legacy et oauth2. Chacun a ses avantages et ses inconvenients. Selon le mode choisi, vous devrez construire votre URL Apprise de maniere legerement differente :
Firebase

La syntaxe valide est la suivante :

Le mode legacy ne semble pas destine a etre retire prochainement, mais c’est bien ainsi que FCM le designe. Ce mode exige uniquement la cle API generee via la console de gestion FCM.

  • fcm://{APIKey}/{Device}
  • fcm://{APIKey}/{Device1}/{Device2}/{DeviceN}
  • fcm://{APIKey}/#{Topic}
  • fcm://{APIKey}/#{Topic1}/#{Topic2}/#{TopicN}

Vous pouvez egalement melanger ces entrees :

  • fcm://{APIKey}/{Device1}/#{Topic1}/

Le mode OAuth2 est celui que FCM semble recommander. Il introduit toutefois bien plus de surcharge que la methode legacy. Il exige aussi que vous pointiez vers un fichier JSON genere specialement a partir de votre console de gestion FCM.

Vous pouvez pointer vers le fichier JSON genere localement, si vous l’avez enregistre sur votre machine, ou le referencer via son URL web, si vous le partagez quelque part sur votre reseau, comme ceci :

  • fcm://{Project}/{Device}/?keyfile=/path/to/keyfile
  • fcm://{Project}/{Device1}/{Device2}/{DeviceN}/?keyfile=https://user:pass@localhost/web/location
  • fcm://{Project}/#{Topic}/?keyfile=/path/to/keyfile
  • fcm://{Project}/#{Topic1}/#{Topic2}/#{TopicN}/?keyfile=https://user:pass@localhost/web/location

Vous pouvez egalement melanger ces entrees :

  • fcm://{Project}/{Device1}/#{Topic1}/?keyfile={JSON_KeyFile}
VariableObligatoireDescription
APIKeyOuiCle API generee depuis la console de gestion FCM. Elle n’est requise que si vous souhaitez utiliser la methode Legacy.
ProjectOuiIdentifiant de projet genere depuis la console de gestion FCM. Il n’est requis que si vous souhaitez utiliser la methode OAuth2.
KeyFileOuiEmplacement du fichier _JSON Keyfile__ genere depuis la console de gestion FCM. Il n’est requis que si vous souhaitez utiliser la methode OAuth2.
DeviceNonAppareil auquel vous souhaitez envoyer votre message.
TopicNonSujet sur lequel vous souhaitez publier votre message.
modeNonLe mode peut etre defini sur legacy ou oauth2. Il est detecte automatiquement selon ce que vous fournissez dans l’URL Apprise, mais vous pouvez aussi le definir explicitement si necessaire.
priorityNonPriorite FCM. Par defaut, elle n’est pas transmise dans la charge utile et laisse donc les valeurs amont s’appliquer. Les options valides sont min, low, normal, high et max.
imageNonDefinissez cette valeur sur yes si vous souhaitez inclure une image dans la charge utile. Selon votre abonnement Firebase, cela peut ou non entrainer des frais. Par defaut, cette valeur est no.
image_urlNonPrecisez votre propre image_url personnalisee a inclure dans la charge utile. Si cette valeur est fournie, il est suppose que image vaut yes. Vous pouvez aussi definir image=no pour empecher cette supposition.
colorNonPermet d’identifier la couleur de votre notification en fournissant une valeur RGB personnalisee, au format #RRGGBB ou le croisillon # est facultatif. Les autres options sont yes et no. Lorsque cette valeur est no, l’argument color n’est tout simplement pas inclus dans la charge utile. Lorsqu’elle est yes, valeur par defaut, Apprise choisit la couleur selon le type de message, info, warning, etc.

Remarque : ce service de notification n’utilise pas le champ title ; seul le body est transmis.

VariableDescription
overflowCe paramètre peut être défini sur split, truncate ou upstream. Il détermine la manière dont Apprise remet le message que vous lui transmettez. Par défaut, il vaut upstream.
👉 upstream : ne fait aucune modification et transmet le message exactement tel qu’il a été reçu au service.
👉 truncate : veille à ce que le message tienne dans la limite amont documentée par le service. Si plus d’informations sont fournies que la limite définie, l’excédent est tronqué.
👉 split : similaire à truncate, sauf que si le message dépasse la limite amont documentée par le service, il est découpé en plusieurs morceaux plus petits puis envoyés séquentiellement.
formatCe paramètre peut être défini sur text, html ou markdown. Certains services prennent en charge plusieurs formats de publication du contenu. La valeur par défaut varie selon le service choisi et peut correspondre à l’un de ces trois formats. Vous pouvez facultativement forcer cette option pour vous écarter du comportement par défaut. Si le service ne prend pas en charge plusieurs formats de transmission, ce champ est ignoré.
verifyLes requêtes externes vers des emplacements sécurisés, par exemple via https, utilisent des certificats. Par défaut, Apprise vérifie la validité de ces certificats ; si ce n’est pas le cas, aucune notification n’est envoyée à la source. Dans certains cas, un utilisateur ne dispose pas d’une autorité de certification pour valider la clé ou fait simplement confiance à la source ; dans ce cas, vous pouvez définir ce drapeau sur no. Par défaut, il vaut yes.
ctoSignifie Socket Connect Timeout. Il s’agit du nombre de secondes pendant lesquelles Requests attend que votre client établisse une connexion avec une machine distante, ce qui correspond à l’appel connect() sur la socket. La valeur par défaut est de 4.0 secondes.
rtoSignifie Socket Read Timeout. Il s’agit du nombre de secondes pendant lesquelles le client attend que le serveur envoie une réponse. La valeur par défaut est de 4.0 secondes.
emojisActive la prise en charge des emojis, par exemple :+1: qui sera traduit en 👍. Par défaut, cette option vaut no.
Remarque : selon la configuration côté serveur, l’administrateur peut désactiver globalement la prise en charge des emojis ; mais par défaut, ce n’est pas le cas.
tzIdentifie le fuseau horaire de la base IANA que vous souhaitez utiliser. Par défaut, celui-ci est détecté à partir de la configuration du serveur qui exécute Apprise. Vous pouvez le définir sur des valeurs comme America/Toronto, ou sur tout autre fuseau correctement formaté correspondant à votre région.

Envoyer une notification FCM Legacy :

Fenêtre de terminal
# Supposons que notre {APIKey} soit bu1dHSdO22pfaaVy
# Supposons que notre {Device} soit ABCD:12345
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
"fcm://bu1dHSdO22pfaaVy/ABCD:12345"

Envoyer une notification FCM OAuth2 :

Fenêtre de terminal
# Supposons que notre {Project} soit Apprise
# Supposons que le chemin vers notre JSON {Keyfile} soit /etc/apprise/fcm/keyfile.json
# Supposons que notre {Device} soit ABCD:12345
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
"fcm://Apprise/ABCD:12345/?keyfile=/etc/apprise/fcm/keyfile.json"
Questions ou commentaires ?

Documentation

Vous avez repéré une faute de frappe ou une erreur ? Signalez-la ou proposez une correction .

Problèmes Techniques

Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :

Conçu avec amour depuis le Canada