移动应用程序中推送消息的本地化

不幸的是,在收到另一个移动应用程序后端项目的支持后,我遇到了这样一个事实,即向主题发送推送消息的大量邮件未本地化。 在Internet上,我也没有找到有关此问题的详细资料。 我发现的所有内容都与客户端的本地化有关,这并不总是很方便,因为 需要预先确定所有可能的消息选项,并使用所有可能的翻译为它们创建资源文件。

在我的文章中,我将告诉您如何在移动应用程序后端的主题中本地化推送消息。

在示例中,我将使用node.js的firebase-admin库。

假设我们需要发送推送消息以在应用程序中发布新闻。 自然,最好通过该主题完成此操作。 当前,您可以从服务器为设备订阅主题:

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

因此,您已将设备订阅了新闻。 但是有一个问题。 无论选择哪种语言环境,所有客户端都将收到相同的推送消息文本。 在这里,firebase的一个相对较新的功能可以解决:发送带有过滤器的消息。

这很容易实现。 当客户端更改应用程序语言环境时,有必要使用新的语言环境为客户端订阅主题,并使用先前的语言环境从主题中退订(alas)

  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

Source: https://habr.com/ru/post/zh-CN472198/


All Articles