Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提取;额外的;从PhoneGap中的城市飞艇推送通知_Javascript_Json_Cordova_Push Notification_Urbanairship.com - Fatal编程技术网

Javascript 提取;额外的;从PhoneGap中的城市飞艇推送通知

Javascript 提取;额外的;从PhoneGap中的城市飞艇推送通知,javascript,json,cordova,push-notification,urbanairship.com,Javascript,Json,Cordova,Push Notification,Urbanairship.com,我正在通过城市飞艇将推送通知从我自己的服务器发送到基于PhoneGap的Android应用程序。通知发送成功-但是,我希望能够发送其他数据,这些数据不会显示在Android的通知栏中,但我仍然可以在应用程序中提取。据我所知,这应该作为键值对存储在推送通知的“extra”字段中。我很难用正确的方式编码和提取它 该服务器是一个简单的ASP.NET web界面,带有一个代码隐藏页,可将消息发送到城市飞艇(基于此)。我使用JavaScript和JSON将用户交互(包括填写的表单和导入的GoogleMap

我正在通过城市飞艇将推送通知从我自己的服务器发送到基于PhoneGap的Android应用程序。通知发送成功-但是,我希望能够发送其他数据,这些数据不会显示在Android的通知栏中,但我仍然可以在应用程序中提取。据我所知,这应该作为键值对存储在推送通知的“extra”字段中。我很难用正确的方式编码和提取它

该服务器是一个简单的ASP.NET web界面,带有一个代码隐藏页,可将消息发送到城市飞艇(基于此)。我使用JavaScript和JSON将用户交互(包括填写的表单和导入的GoogleMaps实例的坐标)中的数据保存到一个隐藏字段中。然后,此字段由ASP.NET中的代码隐藏页读取,并用于构造推送通知

JavaScript到隐藏字段stringData(事件变量来自GoogleMaps实例,我在这里遗漏了该实例,因为该部分工作正常):

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\"]
    }";
信息通过城市飞艇成功发送到我的手机。在应用程序中,我想提取stringData.Value部分,其中包含警报、数据、lat和lng变量。我不确定错误是在我选择的服务器端编码方式,还是在客户端解析方式。这是令人困惑的,因为城市飞艇的文档和网络仪表盘之间的术语不同,使用“警报”和“额外”,而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;
    }
});

提前谢谢。

解决了这个问题。我在PhoneGap中尝试了不同的提取组合,使用城市飞艇仪表板发送消息,而不是从我自己的服务器发送消息,以尽量减少错误源的数量。在服务器端,我怀疑问题出在尝试发送字符串化的JSON对象时,因为引号会干扰消息其余部分中的引号。将它们作为单独的键值对发送效果很好:

string postData = "{\"aliases\": [],\"tags\": [],\"android\": {\"alert\": \"" + someAlertValue + "\",\"extra\": {\"someKey\": \"" + someDataValue + "\", \"someKey2\": \"" + anotherDataValue + "\"}},\"apids\": [\"some apid\"]}";
提取PhoneGap中“额外”消息的方法如下:

var extra = incoming.extras;
提取的每个键值对:

var someDataValue = extra.someKey;
var anotherDataValue = extra.someKey2;
var someDataValue = extra.someKey;
var anotherDataValue = extra.someKey2;