Javascript 在ParseInstallation对象中包含用户名是一种糟糕的形式吗?

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

我正在构建一个android应用程序,它使用Parse的推送功能在单个用户之间发送消息,在使用不同的解决方案进行了大量的欺骗之后(没有启用客户端推送,因为这显然是一个安全风险),我决定:

//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命名的频道,只需向该频道发送推送。然后,我在注销时取消订阅,并在每次应用程序打开时重新订阅。这样,如果关闭应用程序,仍然可以接收推送。它也可以工作,并且需要更少的代码