Android 对于已卸载的注册id,没有NotRegistered消息

Android 对于已卸载的注册id,没有NotRegistered消息,android,push-notification,google-cloud-messaging,Android,Push Notification,Google Cloud Messaging,我通过以下方式获得注册Id: String regid = (GoogleCloudMessaging.getInstance(this)).register("My_Sender_ID"); 并将其存储在我服务器上的数据库中。稍后,当卸载应用程序时,我尝试发送一条消息,预期会出现一条NotRegistered错误消息,我将从数据库中删除相应的Id 但问题是它仍然会像其他成功案例一样返回一条消息\u id。我想再测试一段时间,等了一个小时,现在我得到了正确的信息 [error] => N

我通过以下方式获得注册Id:

String regid = (GoogleCloudMessaging.getInstance(this)).register("My_Sender_ID");
并将其存储在我服务器上的数据库中。稍后,当卸载应用程序时,我尝试发送一条消息,预期会出现一条NotRegistered错误消息,我将从数据库中删除相应的Id

但问题是它仍然会像其他成功案例一样返回一条消息\u id。我想再测试一段时间,等了一个小时,现在我得到了正确的信息

[error] => NotRegistered
那么,这是预期的延迟吗


谢谢

是的,预计会有延误

在卸载应用程序后第一次尝试发送消息时,GCM服务器尝试将其发送到设备,发现您的应用程序不再在该设备上注册为GCM

在卸载后第二次尝试发送消息时,您收到了
NotRegistered
错误,因为这一次GCM服务器知道此注册ID不再注册

您不必等待一个小时就可以再次尝试发送

注意:当用户卸载应用程序时,不会自动卸载 未在GCM上注册。只有在GCM服务器尝试时才取消注册 向设备发送消息,设备回答 应用程序已卸载或没有广播接收器 配置为接收com.google.android.c2dm.intent.receive意向。 此时,服务器应将设备标记为未注册(默认情况下 服务器将收到一个NotRegistered错误)


(引用自)

为了增加更多细节,Eran的回答是正确的,但我发现在多次尝试生成未注册响应后,我会得到一个messageId,就好像应用程序仍然安装在设备上一样。我在谷歌集团上发现了这一点,该集团解释说,时间到现场是问题的一部分。显然,默认的time-to-live值是4周,因此您可能需要等待很长时间才能收到未注册的响应。我将time_to_live设置为90秒,并在第二次尝试时收到NotRegistered响应。希望这将有助于其他人,因为当我试图弄明白这一点时,这让我很头疼


有关GCM消息格式的详细说明,请参阅。GCM消息格式详细说明了应如何将生存时间添加到消息中。

在取消安装后第二次尝试发送消息时,您收到了NotRegistered错误。
。实际上我试了10多次。终于尝试了等待一段时间。@user1537779这很有趣。Google没有指定GCM服务器检测到注册ID不再注册需要多长时间,但当我尝试时,我在第二次尝试发送消息时立即收到
NotRegistered
错误。很好。我只是想确认一下。我会再试一次。谢谢。两天前,在尝试时,第二次尝试时发送了NotRegistered消息。但今天,尽管等待了几个小时,这种情况还是没有发生:(这似乎发生在很多人身上。很可能是他们这边的一个错误。@MichaelMassey)