iOS - APNS 如何在有效负载中使用 loc_key

j2e*_*nue 4 localization apple-push-notifications ios

在让 APNS 向设备发送消息之前,我想要本地化一个消息字符串。我希望我能看到 json 有效负载本身,让我理解结构,而不是设备为我解析它。但无论如何,我如何使用 loc_key 和 loc_args 参数?从我发现的文档中:

\n\n
\n

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

\n\n

loc-args 字符串数组 出现在 loc-key 中格式说明符位置的变量字符串值。有关更多信息,请参阅本地化格式化字符串。

\n
\n\n

官方文档在这里

\n\n

我需要一个如何本地化字符串的具体示例以及什么是 loc_args ?

\n\n

我只是在这里猜测,但如果我有一个像这样本地化的字符串:\nmys​​tring="cool localized message"\n那么 loc_key 将是“mystring”,对吗?

\n

Cor*_*ius 8

loc-key 是一个字符串,需要与应用程序包内的 Localized.strings 文件中的键匹配。例如,如果 loc-key 是“my-push.hello-world”,并且 Localized.strings 文件中有以下行:

"my-push.hello-world" = "Hello, World!";
Run Code Online (Sandbox Code Playgroud)

显示给用户的推送消息将显示为“Hello, World”。

log-args 是将在消息中替换的字符串,就像您在[NSString stringWithFormat:@"blabla %@"];

苹果的例子是这样的:

推送通知负载:

"alert" : { 
    "loc-key" : "GAME_PLAY_REQUEST_FORMAT",
    "loc-args" : [ "Jenna", "Frank"]
}
Run Code Online (Sandbox Code Playgroud)

Localized.strings 内容:

"GAME_PLAY_REQUEST_FORMAT" = "%@ and %@ have invited you to play Monopoly";
Run Code Online (Sandbox Code Playgroud)