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

时间:2015-11-17 16:36:43

标签: ios apple-push-notifications

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

  

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

     

loc-args strings of strings变量字符串值代替   loc-key中的格式说明符。请参阅本地化格式化字符串   更多信息。

并且官方文档是here

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

我只是在这里猜测,但如果我有一个像这样的本地化字符串: mystring =“很酷的本地化消息” 那么loc_key将是“mystring”,是吗?

2 个答案:

答案 0 :(得分:3)

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

"my-push.hello-world" = "Hello, World!";

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

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

中一样

苹果的例子是:

推送通知有效负载:

"alert" : { 
    "loc-key" : "GAME_PLAY_REQUEST_FORMAT",
    "loc-args" : [ "Jenna", "Frank"]
}

Localizable.strings内容:

"GAME_PLAY_REQUEST_FORMAT" = "%@ and %@ have invited you to play Monopoly";

答案 1 :(得分:2)

如果有loc键,则loc_key引用可本地化文件中的键...

e.g。如果loc_key=XYZ,那么应用的可本地化文件中必须有一个条目"XYZ"="translated XYZ";

loc_args是要插入到已翻译字符串中的字符串数组,就像您使用了stringWithFormat:

一样

例如loc_args=["DOMI", "ME"]插入已翻译的XYZ,例如%@ is %@会导致"DOMI is ME"