GCM发件人错误无效

我在一个神秘的问题上困了一会儿。 所以我在我的android应用程序中实现了GCM,但是我收到了一个INVALID_SENDER错误。

  • 我的SENDER_ID是来自google项目的url的ID。
  • Android推送通知是开启的

奇怪的是,我已经有一个注册ID发送通知。 所以我的控制台看起来像这样:

03-26 09:39:20.233: I/<test>(19761): Already registered: APA91bG6- O3OnZt50EAjYvJ5KETv3qAlPOn2SfOPXez7SLAmaAOkHTN6EMDJb91gFIWkftZkJiub6UoEk4O- WQP7kk2oZGQjZ1VCZZS0WddQtjFaCfYfZfb7SEw3IS1sd4caJcdZE4LA1F0hxzc7Ss1UiYHXX-XXXX 03-26 09:48:23.522: I/<test>(19925): GCMIntentService 03-26 09:39:20.670: I/<test>(19761): on Error INVALID_SENDER 

在onCreate里面:

 GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { Log.i("<test>", "registering"); GCMRegistrar.register(this, "2194354949XX"); } else { Log.i("<test>", "Already registered: " + regId); } 

广播接收器:

  public class GCMBroadcastReceiver extends com.google.android.gcm.GCMBroadcastReceiver{ @Override protected String getGCMIntentServiceClassName(Context context){ return "be.XXX.XXX.system.GCMIntentService"; } } 

GCMIntentService:

  public class GCMIntentService extends GCMBaseIntentService { @Override protected void onError(Context arg0, String errorId) { Log.i("<test>","on Error " + errorId); } @Override protected void onMessage(Context arg0, Intent intent) { Log.i("<test>","onMessage " + intent.getExtras().toString()); } @Override protected void onRegistered(Context arg0, String regId) { Log.i("<test>","Registration id: " + regId); } @Override protected void onUnregistered(Context arg0, String regId) { Log.i("<test>","onUnregistered " + regId); } public GCMIntentService() { super("2194354949XX"); Log.i("<test>","GCMIntentService "); } } 

performance:

  <permission android:name="com.XX.XX.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.smstiming.hezemans.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <receiver android:name="be.XX.XX.system.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.smstiming.hezemans" /> </intent-filter> </receiver> <service android:name="be.XX.XX.system.GCMIntentService" /> 

  • 错误getGoogleAppId失败,状态为:10 Android KitKat - GCM和Google云端硬盘
  • 是否可以在设备上使用没有Google帐户和Google Play服务的GCM?
  • Google GCM服务器返回未经授权的错误401
  • GCM云连接服务器中上行消息的主要用途是什么?
  • Android GCM:根据应用是否可见来处理推送的不同方式
  • 有人可以解释GCM和Google Pub / Sub之间的区别吗?
  • 为什么需要将configuration文件添加到我的项目来正确设置gcm?
  • 如何解决INSTALL_PARSE_FAILED_MANIFEST_MALFORMED在我的android应用程序
  • 终于解决了这个问题。 是不小心尝试使用“项目编号”而不是“项目编号”。 Google开发者控制台在“概述”页面上提供了这两个选项,请确保您使用的是正确的。

    忘记closuresC2DM服务。 傻我..

    也许你的senderID是不正确的。 您应该为GCMIntentService类创build构造函数并调用super(<SenderId>)