在我的一些远程推送通知中,除了字符串之外还会发送双值。我需要在接收设备上格式化这些值,具体取决于用户的区域设置并正确设置货币。当应用程序处于前台时,我了解了/如何解决这个问题:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
...
var locArgsFormatted: [NSObject] = []
for arg in locArgs {
if let double = arg as? Double {
locArgsFormatted.append(Utils.Formatter.currencyOutput.stringFromNumber(double)!)
} else {
locArgsFormatted.append(arg)
}
}
let formattedString = NSString(format: localizedString, arguments: Utils.Methods.getVaListFromArguments(locArgsFormatted)) as! String
}
但是当应用程序在后台时,我不知道如何(以及类似的调整)。警报或横幅中显示的消息是通过获取Localizable.strings文件中的本地化字符串自动创建的(没有选项可以首先格式化任何双值)但是如何在显示通知消息之前显示的示例中进行干预用户?
答案 0 :(得分:-1)
基于Apple's Local and Remote Notification Programming Guide,接收设备上的客户端应用程序应该向提供者传递当前语言首选项,以便让提供者知道如何本地化消息。因此,本地化将通过连接到APN的服务器上运行的软件进行。
使用这样的架构,发送应用程序不需要保留任何用户的任何本地化信息。此外,上述节目指南显示了如何保证接收机设备中的本地化设置的任何变化都传播到提供商。