Development of mobile applications
Node.JS
20 October

Локализация пуш-сообщений в мобильных приложениях

Tutorial
Получив на поддержку очередной проект бэкенда мобильного приложения, я, к сожалению, столкнулся с тем, что массовая рассылка пуш-сообщений в топики (topics) не локализована. В интернете я также не нашел подробного материала по этому вопросу. И все, что я нашел, относилось к локализации на стороне клиента, а это не всегда удобно, т.к. требует заранее определить все возможные варианты сообщений и создать для них ресурсные файлы со всеми возможными переводами.

В своем сообщении я расскажу, как можно сделать локализацию пуш-сообщений в топиках на стороне бэкенда мобильного приложения.

Я буду в примерах использовать библиотеку 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 года

+3
1.8k 32
Comments 4
Top of the day