report API 获取出来的JSON和文档说的完全不一样!

meipianapp
2017-05-09 06:02 1.3k 0

为了确保每一条消息都必须送达,用的是JPUSH report API:

2017-05-09 13:58:07,593 INFO JPush:112 - response::[{"msg_id":5338055840}]
2017-05-09 13:58:07,968 INFO JPush:112 - response::[{"msg_id":6546821212}]
2017-05-09 13:58:08,315 INFO JPush:112 - response::[{"msg_id":5338132435}]
2017-05-09 13:58:08,655 INFO JPush:112 - response::[{"msg_id":6144684059}]
2017-05-09 13:58:08,976 INFO JPush:112 - response::[{"msg_id":5338055842}]
2017-05-09 13:58:09,317 INFO JPush:112 - response::[{"msg_id":7258439934}]
2017-05-09 13:58:09,643 INFO JPush:112 - response::[{"android_received":null,"ios_msg_received":null,"ios_apns_sent":null,"wp_mpns_sent":null,"msg_id":7887418864}]
2017-05-09 13:58:10,012 INFO JPush:112 - response::[{"msg_id":7887403644}]
2017-05-09 13:58:10,363 INFO JPush:112 - response::[{"msg_id":5338057628}]

返回的不是:

[{"android_received":null,"ios_msg_received":null,"ios_apns_sent":null,"wp_mpns_sent":null,"msg_id":7887418864}]
而是这种:

[{"msg_id":7258439934}]

为了确保每一条消息到达,采用了如下的逻辑:

while (retry > 0) {
        PushResult result = this.jpushClient.sendPush(builder.build());
        HttpResponse response = HttpRequest.get("https://report.jpush.cn/v3/received?msg_ids=" + result.msg_id)
                .header("Authorization", Base64.encodeToString(this.appKey + ":" + this.masterSecret)).send();
        String body = response.bodyText();
        logger.info("response::" + body);
        try {
            JsonNode node = mapper.readTree(body).get(0);
            if (node.get(0).get("ios_apns_sent") != null && node.has("ios_apns_sent")) {
                String text = node.get(0).get("ios_apns_sent").asText();
                if (!StringUtils.isEmpty(text) && text.trim().equals("1")) {
                    retry = 0;
                    return;
                }
            } else if (node.get("msg_id") != null) {
                retry = 0;
                return;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        retry--;
    }
}

结果返回的是如上面所示。

1个回答

热门排序
  • 请给出你完整的请求数据
    调用的是哪一个接口?

    以及是否使用的SDK?什么语言?什么版本?