Localización de mensajes push en aplicaciones móviles.

Habiendo recibido otro proyecto de soporte de aplicaciones móviles para soporte, desafortunadamente, me encontré con el hecho de que el envío masivo de mensajes push a temas no está localizado. En Internet, tampoco encontré material detallado sobre este tema. Y todo lo que encontré relacionado con la localización en el lado del cliente, y esto no siempre es conveniente, porque requiere predeterminar todas las opciones de mensaje posibles y crear archivos de recursos para ellos con todas las traducciones posibles.

En mi publicación, le diré cómo hacer la localización de mensajes push en temas en el lado del backend de la aplicación móvil.

En los ejemplos, usaré la biblioteca firebase-admin para node.js.

Supongamos que necesitamos enviar un mensaje push para publicar noticias en la aplicación. Naturalmente, esto se hace mejor a través del tema. Actualmente, puede suscribir un dispositivo a un tema desde el servidor:

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

Entonces, ha suscrito el dispositivo a las noticias. Pero hay un problema. Todos los clientes, independientemente de la configuración regional seleccionada, recibirán el mismo texto de mensaje push. Aquí, una característica relativamente nueva de Firebase puede venir al rescate: enviar mensajes con filtros.

Es muy fácil de implementar. Cuando el cliente cambia la configuración regional de la aplicación, es necesario suscribirlo al tema con la nueva configuración regional y (por desgracia) cancelar la suscripción del tema con la configuración regional anterior

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

Ahora, todo lo que queda por hacer es enviar mensajes a los temas con los filtros especificados:

  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" }), 

Resultó un mensaje tan simple, en contraste con lo que tengo que hacer para refactorizar el proyecto. Porque en realidad el mensaje.

apapacy@gmail.com
20 de octubre de 2019

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


All Articles