提问人:Siva Ram 提问时间:10/27/2015 最后编辑:Siva Ram 更新时间:10/27/2015 访问量:224
GCM 从服务器创建 Duclicate 多个通知
GCM creating Duclicate multiple Notifications from server
问:
这似乎是一个已知问题,但是当我搜索每个人谈论重复创建 GCM 注册 ID 时。但是我仍然没有重复的 IDS,有时我会收到重复的 ID,有时是 3 次是 10,它不是恒定的。我不明白为什么。
以下是我的代码。
服务器端:
我正在数据库中存储注册 ID,每当特定用户的 ID 发生变化时,我都会更新表的列。因此,我没有单个用户的多个 ID。
if(conn!=null)
{
PreparedStatement stmt = conn.prepareStatement("SELECT DISTINCT regid from userlogin1");
ResultSet rs = stmt.executeQuery();
while(rs.next())
{
list.add(rs.getString(1));
}
}
从中我选择不同的 ID
for(int i=0;i<list.size();i++)
{
String regId = list.get(i).toString();
System.out.println(regId);
String userMessage = request.getParameter("message");
Sender sender = new Sender(GOOGLE_SERVER_KEY);
Message message = new Message.Builder().collapseKey("Gcm").timeToLive(30)
.delayWhileIdle(false).addData(MESSAGE_KEY, userMessage).build();
result = sender.send(message, regId, 1);
request.setAttribute("pushStatus", result.toString());
}
通过这个,我正在推送消息。
我的列表包含 2 个元素,因为我在数据库中有 2 个用户。
当我在 BrodcastReceiver 检查时,它总是被多次调用。 因此,我收到了同一消息的重复通知。
我尝试了delayWhileIdle设置true仍然相同。 请帮忙
答:
0赞
Mustanser Iqbal
10/27/2015
#1
不幸的是,GSM有时行为异常,所以我有一个解决方案,我知道它不是最好的解决方案,但我相信它会解决您的问题。一旦我遇到同样的问题,我就可以通过创建一个标识符来避免这种情况。如果我收到消息 A。我将标识符标记为 A,这意味着标识符有一条消息 A,当我收到另一条消息(重复)时,我只是与我的标识符进行比较,如果它们相同,我只是忽略该消息,否则我会进一步处理......
评论
0赞
Siva Ram
10/27/2015
感谢您的建议,但是我该怎么做,我有机会收到重复的消息内容,例如房间号,如果它在不同的时间出现,那么我怎样才能实现您的建议
0赞
Mustanser Iqbal
10/27/2015
还行。。一个房间一次只能分配给一个人。当分配另一个房间时,标识符也应该像第一次一样更改,它是 1,然后是 2。那么它可以再次是 1,反之亦然......希望你能理解
上一个:Exchange和拆分分区有问题
下一个:如何在同一活动中来回移动
评论