GCM'错误:未注册'

LKM*_*LKM 40 android registration google-cloud-messaging

我成功测试了我的GCM代码.

但完全相同的代码,我无法得到GCM推送并得到:

GCM错误:未注册.

Sam*_*mik 52

GCM响应Not Registered意味着"如果是NotRegistered,您应该从服务器数据库中删除注册ID,因为应用程序是从设备上卸载的,或者没有配置广播接收器来接收com.google.android.c2dm.intent.RECEIVE意图".来自文档.检查从设备上卸载应用程序或在AndroidManifest中描述错误的广播接收器时出现此错误的情况.您可以使用我的测试GCM服务器测试GCM功能.希望,这对你有所帮助.


小智 18

如果您正在使用设备进行测试,则需要在获取令牌并重新测试之前删除InstanceID,因为一旦覆盖了APK,它就会取消注册InstanceId并导致NotRegistered错误.因此,在您的RegisterIntentService类中,在onHandleIntent函数中执行以下操作:

InstanceID instanceID = InstanceID.getInstance(this);
try
{
    instanceID.deleteInstanceID();
} catch(IOException e) 
{
    e.printStackTrace();
}
instanceID = InstanceID.getInstance(this);
Run Code Online (Sandbox Code Playgroud)


Roo*_*ahi 9

Not RegisteredGCM认为设备无法处理消息时会发生这种情况.如果应用程序被卸载或配置错误以处理消息,则会发生这种情况:

在此输入图像描述

基于@Samik和@ O'Rilla的答案,我建议采取以下步骤:

  1. 从Android设备卸载当前安装
  2. 请确保您有<receiver><sender>中定义<application>节点AndroidManifest.xml.
  3. 请确保您有正确的<category android:name="COM.COMPANY.YOURAPP" /><receiver>
  4. 确保Receiver的实现是正确的


nar*_*ren 5

如果你真的认为你的代码是正确的,仍然会出错

{"error": "NotRegistered"} 
Run Code Online (Sandbox Code Playgroud)

尝试从手机上手动取消安装应用程序并再次运行(您的设备将获得新的注册ID).

至少在我的情况下问题解决了!