2012-09-26 12 views
7

Il metodo onRegistered non viene mai chiamato, nel logcat vedo l'ultima riga come acquisizione di wakelock.GCM onRegistrato non chiamato

  • 09-26 14: 03: 23,285: D/GCMRegistrar (15820): reset backoff per
  • 09-26 14: 03: 23,285: V/GCMRegistrar (15820): Registrazione app * un di mittenti 735175912799
  • 09-26 14: 03: 23,895: V/GCMBroadcastReceiver (15820): OnReceive: - com.google.android.c2dm.intent.REGISTRATION 09-26 14: 03: 23,895: V/GCMRegistrar (15820): Impostazione del nome della classe del destinatario tentativi su * .notifications.MyGCMBroadcastReceiver
  • 09-26 14: 03: 23.895: V/GCMBroadcastReceiver (15820): GCM Classe IntentService: - * .notifications.GCMIntentService
  • 09-26 14: 03: 23,903: V/GCMBaseIntentService (15820): Wakelock acquisizione

ho il mio Broadcastreceiver:

import com.google.android.gcm.GCMBroadcastReceiver; 

public class MyGCMBroadcastReceiver extends GCMBroadcastReceiver { 

    @Override 
    protected String getGCMIntentServiceClassName (Context context) { 
     return GCMIntentService.class.getCanonicalName(); 
    } 

} 

risposta

1

Ho avuto un problema simile. Si è scoperto che ho dimenticato di aggiungere al ApplicationManifest.xml:

<service android:name=".GCMIntentService"/> 
1

seguito sono soluzioni comuni:

1) Nome il servizio come "GCMIntentService"

2) Metti la tua GCMIntentService nel pacchetto di default

3) prima di inviare GCM registro richiesta di chiamata

GCMRegistrar.checkDevice(this); 
GCMRegistrar.checkManifest(this); 

In modo che se c'è qualche problema con il tuo dispositivo o manifesto ti dirà. 4) controlla le autorizzazioni. Controllare in particolare i permessi del pacchetto. Si tratta di un nido su, se si incasina con il nome del pacchetto in permesso, funzionerà per gli androidi più recenti (Jelly Bean +), ma fallirà in dispositivi inferiori