Android 解析云函数向特定用户发送JSON

Android 解析云函数向特定用户发送JSON,android,json,parse-platform,Android,Json,Parse Platform,我创建了一个应用程序,用户可以在其他用户中发送消息(通知)。对于这些问题,我使用parse SDK。因此,我使用下面的代码将消息从设备发送到解析云中 final ParseQuery<ParseUser> query = ParseUser.getQuery(); query.whereEqualTo("email", "user@email.com"); query.getFirstInBackground(new GetCallback<ParseUser&

我创建了一个应用程序,用户可以在其他用户中发送消息(通知)。对于这些问题,我使用parse SDK。因此,我使用下面的代码将消息从设备发送到解析云中

final ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("email", "user@email.com");
    query.getFirstInBackground(new GetCallback<ParseUser>() {

        public void done(ParseUser object, ParseException e) {
            if (e == null) {
                Toast.makeText(getActivity(), "User found", Toast.LENGTH_SHORT).show();
                String search_username = object.getString("username");
                String id = object.getObjectId();
                Log.d("ObjectID:",id);
                HashMap<String, Object> params = new HashMap<String, Object>();
                params.put("recipientId", id);
                params.put("message", username);
                ParseCloud.callFunctionInBackground("sendPushToUser", params, new FunctionCallback<String>() {
                    public void done(String success, ParseException e) {
                        if (e == null) {
                            // Push sent successfully
                            Toast.makeText(getActivity(), "Request send", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
}))


但消息一直没有收到。如果我从parse dashboard发送推送通知,一切正常。有人知道怎么解决吗?设备希望收到JSON,那么我的云函数可能没有以JSON格式发送数据吗?提前感谢

我在发送通知时遇到了两个问题

  • 启用客户端推送“不适用于您的情况”
  • 未在安装中保存用户“尝试以下操作”
用户登录到您的应用程序后,通过以下方式将其id添加到安装中:

ParseInstallation installation = ParseInstallation.getCurrentInstallation();
installation.addUnique("userId", currentUser.getObjectId());
installation.saveInBackground(new SaveCallback() {
    @Override
    public void done(ParseException e) {
        // check the returned exception
        if (e == null) {
           // everything worked fine
        } else {
            // error occurred
        }
    }
});
希望有帮助:)

更新
在您的代码中,您正在发送收件人用户名。虽然您也在云函数中保存了用户名,但您也有同样的问题,用户名已保存,但您根据id查询安装。我已更新了上面的安装,还将云函数中的“用户”更改为“用户id”


你启用了客户端推送吗?没有,我认为启用客户端推送不需要使用云函数,我启用了客户端推送,但什么都没有发生。我还使用以下命令保存我的用户:ParseUser user=new ParseUser();user.setUsername(用户名);user.setEmail(email);user.signUpInBackground(新的SignUpCallback(){我可以不将数据发送到JSON对象吗?当我在设备中收到通知时,我尝试获取JSON对象将用户信息保存到安装与注册不同,注册后请尝试上面的代码,并告诉我结果否,没有再次发生任何事。在分析仪表板中显示通知,但发送的推送再次为零。是吗您是否也将收件人用户添加到安装中?我认为您只发送了
数据:{“警报”:{“数据”:{“消息”:“消息”,“标题”:“标题”}}
请尝试使用您自己的数据进行设置
ParseInstallation installation = ParseInstallation.getCurrentInstallation();
installation.addUnique("userId", currentUser.getObjectId());
installation.saveInBackground(new SaveCallback() {
    @Override
    public void done(ParseException e) {
        // check the returned exception
        if (e == null) {
           // everything worked fine
        } else {
            // error occurred
        }
    }
});
pushQuery.equalTo("userId", recipientUser);