GCM通知结果= [error = NotRegistered]

时间:2016-07-19 12:02:39

标签: android node.js google-cloud-messaging

我正在使用Node GCM。

通知在我的客户的某些设备中正常运行。有些手机遇到这个问题,他们在一段时间后没有收到通知。

检查日志后,我在一些电话中看到了以下错误。

{"multicast_id":7040074623564131000,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"NotRegistered"}]

对于此回复或之前的任何回复,我不会将canonical_ids设为1或更高。

我按照Canonical Registration ID and message ID format中提到的步骤操作,但我没有在响应中获得任何规范ID。

在某些手机中,GCM工作正常,所以我不确定如何从这里开始以及在哪里进行调试。

3 个答案:

答案 0 :(得分:0)

NotRegistered - 是一条消息,表示没有任何注册了传递ID的GCM设备。只需检查身份。

您必须仅在设备上发送推送通知,这些设备已在GCM和您的应用中注册(通过开发者控制台)。

您可以使用邮递员等不同的Rest客户端进行测试。只需使用json在特殊网址上发送您的数据。

答案 1 :(得分:0)

通常会发生这种情况,如果您的设备令牌未正确注册可能是由于存储长度..因此,请始终使用文本而不是varchar;如果使用varchar,则将大小设置为200 .. .. 谢谢

答案 2 :(得分:0)

我花了几天的时间来弄清楚如何解决类似的问题,当我尝试某些事情时,我认为这是愚蠢的。在Android中,生成令牌时,我将范围从“ GCM”更改为“”,此后,我不再收到NotRegistered了。

更改:

String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
         GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

收件人:

String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
         "", null);

我不知道为什么,但是对我有用。