2015-07-02 5 views
6

Новый GCM 3.0 должен позволить GCM автоматически отображать уведомления, отправленные с сервера, если они содержат параметр notification.GCM 3.0 - gcm автоматически не отображает уведомление с параметром уведомления

Как сказано в docs:

Параметр уведомления с заранее определенными параметрами указывает, что GCM будет отображать сообщение от имени клиента приложения, если клиентское приложение реализует GCMListenerService на Android

Однако я есть проблемы с тем, что это работает, даже если реализован GCMListenerService.

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

Уведомление от сервера регистрируется, но не показано ГКМ.

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

Сообщение отправлено с сервера:

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

Есть ли что-нибудь еще нужно сделать, чтобы разрешить автоматическое отображение?

+0

Что вы отправляете в поле «уведомление»? – shkschneider

+0

@shkschneider редактировал вопрос. Но я посылаю 'title',' body' и 'icon' –

+0

что вы подразумеваете под« автоматическим отображением »? – injecteer

ответ

2

Попробуйте сделать поле уведомления родным для поля данных. Поле данных передается в onMessageReceived, а поле уведомления используется для автоматического создания уведомления.

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

} 
+0

О да, вы правы. Скопируйте и вставьте ошибку! –

Смежные вопросы