我正在将我的应用程序从C2DM迁移到GCM,但是我将发送注册ID的服务器仍然可以娱乐C2DM ID。所以我的问题是我可以从我的应用程序做什么,以便服务器可以确定这是GCM ID。 Google建议发送一个新位以及注册ID。我怎样才能做到这一点。请给一个例子。区分GCM和C2DM ID
回答
这是你如果不使用AppEngine需要做的。
在您的服务器中,您应该已经有一个存储所有注册ID(reg_id)的表。您需要在此表中添加另一列,例如'is_gcm_reg_id'。由于当前所有的C2DM reg_id,因此您可以将此列的所有现有行都设置为'0'。如果你喜欢,你也可以创建一个新表来存储GCM reg_ids。
然后在启用GCM的应用程序中,您只需让服务器知道reg_id是GCM reg_id。您没有提及如何将reg_id上传到您的服务器(Web服务调用?简单的POST请求?)。如果使用Web Service调用,只需创建一个新的方法,该方法将由您的新GCM应用专门使用。如果使用POST请求,只需添加另一个键值对,如'gcm = true',并且您的服务器应该查找此kvp。
最后,您应该知道需要知道reg_id是GCM的所有片段,并相应地更新'is_gcm_reg_id'列字段(或新的GCM表)。
假设您使用App Engine来实现GCM/C2DM。
在您的App Engine的deviceInfo实体中,已经有一个“type”字段。这是您将修改为“ac2dm”或“gcm”的字段。
一个简单的方法是创建一个简单的传递“gcm”而不是“ac2dm”的新注册请求。看看你的AppEngine项目并找到RegistrationInfo类。看看register()方法。只需将“ac2dm”替换为“gcm”即可。
EX:
// original
public void register() {
log.info("register " + this);
try {
doRegister(getDeviceRegistrationId(), "ac2dm", getDeviceId(), getAccountName());
} catch (Exception e) {
log.info("Got exception in registration: " + e + " - " + e.getMessage());
for (StackTraceElement ste : e.getStackTrace()) {
log.info(ste.toString());
}
}
log.info("Successfully registered");
}
// new version
public void register() {
log.info("register " + this);
try {
doRegister(getDeviceRegistrationId(), "gcm", getDeviceId(), getAccountName());
} catch (Exception e) {
log.info("Got exception in registration: " + e + " - " + e.getMessage());
for (StackTraceElement ste : e.getStackTrace()) {
log.info(ste.toString());
}
}
log.info("Successfully registered");
}
你可能会重新编译RPC服务来得到这个工作。
现在,您需要确保您的服务器检查deviceInfo实体的“gcm”标签并采取相应措施。另外,如果你还没有看到它,请阅读这个https://developer.android.com/guide/google/gcm/c2dm.html
- 1. C2DM和GCM的区别是什么
- 2. C2DM到GCM android
- 3. C2DM到GCM代码迁移
- 4. 从C2DM到GCM的移植
- 5. 迁移到GCM,但仍然有C2DM注册ID
- 6. 将GCM通知发布到现有的C2DM注册ID
- 7. GCM和id处理
- 8. GCM框架参数和GCM注册ID
- 9. 从C2DM移植到Android SDK的GCM 19
- 10. C2DM&GCM上的无效注册
- 11. 如何将C2DM更改为GCM?
- 12. android c2dm注册ID
- 13. Android C2DM注册ID
- 14. C2DM注册ID null
- 15. 区分变量和ID
- 16. 通过GooglePlay服务端点的C2DM和GCM
- 17. Android可以在GCM和C2DM上工作吗?
- 18. GCM规范ID
- 19. canonical registration id gcm
- 20. GCM注册ID
- 21. 区分ID的
- 22. Oracle按分区划分ID和按DATE分区间隔
- 23. Android C2DM注册ID刷新
- 24. android c2dm注册ID失败
- 25. Android C2DM发件人ID
- 26. C2DM中的设备ID
- 27. 区别:ID/*和@ + ID/*
- 28. 是否需要C2DM的设备ID和注册ID?
- 29. Android GCM注册ID
- 30. GCM ID未在android
嘿谢谢..有点好方法,我会尝试......而我正在使用网络服务呼叫 – Rookie