我是新来解析的。我创建了一个Android应用程序,我必须通过单击发送按钮发送推送通知。我已成功将数据存储到其解析数据库,如对象ID,设备类型,设备令牌,推送类型(默认情况下在安装类下创建)。
我还在安装类下添加了一些自定义列,例如age,friend id,gender,并在编辑文本中检索对应的Object id。 但是当我尝试通过点击发送按钮发送推送通知时,我通常会收到此错误:
com.parse.Parse Exception: Clients aren't allowed to perform the find operation on the installation collection
我用来发送具有与给定Friend-id相对应的object-id的推送通知的查询是:
sndpush.setOnClickListener(new OnClickListener() {
@SuppressWarnings("unchecked")
@Override
public void onClick(View v) {
JSONObject obj;
try {
obj =new JSONObject();
obj.put("alert","erwerwe");
obj.put("action","com.parse.pushnotifications.UPDATE_STATUS");
obj.put("customdata","My string");
ParsePush push = new ParsePush();
ParseQuery query = ParseInstallation.getQuery();
query.whereEqualTo("objectId",objectidEditText.getText().toString() );
push.setQuery(query);
push.setData(obj);
push.sendInBackground();
}
catch (JSONException e)
{
e.printStackTrace();
}
}
});

我做google和R& D,我认为我们无权通过从安装类的默认类中获取对象ID来发送推送。
我在parse.com中创建了一个新类,我在其中插入了一些像age,friend-id这样的数据,并且还能够检索对应于friend id的object-id。但是,当我尝试通过提供Object-id来发送推送通知时,我收到错误:
java.lang.IllegalArgumentException: Can only push to a query for Installations
以下是代码:
// Get the user's Id from parse.com.
@SuppressWarnings({ "rawtypes", "unchecked" })
public void getObjectId() {
@SuppressWarnings("rawtypes")
ParseQuery query = new ParseQuery("_installation");
query.whereEqualTo("FriendId", FrndTextString);
query.getFirstInBackground(new GetCallback() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("objectId", "The getFirst request failed.");
} else {
String objectid = object.getObjectId();
objectidEditText.setText(objectid);
sndpush.setEnabled(true);
Log.d("objectId", "Retrieved the object.");
}
}
});
}

我已经跟踪了堆栈溢出的链接,以向特定用户发送推送通知。但是没有正确的结果。
send push notification with parse to single device
请告诉我哪里错了。我的主要问题是如何将推送通知从一个设备发送到另一个设备。
这是我的完整代码: