iOS*_*Dev 5 apple-push-notifications localizable.strings nslocalizedstring ios7
我的应用程序支持4种语言和推送通知.当我向APNS发送推送通知时,我正在发送loc_key&loc-args.现在我需要在loc-args数组中发送本地化字符串,以便在应用程序收到推送通知时我可以在iOS应用程序端翻译它们.
但是当我发送本地化字符串时loc-args,它不是在通知中心显示已翻译的字符串,而是显示本地化的密钥.
我的字符串文件包含以下2条消息:
"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";
"ROLE_PROFESSIONAL_LOCALIZED_KEY" = "professional"
Run Code Online (Sandbox Code Playgroud)
服务器发送有效负载
{
aps = {
alert = {
"loc-args" = (
"John",
"ROLE_PROFESSIONAL_LOCALIZED_KEY"
);
"loc-key" = "WINNER_ALERT";
};
badge = 1;
sound = default;
};
}
Run Code Online (Sandbox Code Playgroud)
当我发送上述有效负载然后在iOS通知中心,消息看起来像
Congratulations! John won the match & became ROLE_PROFESSIONAL_LOCALIZED_KEY player
Run Code Online (Sandbox Code Playgroud)
代替
Congratulations! JOHN won the match & became professional player
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我是否可以发送本地化的字符串loc-args?如果是的话,我的有效载荷有什么问题?
提前致谢
我相信你的Localizable.strings文件应该是这样的:
"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";
Run Code Online (Sandbox Code Playgroud)
推送通知有效负载应如下所示:
{
aps = {
alert = {
"loc-args" = (
"JOHN",
"professional"
);
"loc-key" = "WINNER_ALERT";
};
badge = 1;
sound = default;
};
}
Run Code Online (Sandbox Code Playgroud)
这将给出所需的结果:
Congratulations! JOHN won the match & became professional player
这就是原因(根据Apple 的本地和远程通知编程指南):
loc-key : 当前本地化的 Localizable.strings 文件中警报消息字符串的键loc-args : 代替 loc-key 中的格式说明符出现的变量字符串值@Zak Answer的作品很迷人。
此外,如果需要professional本地化,它应该是WINNER_ARERT字符串的一部分。
如果您需要为传递不同的字符串professional,则应创建几个本地化的字符串。EG:
1) "WINNER_ALERT_PROFESSIONAL"= "Congratulations! %@ won the match & became professional player";
2) "WINNER_ALERT_SEMI_PROFESSIONAL"= "Congratulations! %@ won the match & became semi-professional player";
| 归档时间: |
|
| 查看次数: |
6731 次 |
| 最近记录: |