Javascript 在ParseInstallation对象中包含用户名是一种糟糕的形式吗?
我正在构建一个android应用程序,它使用Parse的推送功能在单个用户之间发送消息,在使用不同的解决方案进行了大量的欺骗之后(没有启用客户端推送,因为这显然是一个安全风险),我决定:Javascript 在ParseInstallation对象中包含用户名是一种糟糕的形式吗?,javascript,java,android,parse-platform,Javascript,Java,Android,Parse Platform,我正在构建一个android应用程序,它使用Parse的推送功能在单个用户之间发送消息,在使用不同的解决方案进行了大量的欺骗之后(没有启用客户端推送,因为这显然是一个安全风险),我决定: //com.myapp.Application.java public void onCreate(){ ... ParseInstallation i=ParseInstallation.getCurrentInstallation(); i、 put(“用户名”,ParseUser.getCurrentUs
//com.myapp.Application.java
public void onCreate(){
...
ParseInstallation i=ParseInstallation.getCurrentInstallation();
i、 put(“用户名”,ParseUser.getCurrentUser().getUsername());
i、 saveInBackground();
...
}
现在,当我想向单个用户发送推送时,我会调用一个云代码函数来执行以下操作:
// cloud/main.js
Parse.Cloud.define("pushMessage", function(request,response) {
var from = request.user.getUsername();
var to = request.params["receiver"];
var query = new Parse.Query(Parse.Installation);
query.equalTo('username', to);
Parse.Push.send({
where: query,
data: {
alert: "message from " + from,
// more data
}
}
}
这感觉有点像一个黑客,但它的工作。这是坏形式吗?到目前为止,我还不能完全理解我所看到的解决方案,主要是因为它们几乎完全面向iOS,我无法阅读objective-C。好的,所以我不得不重新做这件事。我会回答的,以防有人有同样的问题 在安装中包含用户名的问题是,您需要确保正确处理它。顾名思义,安装绑定到设备而不是用户。这意味着,如果您的应用程序支持多个用户,那么在relog上处理只需额外的一步,否则用户将得到不适合他们的推送 我忘了做一些,我的代码变成了sphagetti
在仔细研究了一会儿之后,我改变了方法,改为订阅一个以用户的ObjectId命名的频道,只需向该频道发送推送。然后,我在注销时取消订阅,并在每次应用程序打开时重新订阅。这样,如果关闭应用程序,仍然可以接收推送。它也可以正常工作,并且需要更少的代码。好的,所以我不得不重新做这个。我会回答的,以防有人有同样的问题 在安装中包含用户名的问题是,您需要确保正确处理它。顾名思义,安装绑定到设备而不是用户。这意味着,如果您的应用程序支持多个用户,那么在relog上处理只需额外的一步,否则用户将得到不适合他们的推送 我忘了做一些,我的代码变成了sphagetti 在仔细研究了一会儿之后,我改变了方法,改为订阅一个以用户的ObjectId命名的频道,只需向该频道发送推送。然后,我在注销时取消订阅,并在每次应用程序打开时重新订阅。这样,如果关闭应用程序,仍然可以接收推送。它也可以工作,并且需要更少的代码