2015-07-02 5 views
6

nicht automatisch an Das neue GCM 3.0 sollte es GCM ermöglichen, vom Server gesendete Benachrichtigungen automatisch anzuzeigen, wenn sie den Parameter notification enthalten.GCM 3.0 - gcm zeigt die Benachrichtigung mit dem Benachrichtigungsparameter

Wie gesagt in den docs:

Die Benachrichtigungsparameter mit vordefinierten Optionen gibt an, dass GCM wird die Nachricht im Namen auf der Client-Anwendung angezeigt werden, wenn die Client-Anwendung GCMListenerService auf Android

implementiert aber ich habe Schwierigkeiten, das zu bekommen, obwohl die GCMListenerService implementiert ist.

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

Die Benachrichtigung vom Server angemeldet ist, aber nicht von GCM gezeigt.

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

Die Nachricht vom Server gesendet:

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

Gibt es noch etwas nötig zu erlauben?

+0

Was senden Sie in 'notification' Payload? – shkschneider

+0

@shkschneider hat die Frage bearbeitet. Aber ich sende 'title',' body' und 'icon' –

+0

was meinst du mit" automatische Anzeige "? – injecteer

Antwort

2

Versuchen Sie, das Benachrichtigungsfeld zu einem Geschwister des Datenfelds zu machen. Das Datenfeld wird an onMessageReceived übergeben und das Benachrichtigungsfeld wird verwendet, um die Benachrichtigung automatisch zu generieren.

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

} 
+0

Oh ja du hast Recht. Kopieren und Einfügen Fehler hat mich! –

Verwandte Themen