2015-07-02 13 views
6

Il nuovo GCM 3.0 dovrebbe consentire a GCM di visualizzare automaticamente le notifiche inviate dal server se contengono il parametro notification.GCM 3.0 - gcm non mostra automaticamente la notifica con il parametro di notifica

Come detto nella docs:

Il parametro di notifica con le opzioni predefinite indica che GCM visualizzerà il messaggio per conto della applicazione client se l'applicazione client implementa GCMListenerService su Android

Comunque io avere difficoltà a farlo funzionare anche se il GCMListenerService è implementato.

AndroidManifest.xml

<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.RECEIVE" /> 
      <category android:name="cz.kubaspatny.pushservertest" /> 
     </intent-filter> 
    </receiver> 

    <service 
     android:name="cz.kubaspatny.pushservertest.gcm.CustomGcmListenerService" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     </intent-filter> 
    </service> 

CustomGcmListenerService.java

public class CustomGcmListenerService extends GcmListenerService { 

    @Override 
    public void onMessageReceived(String from, Bundle extras) { 
     super.onMessageReceived(from, extras); 
     Log.d("GcmListenerService", "Received gcm from " + from + " with bundle " + extras.toString()); 
    } 
} 

La notifica dal server viene registrato, ma non mostrato dai GCM.

Received gcm from 333813590000 with bundle Bundle[{notification={"icon":"ic_launcher.png","body":"great match!","title":"Portugal vs. Denmark"}, collapse_key=do_not_collapse}] 

Il messaggio inviato dal server:

{  
     "registration_ids":[...], 
     "data": { 
     "notification" : { 
      "body" : "great match!", 
      "icon" : "ic_launcher.png", 
      "title" : "Portugal vs. Denmark" 
      } 
     } 
} 

C'è qualcos'altro doveva essere fatto per consentire la visualizzazione automatica?

+0

Che cosa stai inviando nel carico utile 'notifica'? – shkschneider

+0

@shkschneider ha modificato la domanda. Ma sto inviando 'title',' body' e 'icon' –

+0

cosa intendi per" display automatico "? – injecteer

risposta

2

Provare a rendere il campo di notifica un fratello del campo dati. Il campo dati viene passato a onMessageReceived e il campo di notifica viene utilizzato per generare automaticamente la notifica.

{  
     "registration_ids":[...], 
     "notification" : { 
      "body" : "great match!", 
      "icon" : "ic_launcher.png", 
      "title" : "Portugal vs. Denmark" 
     } 

} 
+0

Oh sì hai ragione. Copia e incolla errore mi ha fatto! –

Problemi correlati