Tôi hiện đang làm việc để triển khai thông báo GCM vào ứng dụng của mình.GcmListenerService.onMessageReceived() không được gọi là
Sự cố tôi gặp phải là phương pháp onMessageReceived()
từ triển khai GcmListenerService
của tôi không được gọi. Tôi nhận được dữ liệu từ máy chủ GCM tốt, vì nó tự động tạo thông báo (Tôi muốn thay thế thông báo này bằng thông báo của riêng tôi bằng phương thức onMessageReceived()
) nhưng sau đó không có cuộc gọi nhật ký nào được in trong nhật ký.
JSON được gửi từ máy chủ đến máy chủ GCM
{
"notification" : {
"title" : "Title",
"text" : "Message",
"icon" : "@drawable\/ic_notification",
"click_action" : "OPEN_MAIN_ACTIVITY"
},
"registration_ids":[
"xxxx", "xxxx", "xxxx", "etc"
]
}
AndroidManifest.xml (GCM chỉ là một phần)
<!-- GCM START -->
<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="com.my.package" />
</intent-filter>
</receiver>
<service
android:name=".Services.ListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".Services.IDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<!-- GCM END -->
GcmListenerService (chỉ cần một bản in nhanh chóng để xem nếu nó gọi là tất cả)
public class ListenerService extends GcmListenerService {
private static final String TAG = "MyGcmListenerService";
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("title");
Log.d(TAG, "From: " + from);
Log.d(TAG, "Message: " + message);
}
}
Không chắc chắn nếu phương thức yêu cầu mã thông báo có liên quan, nhưng tôi có thể đăng nó nếu cần.
Nếu phần nào của câu hỏi không rõ ràng, hãy cho tôi biết, tôi không phải là giải thích tốt nhất.
Bạn đã đăng ký khách hàng của mình chưa? – Gordak
Tôi nhận được mã thông báo và thậm chí là thông báo (tôi nghĩ GCM tự động tạo chúng hoặc cái gì đó), nếu đó là ý của bạn? – Dan
Vâng, nếu bạn đã thiết lập ứng dụng của mình theo https://developers.google.com/cloud-messaging/android/client, bạn sẽ ổn. Đừng quên gửi mã thông báo gcm của bạn đến ứng dụng máy chủ của bạn (Tôi không thấy mã đăng ký tại đây). – Gordak