将Parse推送通知发送给特定用户

时间:2016-02-04 04:46:24

标签: android

直截了当,我可以将推送通知从我的应用发送到其他具有相同频道名称的应用。 现在我的要求是我需要发送给特定用户。阅读一些有关它的文档,但仍然不清楚如何实现它。这是我到目前为止所做的。

 ParseQuery pushQuery = ParseInstallation.getQuery();
    pushQuery.whereEqualTo("user", receiver);

    ParsePush push = new ParsePush();
    push.setQuery(pushQuery);

    push.setChannel("words");
    push.setMessage(ParseUser.getCurrentUser().getUsername() + " sent you a Gift");
    push.sendInBackground();

按钮点击:

import json
path = 'folder/data.txt'
records=[json.loads(line) for line in open(path,'rb')]

2 个答案:

答案 0 :(得分:0)

删除push.setQuery(pushQuery);

答案 1 :(得分:0)

我的解决方案只适用于以下情况:

您将每个安装与用户关联:ParseInstallation.currentInstallation.put("user",ParseUser.currentUser)

        //search all receiver users
        ParseQuery<ParseUser> userQuery = ParseUser.getQuery();
        userQuery.whereEqualTo("user", receiver);
        userQuery.findInBackground(new FindCallback<ParseUser>() {
            public void done(List<ParseUser> users, ParseException e) {
                if (users != null && users.size() > 0) {
                    //now you have all receivers
                    for (int i = 0; i < users.size(); i++) {
                        ParseUser user = users.get(i);
                        //now searching needed channel inside array of receivers
                        ArrayList<JSONObject> channels = (ArrayList<JSONObject>) user.get("channels");
                        if (channels.contains("words")){
                            //here sending the push
                            ParseQuery<ParseUser> userQuery = ParseUser.getQuery();
                            ParseQuery<ParseInstallation> installationQuery = ParseInstallation.getQuery();
                            userQuery.whereEqualTo("user", user);
                            installationQuery.whereMatchesQuery("user", userQuery);

                            ParsePush push = new ParsePush();
                            push.setQuery(installationQuery);
                            push.setMessage(ParseUser.getCurrentUser().getUsername() + " sent you a Gift");
                            push.sendInBackground();
                        }
                    }
                }
            }
        });

如果您的用户在许多具有不同渠道的设备中使用相同的帐户,那么这不是您的解决方案。