AndroidManifest.xml:Android GCM - не может получать сообщения
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- Receiver for GCM Messages-->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="com.google.android.c2dm.intent.GCM_RECEIVED_ACTION"/>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="de.comp.module.client" />
</intent-filter>
</receiver>
<service
android:name="de.comp.module.client.gcm.GCMBroadcastIntentService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
GCMBroadcastIntentService класс:
public class GCMBroadcastIntentService extends GcmListenerService {
@Override
public void onMessageReceived(String from, Bundle extras) {
if (extras.containsKey("message")) {}
}
}
Метод onMessageReceived() никогда не вызывается. Сервер работает нормально, сообщения отправляются в Google GCM без каких-либо ошибок, но они никогда не поступают на устройство. Я также использую google-services.json, который хранится в папке/приложении. В моем приложении пользователь может loggin после новой установки. В этом случае запрашивается новый токен GCM и отправляется на сервер. Поэтому он должен быть правильным и актуальным.
Что не хватает? Спасибо за вашу помощь.
EDIT:
public class GCMRegistrationIntentService extends IntentService {
@Override
protected void onHandleIntent(Intent intent) {
try {
// register server key to GCM
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String regid = gcm.register(getString(R.string.gcm_defaultSenderId));
// Request new token for this server key
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
// Subscribe to topic channels
subscribeTopics(token);
...
}
вы зарегистрировали ключ сервера к GCM ?? –