【发布时间】: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 中删除注册数据存储
那么由于向同一设备发送多条消息,我会很快使用来自应用引擎的免费 GCM 配额吗?
【问题讨论】:
标签: android google-app-engine google-cloud-messaging