Есть ли способ получить данные из «уведомления GCM». Вот часть моей строки json, которую я отправляю с gcm: {"data":{"id":"123"}}
. Мне нужно получить значение id в моем приложении, но я не знаю, как ... большое спасибо.Получить данные из уведомления GCM
ответ
Если вы используете новую библиотеку 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 Intent (в). getString(), чтобы получить пару ключ/значение из вашего уведомления 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);
и лучший способ, который я нашел таким образом, чтобы «добавить ваши данные как объект json»: 'String json = gson.toJson ([YOUR_OBJECT]); Сообщение msg = new Message.Builder(). AddData ("message", json) .build(); gcmresult = sender.send (msg, [YOUR GCI 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" />
Добавьте свой класс GCmBroadcastReceviver и класс GcmIntentService для получения уведомлений –
Хорошо, но как я могу получить здесь (защищенный недействительным OnMessage (контекст контекста, Намерение Намерение)) строку уведомлений? – mysho
Обновлен мой ответ, посмотрите. – azgolfer
Как я могу получить gcm_notification_string из Intent? –