您需要检查您的注册 ID 的来源,您不能在 GCM 消息帖子中使用 C2DM 注册 ID。来自谷歌的文档:
C2DM 和 GCM 不可互操作。例如,您不能将通知从 GCM 发布到 C2DM 注册 ID,也不能将 C2DM 注册 ID 用作 GCM 注册 ID。在您的服务器端应用程序中,您必须跟踪注册 ID 是来自 C2DM 还是 GCM 并使用正确的端点。
当您从 C2DM 过渡到 GCM 时,您的服务器需要知道给定的注册 ID 是否包含旧的 C2DM 发件人或新的 GCM 项目编号。这是我们推荐的方法:让新的应用程序版本(使用 GCM 的应用程序版本)连同注册 ID 一起发送。这个位告诉你的服务器这个注册 ID 是为 GCM 准备的。如果您没有获得额外的位,则将注册 ID 标记为 C2DM。一旦不再有有效的注册 ID 被标记为 C2DM,您就可以完成迁移。
另外需要注意的是SENDER_ID,如果使用InstanceID获取RegistrationID,SENDER_ID的格式是数字,比如
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
SENDER_ID 无法使用项目名称,请使用https://developers.google.com/mobile/add获取“Server API Key”和“Sender ID”。