2015-07-02 29 views
6

GCM 3.0 mới sẽ cho phép GCM tự động hiển thị thông báo được gửi từ máy chủ nếu chúng chứa thông số notification.GCM 3.0 - gcm không tự động hiển thị thông báo với thông số thông báo

Như đã nói trong docs:

Tham số thông báo với các tùy chọn được xác định trước cho thấy rằng GCM sẽ hiển thị thông điệp thay mặt các ứng dụng của khách hàng nếu ứng dụng client thực hiện GCMListenerService trên Android

Tuy nhiên tôi gặp sự cố khi làm việc ngay cả khi GCMListenerService được triển khai.

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

Thông báo từ máy chủ được đăng nhập nhưng không được hiển thị bởi 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}] 

Thông điệp được gửi từ máy chủ:

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

Có điều gì khác cần phải được thực hiện để cho phép hiển thị tự động?

+0

Bạn đang gửi gì trong tải trọng 'thông báo'? – shkschneider

+0

@shkschneider đã chỉnh sửa câu hỏi. Nhưng tôi đang gửi 'title',' body' và 'icon' –

+0

ý bạn là gì bởi" hiển thị tự động "? – injecteer

Trả lời

2

Hãy thử tạo trường thông báo là anh chị em của trường dữ liệu. Trường dữ liệu được chuyển tới onMessageReceived và trường thông báo được sử dụng để tự động tạo thông báo.

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

} 
+0

Ồ vâng bạn nói đúng. Sao chép và dán lỗi đã cho tôi! –

Các vấn đề liên quan