【问题标题】:Multi language in IOS APN (push notification)IOS APN 中的多语言(推送通知)
【发布时间】:2016-05-09 06:51:00
【问题描述】:

我正在开发一个预订应用程序。我想在预订状态更新时向用户发送通知。

所以我在服务器端写了一些json,如下所示:

{
  "aps":
  {
    "alert": "update status",
    "category" : "booking approve", //can be "booking cancel" , "booking reject"
  }
}

在IOS端

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
  let aps = userInfo["aps"] as! [String: AnyObject]

  // need to customize and create notification message here

}

问题是,在收到推送通知的状态标签(例如预订批准)后,如何自定义消息(根据用户语言)?

感谢您的帮助。

【问题讨论】:

  • 需要自定义通知提醒?
  • 是的,有可能吗?例如收到“booking ok”,然后通知“感谢ABC先生的预订,欢迎您使用我们的服务等......”,谢谢

标签: ios objective-c push-notification apple-push-notifications apn


【解决方案1】:

您应该查看Remote Notification Payload guide,其中列出了所有可用于通知的密钥。您正在寻找的是 loc-key

loc-key :Localizable.strings 文件中警报消息字符串的键,用于当前本地化(由用户的语言首选项设置)。可以使用 %@ 和 %n$@ 说明符对键字符串进行格式化,以获取 loc-args 数组中指定的变量。有关详细信息,请参阅本地化格式化字符串。

发送此密钥,而不是发送任意选择的语言的字符串,警报将根据您的应用可用的本地化显示翻译文本。

另外,从 iOS 8.2 开始,title-loc-key 可用于 Apple watch 收到通知时显示的标题。

【讨论】:

  • 感谢指教,一个问题是如何获取用户设备的语言,我可以在设备收到消息后检测语言,并覆盖通知消息吗?
  • 您不必检测设备语言,系统会自行处理。这就像使用 localizable.strings,系统知道使用哪个本地化。
  • 对不起,我很困惑,这是否意味着服务器不需要知道每种设备语言?为简化起见,我只想在通知中显示“您已收到消息”,但多语言。需要哪些字段/文件?
  • 服务器不需要知道每种设备语言:只需向您的设备发送一个字符串密钥(例如:“KEY_BOOKING_APPROVE”)。在您设备的 localizable.strings 文件中,为每种语言添加密钥的翻译(我假设您已经将此文件用于多语言)。因此,如果稍后您为 iOS 应用添加新的本地化,则不必修改服务器,因为消息的翻译已包含在 iOS 应用中。
  • 如果您需要,请随时寻求进一步的帮助。
猜你喜欢
  • 1970-01-01
  • 2018-06-21
  • 2014-04-23
  • 1970-01-01
  • 2018-12-05
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多