簡體   English   中英

從PhoneGap中的Urban Airship推送通知中提取“額外”

[英]Extracting “extra” from Urban Airship push notification in PhoneGap

我正在通過Urban Airship從我自己的服務器向基於PhoneGap的Android應用發送推送通知。 通知已成功發送-但是,我希望能夠發送其他數據,這些數據未顯示在Android的通知欄中,但仍可以在應用程序中提取數據。 據我了解,這應該作為鍵值對存儲在推送通知的“額外”字段中。 我在以正確的方式編碼和提取代碼時遇到麻煩。

該服務器是一個簡單的ASP.NET Web界面,帶有代碼隱藏頁面,該頁面將消息發送到Urban Airship(基於https://stackoverflow.com/a/2528151/1822286 )。 我使用JavaScript和JSON將用戶互動(包括填寫的表單和導入的Google Maps實例的坐標組成)中的數據保存到隱藏字段中。 然后,該字段由ASP.NET中的代碼隱藏頁讀取,並用於構造推送通知。

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\"]
    }";

該消息已通過Urban Airship成功發送到我的手機。 在應用程序中,我想提取stringData.Value部分,其中包含警報,數據,lat和lng變量。 我不確定錯誤是在於我選擇在服務器端對其進行編碼的方式,還是在於我在客戶端進行解析的方式。 令人困惑的是,Urban Airship的文檔和Web儀表板的術語有所不同,使用的是“警報”和“額外”,而其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;
    }
});

提前致謝。

解決了。 我嘗試使用Urban Airship儀表板在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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM