Неверная ошибка отправителя GCM

106
13

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


    Мой SENDER_ID является идентификатором URL-адреса проекта google.
    Уведомления Android push включены.

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


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


манифеста:


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

спросил(а) 2013-03-26T11:58:00+04:00 6 лет, 11 месяцев назад
1
Решение
114

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

ответил(а) 2014-08-27T16:49:00+04:00 5 лет, 5 месяцев назад
35

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

ответил(а) 2013-09-30T17:40:00+04:00 6 лет, 4 месяца назад
36

Забыл отключить услугу C2DM. Глупый я..

ответил(а) 2013-03-26T13:24:00+04:00 6 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема