Получить данные из уведомления GCM

Есть ли способ получить данные из «уведомления GCM». Вот часть моей строки json, которую я отправляю с gcm: {"data":{"id":"123"}} . Мне нужно получить значение id в моем приложении, но я не знаю, как … большое спасибо.

Если вы используете новую библиотеку GCM, вам нужно создать класс, который расширяет IntentService, и здесь GCM-библиотека сообщит вам, когда будет получено сообщение GCM. Пожалуйста, посмотрите пример 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"); } 

Если вы не используете библиотеку GCM, тогда ответ GCM приходит к вам с намерением в вашем приемнике, а затем вы можете использовать getExtras () get.String () для получения пары ключ / значение из вашего уведомления GCM. например

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

Лучший способ получить его как json-представление – это добавить ваши данные как json-объект.

 { "registration_ids" : [ "id1", "id2" ], "data" : { "my_json_object": { "text" :"This is my message", "title":"Some title" } }, "collapse_key":"12345" } 

Затем просто проанализируйте свой объект:

 String json = getIntent().getExtras().getString("my_json_object"); JsonObject jObject = new JsonObject(json); 
 <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" /> 
Intereting Posts
Набор приложений для Android с несколькими значками запуска запускается с той же активностью, независимо от того, что было выбрано Android – можно ли отключить звук в настоящее время в аудио-приложениях? Тестирование Android – проблема с ActivityInstrumentationTestCase2? Android-браузер Android не загрузит мой URL-адрес, но загрузит другие Получить последний посещенный URL в браузере Chrome и других браузерах. Экраны поддержки в файле манифеста Как я могу совместно использовать службу между действиями без перезапуска? Как вызвать событие, когда scrollView достигает нижней части Android? Фильтрация SPINNER для данных XML, которые были получены Загрузка текстового файла из Интернета Android ListView: не выделяется прикосновением, но работает, когда я использую трекбол ACTION_USER_PRESENT в манифесте с помощью BroadcastReceiver Как выполнять функцию каждые две секунды в Java на Android? Android studio AssertionError: не вызывать waitForSmartMode изнутри действия чтения в немой версии Создание папки внутри папки в google drive android