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

时间:2015-10-26 19:54:06

标签: android push-notification google-cloud-messaging

这似乎是一个已知的问题,但当我搜索每个人都在谈论重复创建GCM注册ID。但我没有重复的IDS仍然我有时会重复3次,有时候是3次,这不是常数。我无法理解为什么。

以下是我的代码。

服务器端:

我在DB中存储Registarion 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个元素,因为我在DB中有2个用户。

当我检查BrodcastReceiver时,它总是多次调用。 由于这个原因我得到相同消息的重复通知。

我试过delayWhileIdle设置为true仍然相同。 请帮忙

1 个答案:

答案 0 :(得分:0)

不幸的是,GSM有时表现异常所以我有一个解决方案,我知道它不是最好的解决方案,但我相信它会解决你的问题。一旦我有同样的问题,我通过创建一个标识符来避免这种情况。如果我收到消息A.我将标识符标记为A它表示标识符有消息A,当我收到另一条消息(重复)时,我只是简单地与我的标识符进行比较,如果它们相同我只是忽略该消息,否则我进一步处理......