Có cách nào để lấy dữ liệu từ "thông báo GCM" hay không. Đây là một phần của chuỗi json của tôi mà tôi gửi với gcm: {"data":{"id":"123"}}
. Tôi cần nhận được giá trị của id trong ứng dụng của tôi, nhưng tôi không biết làm thế nào ... cảm ơn rất nhiều.Nhận dữ liệu từ thông báo GCM
Trả lời
Nếu bạn đang sử dụng thư viện GCM mới, thì bạn cần phải tạo một lớp mở rộng IntentService, đây là nơi thư viện GCM sẽ thông báo cho bạn khi nhận được tin nhắn GCM. Xin hãy nhìn vào mẫu MyIntentService.java:
@Override
public final void onHandleIntent(Intent intent) {
try {
String action = intent.getAction();
if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) {
handleRegistration(intent);
} else if (action.equals("com.google.android.c2dm.intent.RECEIVE")) {
handleMessage(intent);
}
} finally {
synchronized(LOCK) {
sWakeLock.release();
}
}
}
private void handleMessage(Intent intent) {
String id = intent.getExtra("id");
}
Nếu bạn không sử dụng thư viện GCM, sau đó phản ứng GCM được đến với bạn trong một ý định trong máy thu của bạn, sau đó bạn có thể sử dụng getExtras ý định của(). getString() để lấy cặp khóa/giá trị từ thông báo GCM của bạn. ví dụ.
// intent come in in your onReceive method of your BroadcastReceiver:
public onReceive(Context context, Intent intent) {
// check to see if it is a message
if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) {
String id = intent.getExtras().getString("id");
String other_key = intent.getExtras().getString("other_key");
// if your key/value is a JSON string, just extract it and parse it using JSONObject
String json_info = intent.getExtras().getString("json_info");
JSONObject jsonObj = new JSONObject(json_info);
}
}
Cách tốt nhất để lấy nó làm biểu diễn json là thêm dữ liệu của bạn làm đối tượng json.
{
"registration_ids" : [
"id1",
"id2"
],
"data" : {
"my_json_object": {
"text" :"This is my message",
"title":"Some title"
}
},
"collapse_key":"12345"
}
Sau đó, để phân tích đối tượng của bạn chỉ cần:
String json = getIntent().getExtras().getString("my_json_object");
JsonObject jObject = new JsonObject(json);
và cách tốt nhất mà tôi đã tìm thấy như vậy để "thêm dữ liệu của bạn dưới dạng đối tượng json" là: 'String json = gson.toJson ([YOUR_OBJECT]); Message msg = new Message.Builder(). AddData ("message", json) .build(); gcmresult = sender.send (msg, [GCM CLIENT REG ID], 5); ' –
<receiver android:name=".beforelogin.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="android.intent.category.TAB" />
</intent-filter>
</receiver>
<service android:name=".beforelogin.GcmIntentService" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
Thêm lớp GCmBroadcastReceviver và lớp GcmIntentService của bạn để nhận thông báo –
- 1. Khởi chạy ứng dụng khi thông báo GCM nhận được
- 2. rollback/hủy thông báo android-gcm
- 3. Thông báo đẩy GCM với Asp.Net
- 4. Dữ liệu thông báo đẩy truy xuất
- 5. Android - Thông báo đẩy GCM không xuất hiện trong danh sách thông báo
- 6. Nhận thông báo GCM của Android khi ứng dụng ở trạng thái dừng
- 7. Gửi thông báo GCM vào một thiết bị ẩn
- 8. Thông báo đẩy GCM gây 502 Bad Gateway
- 9. Nhận mã thông báo từ NSTokenField
- 10. Cách nhận thông báo khi thông báo được thông báo
- 11. Thông báo đẩy GCM cho Android luôn hiển thị thông điệp cũ. Ý định nhận được không chính xác
- 12. Nhận dữ liệu từ iframe
- 13. Nhận dữ liệu từ nhiều truy vấn con SELECT để báo cáo từ cơ sở dữ liệu MySQL
- 14. Không thể nhận thông báo đẩy từ Urban Airship
- 15. Nhận dữ liệu POST từ WebKitNetworkRequest
- 16. dữ liệu qua sử dụng Thông báo, iphone
- 17. Nhận siêu dữ liệu từ DOI
- 18. Thông báo lỗi cho mô hình xác nhận sử dụng chú thích dữ liệu
- 19. Cách nhận thông báo dán clipboard và cung cấp dữ liệu của riêng tôi?
- 20. Bắt dữ liệu từ plist Thông tin
- 21. Làm cách nào để truy cập dữ liệu thông báo đẩy từ xa trên applicationDidBecomeActive?
- 22. Thông báo đẩy trên Android: Google GCM so với Amazon SNS?
- 23. Android GCM mã hóa
- 24. Cách bản địa hóa các thông báo kiểu dữ liệu
- 25. postgresql: loại dữ liệu cho thông báo md5?
- 26. khay thông báo cập nhật cơ sở dữ liệu
- 27. jquery nhận dữ liệu từ biểu mẫu
- 28. Nhận dữ liệu từ hoạt động khác
- 29. Nhận dữ liệu clipboard
- 30. Nhận mã thông báo truy cập từ google plus Android
Ok, nhưng làm thế nào tôi có thể nhận được ở đây (protected void onMessage (bối cảnh Bối cảnh, Ý định mục đích)) chuỗi thông báo? – mysho
Cập nhật câu trả lời của tôi, hãy xem. – azgolfer
Tôi có thể lấy gcm_notification_string từ Intent bằng cách nào? –