如何处理不同语言的 iOS 推送通知

Posted

技术标签:

【中文标题】如何处理不同语言的 iOS 推送通知【英文标题】:How to handle iOS Push Notifications in Different language 【发布时间】:2016-06-22 12:14:45 【问题描述】:

我正在开发一个应用程序,在该应用程序中实现了推送通知。现在我必须为推送通知提供多语言支持。 请建议推送通知的本地化应该在应用程序端还是服务器端。 以及应用未运行时如何处理Banner上显示的推送语言?

提前致谢

【问题讨论】:

这是服务器端的工作。你不能站在你这边。 【参考方案1】:

这是一个老问题,但值得一个新的答案。

本地化推送通知可以在服务器端或应用程序中解决。

要在服务器端发送本地化通知,需要服务器知道用户的语言偏好,并且就像 aronspring 建议的那样,注册推送令牌时是这样做的好时机。

要在手机本地执行此操作,您需要在应用程序包 Localizable.strings 文件中提供所有可能的通知及其翻译。然后,服务器将不再发送要显示的文本,而是将密钥发送到 Localizable.strings 中的相应翻译。

示例应用程序负载:

"aps" : 
    "alert" : 
        "loc-key" : "SOME_MESSAGE"
    

如需更好的解释,请在此处阅读更多内容:Local and Remote Notification Programming Guide

【讨论】:

【参考方案2】:

就像您刚刚指出的那样,在您的应用未运行的情况下,操作系统将收到通知,并且不会在您的应用中运行任何代码来翻译它们,并会在收到通知时显示它们。因此,在发送之前,它们需要在服务器端进行翻译。该应用程序不必担心它们以何种语言发送 - 无需为此编写应用程序端的代码。

当您注册推送令牌以了解设备设置的语言时,存储设备区域设置可能是一个想法。

【讨论】:

如果您有一小部分固定的消息,您可以本地化您收到的文本(即翻译它)。只有当它是一组固定的消息时。不一致的翻译会给人留下非常糟糕的印象。

以上是关于如何处理不同语言的 iOS 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

IOS 10如何处理用户点击推送通知

如何处理未打开的推送通知(iOS、Swift)

当 iOS 应用程序被暂停/杀死并且用户点击通知时如何处理 Firebase 推送通知?

当应用程序关闭或不活动时,如何处理 iOS 应用程序中的推送通知?

当我的应用程序激活时如何处理推送通知?

当应用程序处于未运行或后台状态时,如何处理推送通知有效负载而不点击它