GCM 从服务器创建 Duclicate 多个通知

GCM creating Duclicate multiple Notifications from server

提问人:Siva Ram 提问时间:10/27/2015 最后编辑:Siva Ram 更新时间:10/27/2015 访问量:224

问:

这似乎是一个已知问题,但是当我搜索每个人谈论重复创建 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仍然相同。 请帮忙

Android 推送通知 google-cloud-messaging

评论

0赞 Arthur Thompson 10/27/2015
您是否在两台设备上都收到多条通知?您也可以尝试发送到单个设备,看看是否遇到同样的问题?

答:

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,反之亦然......希望你能理解