我正在玩解析推送通知,并想到一种实现i18n支持用户到用户通知的好方法。
我的想法:
它工作正常,但我认为还有优化空间。我没有进行任何性能测试,看看它在生产中是如何工作的。
我目前正在运行10种语言的设置。如果收件人在他的所有设备上使用相同的语言,则10个Parse.Push.send({})中的9个;实际上没有必要进行操作。但我现在不知道如何避免它们。
var translations = require('cloud/translations.js');
var languages = ["en", "de"];
Parse.Cloud.define("sendPushToUser", function(request, response) {
var recipientUserId = request.params.recipient;
var message = request.params.message;
var key = request.params.messageKey;
var senderName = request.params.name;
var language;
var translationsObj = translations["translations"];
for(var i = 0; i < languages.length; i++){
language = languages[i];
pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo("userId", recipientUserId);
pushQuery.equalTo("language", language);
var alertMessage = message;
if(translationsObj[key] && translationsObj[key][language]){
console.log("found translation for " + key + " (" + language + ")");
var rawMessage = translationsObj[key][language];
alertMessage = rawMessage.split("[[senderName]]").join(senderName);
}
Parse.Push.send({
where: pushQuery,
data: {alert: alertMessage}
}).then(function() {
console.log("successfully send push '" + alertMessage + "' to " + recipientUserId + "")
}, function(error) {
});
}
response.success("Push was sent successfully");
});