我目前在我的Android应用中使用Parse.com来满足我的云处理需求,并且我试图找出通过Parse服务器获取ParseObjects实时更新的最佳方法。每次我想用实时数据更新本地数据时,我都不必全部查询ParseObjects(看起来非常低效),因为Parse似乎建议使用缓存查询。
我已经拥有了从Parse服务器获取推送通知所需的BroadcastReceiver和服务,但由于这些通常会弹出一条消息,所以我不想走这条路。我已经有一个同步适配器来解决本地和服务器数据之间的任何冲突所以我只需要一种方法告诉我的应用程序已经对特定的ParseObject进行了更新,因此它只能获取该对象的更新(并告诉我ContentResolver已经进行了更新。)
修改 以下是我尝试使用Parse在其文档中提供的内容的代码。此代码仍然会向通知栏发送Notification对象,即使该标题为'并且警告' JSONObject中的标记没有值或空值。
//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中的一个动作标签...
pushObj.put("action", "com.parse.example.UPDATE");
答案 0 :(得分:2)
在您的共享首选项中保留最后一个检查日期,当您获得推送时,您需要做的就是查询创建日期和对象的更新日期,以查看是否大于上次检查日期。这样做只会在您上次检查后为您提供新的或更新的项目
答案 1 :(得分:0)
如果你有一个syncadapter,你有几个选择:
使用android d sync服务定期手动同步
编写未显示通知的自定义通知接收器。
在解析和您的应用之间实现实时MQ。使用解析云代码或类似方法触发它。
可能会更多,但这是第一个想到的。