Веб-служба отправляет мне следующее уведомление на Android через FCM:
{
"registration_ids": [
"123456"
],
"priority": "high",
"data": {
"notification_type": "request_accepted",
"feedback": "request accepted"
}
}
Однако на Android, в onMessageReceived
, это становится так:
{
google.sent_time=1525800030866,
notification_type=request_accepted,
google.ttl=2419200,
feedback=request accepted,
from=875234321904,
google.message_id=0:1525800030873951%137ecd
}
Выше, очевидно, недопустимый JSON. Почему это так и как это можно исправить?
В полезной нагрузке есть другие данные, которые корректно проходят через правильное форматирование JSON (: вместо =). Однако эти несколько параметров имеют неправильное форматирование.
РЕДАКТИРОВАТЬ: onMessageReceived
:
public void onMessageReceived(RemoteMessage remoteMessage)
{
try
{
if(remoteMessage.getData() != null)
{
parseJson(remoteMessage.getData().toString());
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
private Object parseJson(String json)
{
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<ClientRequestAcceptedModel> responseAdapter = moshi.adapter(ClientRequestAcceptedModel.class);
try
{
return responseAdapter.fromJson(json);
}
catch (IOException e)
{
e.printStackTrace();
return null;
}
}
Больше объектов JSON
{
"notification_type": "request_accepted",
"partner_information": "{\"zip\":\"24000\"}",
"feedback": "request accepted",
"request_information": "{\"request_type\":\"custom\",\"status\":0}"
}
Информация о партнере и запросе не отображаются так, как должны быть.