Я отправляю push-уведомления с моего собственного сервера через Urban Airship на Android-приложение на основе PhoneGap. Уведомления отправляются успешно, однако я хотел бы иметь возможность отправлять дополнительные данные, которые не отображаются на панели уведомлений на Android, но я все еще могу извлечь их из приложения. Как я понял, это должно быть сохранено в виде пар ключ-значение в «дополнительном» поле push-уведомления. У меня есть проблемы с кодированием и извлечением этого в правильном направлении.Извлечение «лишнего» из уведомления о выпуске Urban Airship в PhoneGap
Сервер представляет собой простой веб-интерфейс ASP.NET со страницей кода, которая отправляет сообщение на Urban Airship (на основе этого https://stackoverflow.com/a/2528151/1822286). Я сохраняю данные из взаимодействия пользователя (которое состоит из заполненных форм и координат импортированного экземпляра Google Maps) с использованием JavaScript и JSON в скрытое поле. Затем это поле считывается страницей кода в ASP.NET и используется для создания push-уведомления.
JavaScript в скрытом поле StringData (переменная события от экземпляра Google Maps, который я оставил здесь, так что часть работ):
var allDataToString = {
"alert": "\"" + document.getElementById("alertTextBox").value + "\"",
"data": "\"" + document.getElementById("dataTextBox").value + "\"",
"lat": "\"" + event.latLng.lat() + "\"",
"lng": "\"" + event.latLng.lng() + "\""
};
document.getElementById("stringData").value = JSON.stringify(allDataToString);
Сообщение уведомления толчок в C# кода страницы :
string postData = "{\"aliases\": [],\"tags\": [],\"android\": {\"alert\": \"alerttest\",\"extra\": {\"data\": \"" + stringData.Value + "\", \"notificationtype\": \"1\"}},\"apids\": [\"APID\"]}";
более читаемая версия:
string postData =
"{
\"aliases\": [],
\"tags\": [],
\"android\":
{
\"alert\": \"alerttest\",
\"extra\":
{
\"data\": \"" + stringData.Value + "\",
\"notificationtype\": \"1\"
}
},
\"apids\": [\"APID\"]
}";
послание successf отправлен через городской дирижабль на свой телефон. В приложении я хочу извлечь часть stringData.Value, содержащую переменные alert, data, lat и lng. Я не уверен, является ли ошибка в том, как я решаю кодировать ее на стороне сервера или в том, как я разбираю ее на стороне клиента. Это сбивает с толку, поскольку терминология отличается между документацией Urban Airship и веб-панелью, используя «alert» и «extra», в то время как другие вещи на их плагине PhoneGap называются «входящими» и «поступающими».
В PhoneGap JavaScript:
push.getIncoming(function(incoming) {
if(incoming.extra!=undefined){
var data = JSON.parse(incoming.extra.data);
var alert = data.alert;
var data = data.data;
var lat = data.lat;
var lng = data.lng;
}
});
Спасибо заранее.