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

sdk
sdk_java
api
jpush
标签: #<Tag:0x00007fca69788350> #<Tag:0x00007fca69788210> #<Tag:0x00007fca697880d0> #<Tag:0x00007fca75673f58>

(meipianapp) #1

为了确保每一条消息都必须送达,用的是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--;
	}
}

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


#2

请给出你完整的请求数据
调用的是哪一个接口?

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


(meipianapp) #3

问题我修改了


#4

额,这个问题,你用的Java SDK吧?我反馈给开发了,正在看。

关于返回的信息是null,预估是你获取的太快的原因,可以稍等30s这样再去试一下

关于只返回了msgid,这个需要看下原因


(meipianapp) #5

是 JAVA SDK。。就是只返回了 message id 。没有其它内容。


(KenChoi) #6

我这里是正常的,是不是你改了什么地方?


#7

你这边首先检查report API是不是正确的调用的
其次,这个API一般延时5s以内


#8

4 个帖子被分离到了新主题:PHP版本的demo