【发布时间】:2015-04-23 15:48:54
【问题描述】:
所以我最大的问题是我以前从未编写过任何 javascript 行,但随着我开发应用程序,我越来越清楚我必须在 Cloud Code 中使用它。
我有一个名为 Groups 的解析类,在这个类中我使用以下数据存储组:
Name, Description, Users, Requests.
如果用户从他们的设备创建一个组,它将在此处包含给定的名称、描述和用户指针,并且我使用带有 +“C”字符的新 objectId(有时 objectId 以编号,但它对频道无效)将该用户(安装)下标到频道,所以如果我查询组,我会得到 objectId,我可以向组的每个成员发送推送通知。
我的第一个问题在这里,如果我使用以下代码将频道存储到安装对象中:
groups = new Groups();
groups.setName(groupName.getText().toString());
groups.put("members", ParseUser.getCurrentUser());
groups.setDesc(description.getText().toString());
groups.saveEventually(new SaveCallback() {
@Override
public void done(ParseException e) {
//Subscribe to push
ParsePush.subscribeInBackground("C" + groups.getObjectId(), new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d("com.parse.push",
"successfully subscribed to the broadcast channel.");
} else {
Log.e("com.parse.push", "failed to subscribe for push", e);
}
}
});
如果用户有多个设备,那么他不会仅在他创建组的设备上收到每个设备上的推送通知。我搜索了它,我确信我必须在订阅过程中使用 Parse Cloud 功能,并且特定用户的所有安装都将订阅相同的频道。
这是我的第一个问题。任何人都可以提供帮助或只是给我一些参考来解决这个问题(我阅读了所有云文档)
注意: 注册后,我将用户指针添加到安装,如下所示:
ParseInstallation.getCurrentInstallation().put("user", ParseUser.getCurrentUser());
我的第二个问题:
我发现其他人也有问题,并且有一些解决方案,但我的问题有点复杂。所以我注意到,如果我从设备发送客户端通知,它将被传递到选定的频道,它工作正常,但是如果我删除应用程序然后重新安装它,并且我正在发送客户端通知,它不会删除设备的多个安装对象,我会收到两次通知
(我知道如果我从解析仪表板发送通知,它正在执行删除工作)。
所以我需要一个云功能来检查是否存在具有相同用户和 androidId 的其他安装(在安装时添加,从 Android Security 获取),如果存在,则将其删除,检查是否有其他安装相同的用户但不同的andoidId,将该安装的频道复制到我的新频道,然后保存新安装。
同上,参考,示例代码,任何东西。
我认为它对其他人也有用,希望有人可以帮助我。
(P.S.:如果您需要更多信息,请发表评论,我将始终在 24 小时内回复)
【问题讨论】:
标签: javascript android parse-platform parse-cloud-code