Localisation des messages push dans les applications mobiles

Ayant reçu un autre projet de backend d'application mobile pour le support, je suis malheureusement tombé sur le fait que l'envoi de masse de messages push à des sujets n'est pas localisé. Sur Internet, je n'ai pas non plus trouvé de documents détaillés sur cette question. Et tout ce que j'ai trouvé concernait la localisation côté client, et ce n'est pas toujours pratique, car nécessite de prédéterminer toutes les options de message possibles et de créer des fichiers de ressources pour elles avec toutes les traductions possibles.

Dans mon article, je vais vous expliquer comment localiser les messages push dans les rubriques du côté backend de l'application mobile.

Dans les exemples, j'utiliserai la bibliothèque firebase-admin pour node.js.

Supposons que nous devions envoyer un message push pour publier des nouvelles dans l'application. Naturellement, cela est mieux fait à travers le sujet. Actuellement, vous pouvez abonner un appareil à une rubrique à partir du serveur:

admin.messaging().subscribeToTopic(tokens, 'news'), 

Vous avez donc abonné l'appareil aux actualités. Mais il y a un problème. Tous les clients, indépendamment des paramètres régionaux sélectionnés, recevront le même texte de message push. Ici, une fonctionnalité relativement nouvelle de Firebase peut venir à la rescousse - l'envoi de messages avec des filtres.

Il est très simple à mettre en œuvre. Lorsque le client modifie les paramètres régionaux de l'application, il est nécessaire de souscrire le client au sujet avec les nouveaux paramètres régionaux et (hélas) de se désabonner du sujet avec les paramètres régionaux précédents.

  admin.messaging().subscribeToTopic(tokens, req.prams.lang), admin.messaging().unsubscribeFromTopic(user.lang), user.save({ lang: req.prams.lang }); 

Maintenant, tout ce qui reste à faire est d'envoyer des messages aux sujets avec les filtres spécifiés:

  admin.messaging().send({ ...payloadRu, condition: "'news' in topics && 'ru' in topics" }), admin.messaging().send({ ...payloadEs, condition: "'news' in topics && 'es' in topics" }), admin.messaging().send({ ...payloadEn, condition: "'news' in topics && 'en' in topics" }), 

Un message aussi simple s'est avéré, contrairement à ce que je dois faire pour refactoriser le projet. Parce qu'en fait le message.

apapacy@gmail.com
20 octobre 2019

Source: https://habr.com/ru/post/fr472198/


All Articles