Die AndroidManifest.xml:Android GCM - Kann nicht empfangen Nachrichten
<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>
Die GCMBroadcastIntentService Klasse:
public class GCMBroadcastIntentService extends GcmListenerService {
@Override
public void onMessageReceived(String from, Bundle extras) {
if (extras.containsKey("message")) {}
}
}
Die onMessageReceived() -Methode wird nie aufgerufen. Der Server funktioniert einwandfrei, die Nachrichten werden ohne Fehler an Google GCM gesendet, kommen aber nie auf dem Gerät an. Ich benutze auch google-services.json, die im Ordner/app gespeichert ist. In meiner App kann sich der Benutzer nach einer Neuinstallation anmelden. In diesem Fall wird ein neues GCM-Token angefordert und an den Server gesendet. Also sollte es korrekt und aktuell sein.
Was fehlt? Danke für Ihre Hilfe.
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);
...
}
haben Sie den Serverschlüssel zu GCM registriert ?? –