我目前正在使用 Parse.com 来满足我的 Android 应用程序中的云处理需求,并且我正在尝试找出通过 Parse 服务器实时更新 ParseObjects 的最佳方式。我不想每次都想用实时数据更新本地数据(看起来效率很低),因为 Parse 似乎建议使用缓存查询,所以我不必每次都获取 ParseObjects 的整个查询。
我已经有了从 Parse 服务器获取推送通知所需的 BroadcastReceiver 和服务,但由于它们总是弹出一条消息,我也不想走这条路。我已经有一个同步适配器来解决本地和服务器数据之间的任何冲突,所以我只需要一种方法来告诉我的应用程序已经对特定的 ParseObject 进行了更新,这样它就可以只获取该对象的更新(并告诉我的ContentResolver 已更新)。
编辑: 下面是我尝试使用 Parse 在其文档中建议的代码。即使 JSONObject 中的“title”和“alert”标签没有值或为空值,此代码仍会向通知栏发送一个 Notification 对象。
//custom notification data
JSONObject pushObj = new JSONObject();
try {
pushObj.put("notifVal", "TestValue");
}
catch (JSONException e1) {
e1.printStackTrace();
Log.i(TAG, "Error creating Push Notification JSONObject");
return;
}
//Parse notification object
ParsePush pPush = new ParsePush();
pPush.setData(pushObj);
ParseQuery<ParseInstallation> query = ParseInstallation.getCurrentInstallation().getQuery();
pPush.setQuery(query);
pPush.sendInBackground(new SendCallback() {
@Override
public void done(ParseException e) {
if(e == null)
Log.i(TAG,"Push Notification Sent");
else
Log.i(TAG,"Push Notification Error");
}
});
编辑 2: 很简单,我所缺少的只是 JSONObject 中的一个 Action 标签……
pushObj.put("action", "com.parse.example.UPDATE");
最佳答案
在您的共享首选项中保留最后一次检查日期,这样当您收到推送时,您所要做的就是查询对象的创建日期和更新日期,以查看是否大于您的最后一次检查日期。这样做只会为您提供自上次检查以来的新项目或更新项目
关于android - 将 ParseObject 与 Parse.com 同步的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25819398/