2013-03-26 2 views
8

Я застрял какое-то время по загадочной проблеме. Итак, я реализовал GCM в своем приложении для Android, но получаю ошибку INVALID_SENDER.GCM Неверная ошибка отправителя

  • Мой идентификатор SENDER_ID является идентификатором URL-адреса проекта google.
  • андроида уведомления нажимные ВКЛЮЧЕНЫ

Странная вещь о том, что у меня уже есть регистрационный идентификатор для отправки уведомлений. Так что моя консоль выглядит следующим образом:

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

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

искать журнал '03-26 11: 23: 38.704: V/GCMRegistrar (1389): Регистрация приложения your.packagename.com отправителей XXXXXX' были' XXXXXX' - это фактический отправитель, отправляющий в google! – madlymad

+0

Ты помог мне в правильном направлении. Теперь это исправлено. Забыл отключить старую версию C2DM -_- .. – Zillan

ответ

0

Забыл выключить службу C2DM. Silly me ..

+1

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – fedorqui

+0

Я автор. :-) – Zillan

+4

вы можете уточнить, что вы имеете в виду, забыв отключить услугу C2DM? что вам нужно было сделать, чтобы отключить его? –

0

Возможно, ваш идентификатор отправителя не соответствует действительности. Вы должны создать конструктор для класса GCMIntentService и вызвать super(<SenderId>).

10

Наконец-то обошел это. Случайно пытался использовать «Идентификатор проекта» вместо «Номер проекта». Консоль разработчика Google предоставляет как на странице Обзор, убедитесь, что вы используете правильный.

Смежные вопросы