【问题标题】:GCM same ID multiple times in data store after updation from getCanonicalRegistrationId Canonical IDs从 getCanonicalRegistrationId 规范 ID 更新后,数据存储中的 GCM 相同 ID 多次
【发布时间】:2016-05-02 13:11:56
【问题描述】:

我想在我的 android 应用程序中实现 GCM,并且我已将此代码用于我的服务器端实现。

https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/GcmEndpoints

并且实现工作正常,我的应用能够接收发送的消息。

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

所以现在我发送 GCM 消息,结果是这个代码(Canonical IDs),如果它从结果中接收到 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 不存在将其从数据存储中删除,并且此调用也执行了多次。

注册 ID APA91bGn_GgXcp4L_bqwOMhmO9BRnXfjCAQgso-EbmC27L1UoNcdcPmtt5rxVMXKtW7P3_fzUNGmyMXtKBjz22iCVLiYyKPwp3uGrd8BxPlXhfQeIqYHKfyimciVXLuXdsGFvzIlIMrpf,不再从 GCM 中删除注册数据存储

那么由于向同一设备发送多条消息,我会很快使用来自应用引擎的免费 G​​CM 配额吗?

【问题讨论】:

    标签: android google-app-engine google-cloud-messaging


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      相关资源
      最近更新 更多