用云代码parsing推送通知语言

我的应用需要双语(英语和意大利语)。 我正在通过云代码推送通知,我试图根据客户端语言发送不同的通知。 我在安装表中创build了一个语言字段,并保存到[[NSLocale preferredLanguages] objectAtIndex:0]; 。 下面的代码工作,但我想知道是否有另一种方式来做到这一点。 我宁愿在查询之前设置“alert”消息,以便我只有1个查询。 基本上我需要检查该特定用户的语言字段是否为“it”,然后进行查询。 有可能或我的是唯一的解决scheme吗?

 //push test Parse.Cloud.afterSave("MeetingObject", function(request) { // user owner of the meeting object var user = request.object.get("user"); var pushQueryEn = new Parse.Query(Parse.Installation); pushQueryEn.equalTo("user", user); pushQueryEn.notEqualTo("language", 'it'); Parse.Push.send({ where: pushQueryEn, data: { alert: "English push test", badge: "Increment", sound: "cheering.caf", } }, { success: function() { // Push was successful console.log(request.object.get("language")); }, error: function(error) { console.error("Got an error " + error.code + " : " + error.message); } }); var pushQueryIt = new Parse.Query(Parse.Installation); pushQueryIt.equalTo("user", user); pushQueryIt.equalTo("language", 'it'); Parse.Push.send({ where: pushQueryIt, data: { alert: "Italian push test", badge: "Increment", sound: "cheering.caf", } }, { success: function() { // Push was successful console.log(request.object.get("language")); }, error: function(error) { console.error("Got an error " + error.code + " : " + error.message); } }); }); 

就在这里。 您必须直接设置推送通知负载的aps字典,并使用loc-key以及可选的loc-argsaction-loc-key参数。 在第一个参数中,您将在Localizable.strings文件中已经本地化的消息的本地化密钥传递给应用程序包。 在第二个参数中,您可以传递一个数组,将其replace为本地化消息中的string占位符。 第三个参数将被用作默认操作的名称(“幻灯片…”)

例如,在Localizable.stings文件中定义以下关键字:

 "msg" = "%@ wants to send you a message"; "rsp" = "respond"; 

在云端代码中,您可以按如下方式构build推送负载:

 var payload = "data":{ "aps":{ "alert":{ "loc-key":"msg", "loc-args":["John"], "action-loc-key":"rsp" }, } }; // set at least the 'where' key of the payload Parse.Push.send(payload); 

这段代码应该向你展示“约翰想给你发送一条消息”,本地化到当前的用户区域,默认的动作是“幻灯片回应…”