由于产品需求,在 APP 里增加了语言设置选项,即用户可以在不改变系统语言的情况下,只修改 APP 内的语言。可是如何让远程推送也跟随 APP 语言呢?
每个远程推送通知都包含一个 payload
。payload
包含系统要显示给用户的信息,也包括你自定义的数据。有关 payload key
可以看看这里 https://www.zybuluo.com/evolxb/note/482251。
看过上面这篇文章后,小伙伴应该知道了苹果其实提供了实现语言国际化的方案,即通过 loc-key
和 loc-args
这两个字段。其中 loc-key
是格式化前的内容,loc-args
里面放的是 loc-key
格式化过程中需要用到的参数。比如要向小明同学推送一条消息,内容是:
小明,你的包裹已出发!
小明的手机语言设置成了英文,收到这条推送后,需要显示为:
小明,your package has sent!
那么 loc-key
和 loc-args
这两个字段就应该这样写:
"loc-key": "%@,你的包裹已出发!",
"loc-args": ["小明"]
如果 app 的 Localizable.strings
文件中有这样的定义:
“%@,你的包裹已出发!”="%@,your package has sent!";
小明收到的推送就将显示为
“小明,your package has sent! ”。
看,就是这么简单!但这还不够,