Android 从getCanonicalRegistrationId Canonical ID更新后,GCM在数据存储中多次使用相同ID

Android 从getCanonicalRegistrationId Canonical ID更新后,GCM在数据存储中多次使用相同ID,android,google-app-engine,google-cloud-messaging,Android,Google App Engine,Google Cloud Messaging,我想在我的android应用程序中实现GCM,我已经在服务器端实现中使用了这段代码 实现工作正常,我的应用程序能够接收发送的消息 我安装了我的应用程序并获得了一个GCM ID,在我的服务器上注册了它,我卸载了它并再次安装了它,这次获得了一个新的GCM ID 所以现在我发送GCM消息,结果是这个代码(规范ID),如果它从结果中接收到getCanonicalRegistrationId,它将更新数据存储中的GCM ID Result result = sender.send(msg, record

我想在我的android应用程序中实现GCM,我已经在服务器端实现中使用了这段代码

实现工作正常,我的应用程序能够接收发送的消息

我安装了我的应用程序并获得了一个GCM ID,在我的服务器上注册了它,我卸载了它并再次安装了它,这次获得了一个新的GCM ID

所以现在我发送GCM消息,结果是这个代码(规范ID),如果它从结果中接收到getCanonicalRegistrationId,它将更新数据存储中的GCM ID

Result result = sender.send(msg, record.getRegId(), 5);

  if (result.getMessageId() != null) {
    log.info("Message sent to " + record.getRegId());
    String canonicalRegId = result.getCanonicalRegistrationId();
       if (canonicalRegId != null) {
          // if the regId changed, we have to update the datastore
          log.info("Registration Id changed for " + record.getRegId() + " updating to " + canonicalRegId);
          record.setRegId(canonicalRegId);
          ofy().save().entity(record).now();
       }
但在应用程序引擎数据存储中,我可以看到2行具有相同的GCM ID,因为响应后它会更新记录

这是发送任何消息之前的数据库映像,同一设备上有2个不同的GCM id(因为应用程序安装了两次)

这是发送消息后的数据库映像,其中有2个相同的GCM id(GCM id字段的值相等)

所以问题是,当我在我的应用程序中收到多条消息时,当我有多条相同GCM id的记录后发送消息时,这是一个问题吗?我应该如何尝试纠正它

卸载应用程序后,我会在应用程序引擎中获取这些日志。 从数据存储中删除GCM ID时,GCM ID不存在,并且此调用也会执行多次

注册Id APA91bGn_GgXcp4L_bqwOMhmO9BRnXfjCAQgso-ebmc27l1uoncPmtt5rxvmxktw7p3_fzungMymxTkbjz22icvliykPwp3ugrd8bxlxHfqeiqykfyimcivxluxDsgfzilimrf不再在GCM注册,从数据存储中删除

因此,由于向同一台设备发送多条消息,我会很快使用app engine提供的免费GCM配额吗


我在我的表中添加了Android字段,因此在注册时我检查,如果表中存在Android,我会更新该行的gcm id,这样即使在同一设备上多次安装应用程序,我的表中也只有一行

我在表中添加了Android字段,所以在注册时我检查,如果表中存在Android,我将更新该行的gcm id,这样即使在同一设备上多次安装应用程序,我的表中也只有一行