2013-03-26 2 views
8

Ich bleibe für eine Weile bei einem mysteriösen Problem stecken. Also habe ich GCM in meiner Android App implementiert, aber ich erhalte einen INVALID_SENDER Fehler.GCM Ungültiger Absenderfehler

  • Meine SENDER_ID ist die ID aus der URL des Google-Projekts.
  • Die Android Push-Benachrichtigungen sind ON

Das Seltsame daran ist, dass ich bereits eine Registrierungs-ID haben, Benachrichtigungen zu senden an. Also meine Konsole sieht wie folgt aus:

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 

Im Inneren des 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); 
} 

broadcastreceiver:

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 "); 
    } 
} 

Manifest:

<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" /> 
+1

suchen Sie nach Log '03-26 11: 23: 38.704: V/GCMRegistrar (1389): Registrieren von app your.packagename.com von Absendern XXXXXX' waren' XXXXXX' ist der eigentliche Absender, der an Google sendet! – madlymad

+0

Sie haben mir in die richtige Richtung geholfen. Es ist jetzt behoben. Forgot zum Deaktivieren der alten C2DM-Version -_- .. – Zillan

Antwort

0

vergessen die C2DM Dienst zu deaktivieren. Silly me ..

+1

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. – fedorqui

+0

Ich bin der Autor. :-) – Zillan

+4

Kannst du klarstellen, was du meinst, indem du vergessen hast, den C2DM-Dienst auszuschalten? Was musstest du tun, um es auszuschalten? –

0

Vielleicht ist Ihre senderID nicht wahr. Sie sollten Konstruktor für GCMIntentService Klasse erstellen und super(<SenderId>) aufrufen.

10

Endlich ist es vorbei. Versuchte versehentlich, die "Projekt-ID" anstelle der "Projektnummer" zu verwenden. Die Google Developer Console stellt auf der Übersichtsseite sicher, dass Sie die richtige verwenden.