Получив на поддержку очередной проект бэкенда мобильного приложения, я, к сожалению, столкнулся с тем, что массовая рассылка пуш-сообщений в топики (topics) не локализована. В интернете я также не нашел подробного материала по этому вопросу. И все, что я нашел, относилось к локализации на стороне клиента, а это не всегда удобно, т.к. требует заранее определить все возможные варианты сообщений и создать для них ресурсные файлы со всеми возможными переводами.
В своем сообщении я расскажу, как можно сделать локализацию пуш-сообщений в топиках на стороне бэкенда мобильного приложения.
Я буду в примерах использовать библиотеку firebase-admin для node.js.
Предположим, нам необходимо отправить пуш-сообщение о публикации новости в приложении. Естественно, что это лучше всего сделать через топик. В настоящее время подписывать устройство на топик можно с сервера:
Итак, вы подписали устройство на новости. Но есть проблема. Все клиенты, вне зависимости от выбранной локали, получат один и тот же текст пуш-сообщения. Тут на помощь может придти относительно новая возможность firebase — отправка сообщений с фильтрами.
Это реализовать очень просто. При смене клиентом локали приложения, необходимо подписать клиента на топик с новой локалью и (увы) отписать от топика с предыдущей локалью
Теперь, все, что осталось сделать — отправить сообщения в топики с заданными фильтрами:
Такое вот нехитрое сообщение получилось, в отличие от того, что мне предстоит с делать по рефакторингу проекта. Потому собственно и сообщение.
apapacy@gmail.com
20 октября 2019 года
В своем сообщении я расскажу, как можно сделать локализацию пуш-сообщений в топиках на стороне бэкенда мобильного приложения.
Я буду в примерах использовать библиотеку 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 года