0

我的系统至少运行了两年。大多数推送通知请求都有 200 个。但是,最近,我发现我经常收到 500 个。

近 10% 的推送通知获得了 500 个。

请帮忙!!!

我已经重新发送了问题消息,一切都很好。

示例:请求是:

{
  "request": {
    "application": "3DXXX-59XXX",
    "username": "MyXXXXX",
    "password": "********",
    "notifications": [
      {
        "send_date": "now",
        "content": {
          "en": "Subscriber ID. 9000  Close  User 01"
        },
        "link": "",
        "data": {
          "userID": "12345"
        },
        "wp_type": "",
        "wp_background": "",
        "wp_count": "",
        "ios_badges": 51,
        "ios_sound": "short-tone.caf",
        "devices": [
          "APA91bHZHEhIMjVYwxyMk-4-YObazHfcxlQq7CmYto930nuIqHlQGCdzUQsnDcnHTB78wUcTlm-qhV3ipMqe9HO3kTqD9j_zgzSUUAdoGK0fbeRRGMNn69Z63BlQ9RqIdioZ4J2NFA0DLOUkroImk-it8p_3Glr5bRlnrl1_wT3ycXfsgvQZq4g"
        ],
        "page_id": "0",
        "android_sound": "five_sectoneone"
      }
    ]
  }
}

响应为:{"status_code":500,"status_message":"无效设备列表"}

==================================================== ============
========================== 更新============ ==================

在我将 Pushwoosh API 从 V1.2 升级到 V1.3 后,问题就消失了。

然而,新的问题来了。

我的样本是:

要求 :

{
  "request": {
    "application": "3DXXX-59XXX",
    "auth": "*********WqLiS5ZM2****************************************9eib******",
    "notifications": [
      {
        "send_date": "now",
        "content": {
          "en": "Jones Residence Tue,17Jul 12:12 Test from Robbie......."
        },
        "link": "",
        "data": {
          "userID": "12345"
        },
        "wp_type": "",
        "wp_background": "",
        "wp_count": "",
        "ios_badges": 39,
        "ios_sound": "short-tone.caf",
        "devices": [
          "298eeXXXXa26849cc77da16adXXXXc1c801df12e79bad1e724829aXXXXcbe07d"  //I hashed real ID here
        ],
        "page_id": "0",
        "android_sound": "five_sectoneone"
      }
    ]
  }
}

回应是:

{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "Messages": [
      "D954-3C45B1AA-AA6293E5"
    ],
    "UnknownDevices": {
      "D954-3C45B1AA-AA6293E5": [
        "298eeXXXXa26849cc77da16adXXXXc1c801df12e79bad1e724829aXXXXcbe07d" //I hashed real ID here
      ]
    }
  }
}

替代文字

4

2 回答 2

3

我看到你已经在 Pushwoosh 社区写了这个问题。我也会在这里发布答案。

“UnknownDevice”警告表明您在 createMessage 请求的“设备”部分中放入的推送令牌不在我们的数据库中。

有几个原因:

1) 应用程序已从设备中删除。

2)推送令牌已更新。APNs/GCM/等。往往会不时更改推送令牌,我们会从服务器中删除过时的推送令牌。(这种情况很少发生)

3) 您的请求中存在印刷错误。(我确定不是这种情况)

请注意,为了使您的用户群保持最新,您可以使用 getUnregisteredDevices 方法,该方法将返回最后一千个已删除的推送令牌。您需要定期调用它。

PS https://community.pushwoosh.com/questions/998/pushwoosh-create-message-get-200-but-says-unknowndevices
PPS 不要使用 1.2 API,它很旧,很快就会被弃用。

于 2014-07-18T07:54:17.557 回答
1

我认为,您使用了错误的设备令牌。不要使用设备 UUID。将设备令牌放入 Java 代码中后,您可以将设备令牌发送到您的数据库。编辑 PushwooshiOS.js 文件;

pushNotification.registerDevice(
    function(status)
    {
        var deviceToken = status['deviceToken'];
        console.warn('registerDevice: ' + deviceToken);

        $.ajax({
            url : "http://ip:port/deviceid/"+deviceToken,
            dataType : "json",
            success : function(a, b, c) {
                console.log("send tokens to server after call t in your json array");    
            },
            error : function(a, b, c) {
                console.log("err a ", a);
                console.log("err b ", b);
                console.log("err c ", c);
                console.log("err c ", c);
            }
        });
        onPushwooshiOSInitialized(deviceToken);
    },
    function(status)
    {
        console.warn('failed to register : ' + JSON.stringify(status));
        //alert(JSON.stringify(['failed to register ', status]));
    }
);

Java 代码

String method = "createMessage";
URL url = new URL(PUSHWOOSH_SERVICE_BASE_URL + method);
JSONArray deviceArray = new JSONArray();
// put your device tokens
deviceArray.put(deviceToken);
JSONArray notificationsArray = new JSONArray()
        .put(new JSONObject().put("send_date", "now")   
                             .put("content", "A test push")
                             .put("devices",deviceArray));
JSONObject requestObject = new JSONObject()
        .put("application", APPLICATION_CODE)
        .put("auth", AUTH_TOKEN)
        .put("notifications", notificationsArray);
JSONObject mainRequest = new JSONObject().put("request", requestObject);
JSONObject response = SendServerRequest.sendJSONRequest(url, mainRequest.toString());
于 2015-01-23T16:39:49.713 回答