В своем сообщении я расскажу, как можно сделать локализацию пуш-сообщений в топиках на стороне бэкенда мобильного приложения.
Я буду в примерах использовать библиотеку firebase-admin для node.js.
Предположим, нам необходимо отправить пуш-сообщение о публикации новости в приложении. Естественно, что это лучше всего сделать через топик. В настоящее время подписывать устройство на топик можно с сервера:
admin.messaging().subscribeToTopic(tokens, 'news'),
Итак, вы подписали устройство на новости. Но есть проблема. Все клиенты, вне зависимости от выбранной локали, получат один и тот же текст пуш-сообщения. Тут на помощь может придти относительно новая возможность firebase — отправка сообщений с фильтрами.
Это реализовать очень просто. При смене клиентом локали приложения, необходимо подписать клиента на топик с новой локалью и (увы) отписать от топика с предыдущей локалью
admin.messaging().subscribeToTopic(tokens, req.prams.lang), admin.messaging().unsubscribeFromTopic(user.lang), user.save({ lang: req.prams.lang });
Теперь, все, что осталось сделать — отправить сообщения в топики с заданными фильтрами:
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" }),
Такое вот нехитрое сообщение получилось, в отличие от того, что мне предстоит с делать по рефакторингу проекта. Потому собственно и сообщение.
apapacy@gmail.com
20 октября 2019 года

