iOS推送国际化的方式有几种,根据可控度划分如下:
1、从源头上解决问题,让服务端的同事根据语言下发推送,这个看个人实力了。
2、通过Notification Content Extension 在通知显示前完成翻译。这个需要iOS10+版本开始支持,而且在推送频繁时可能会跳过系统回调,漏掉几条没有翻译到。
主要是通过在Notification Content Extension的didReceiveNotificationRequest:withContentHandler:方法中实现国际化操作。当然也可以随便干点啥,不过不能做耗时操作,耗时太久系统会跳过回调直接显示通知。而且该方法只能修改推送内容,不能取消推送。
3、通过推送内容Alert Keys 实现国际化。从iOS8.2开始支持,具体参数和示例可以参照 苹果官方说明。
主要是loc-key和loc-args的用法,系统收到推送消息时会通过loc-key的值在Localizable.strings中查找对应的国际化字符串,字符串中的%@会用loc-args中的参数替换,第一个%@使用第一个参数,按照顺序替换,loc-args中多的参数不显示,少的会用<null>补位。