我的应用程序需要双语(英语和意大利语)。我正在通过云代码进行推送通知,并试图根据客户端语言发送不同的通知。我在Installation表中创建了一个语言字段,并将[[NSLocale preferredLanguages] objectAtIndex:0];保存到它。下面的代码可以工作,但我想知道是否还有其他方法可以做到这一点。我倾向于在查询之前设置“警报”消息,以便只有一个查询。基本上,我需要检查特定用户的语言字段是否为"it“,然后进行查询。唯一的解决办法是我的还是我的?
//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);
}
});
});发布于 2015-02-10 15:52:59
是的,有。您必须直接设置推送通知有效负载的aps字典,并使用loc-key以及可选的loc-args和action-loc-key参数。在第一个参数中,您在应用程序包中传递您在Localizable.strings文件中本地化的消息的本地化键。在第二个参数中,可以传递一个数组,该数组将被替换为本地化消息中的字符串占位符。第三个参数将用作默认操作的名称(“幻灯片到…")
例如,在Localizable.stings文件中定义以下键:
"msg" = "%@ wants to send you a message";
"rsp" = "respond";在云代码中,您可以按照以下方式构造推送有效负载:
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);此代码应显示"John希望向您发送一条消息“,将其本地化到用户当前的区域设置,默认操作为”幻灯片以响应…“。
https://stackoverflow.com/questions/26163121
复制相似问题