2014-10-02 44 views
0

我的应用需要双语(英语和意大利语)。我正在通过云代码处理推送通知,我正在尝试根据客户端语言发送不同的通知。我在安装表中创建了一个语言字段并将其保存到 [[NSLocale preferredLanguages] objectAtIndex:0];。下面的代码工作,但我想知道是否有另一种方式来做到这一点。我希望在查询之前设置“alert”消息,以便我只有1个查询。基本上我需要检查该特定用户的语言字段是否为“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); 
    } 
}); 
}); 
+0

您能否添加iOS代码? – 2017-07-25 13:24:29

回答

1

是的,有。您必须直接设置推送通知负载的aps字典,并使用loc-key以及可选的loc-argsaction-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); 

此代码应该告诉你“约翰想向您发送消息”,定位于用户和默认操作的当前区域将是“移动滑块来回应......”