Skip to content
Merged

Dev #90

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.0</version>
<version>3.3.1</version>
</dependency>
```
### jar 包方式
Expand All @@ -46,7 +46,7 @@
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.0.7</version>
<version>1.0.8</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
Expand Down
18 changes: 10 additions & 8 deletions example/main/java/cn/jpush/api/examples/PushExample.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public class PushExample {

// demo App defined in resources/jpush-api.conf
protected static final String APP_KEY ="d4ee2375846bc30fa51334f5";
protected static final String MASTER_SECRET = "61807e56ddaebf2e47172159";
protected static final String MASTER_SECRET = "f3b222f7e0dde430b6d8fa5a";
protected static final String GROUP_PUSH_KEY = "2c88a01e073a0fe4fc7b167c";
protected static final String GROUP_MASTER_SECRET = "b11314807507e2bcfdeebe2e";

Expand All @@ -52,7 +52,8 @@ public class PushExample {
public static void main(String[] args) {
// testSendPushWithCustomConfig();
// testSendIosAlert();
testSendPush();
// testSendPush();
testGetCidList();
// testSendPushes();
// testSendPush_fromJSON();
// testSendPushWithCallback();
Expand Down Expand Up @@ -81,14 +82,12 @@ public void onSucceed(ResponseWrapper responseWrapper) {
public static void testSendPush() {
ClientConfig clientConfig = ClientConfig.getInstance();
final JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, clientConfig);
String authCode = ServiceHelper.getBasicAuthorization(APP_KEY, MASTER_SECRET);
// Here you can use NativeHttpClient or NettyHttpClient or ApacheHttpClient.
NativeHttpClient httpClient = new NativeHttpClient(authCode, null, clientConfig);
// Call setHttpClient to set httpClient,
// If you don't invoke this method, default httpClient will use NativeHttpClient.
// ApacheHttpClient httpClient = new ApacheHttpClient(authCode, null, clientConfig);
// jpushClient.getPushClient().setHttpClient(httpClient);
final PushPayload payload = buildPushObject_ios_tagAnd_alertWithExtrasAndMessage();
final PushPayload payload = buildPushObject_android_and_ios();
// // For push, all you need do is to build PushPayload object.
// PushPayload payload = buildPushObject_all_alias_alert();
try {
Expand Down Expand Up @@ -226,13 +225,16 @@ public static PushPayload buildPushObject_android_tag_alertWithTitle() {
}

public static PushPayload buildPushObject_android_and_ios() {
Map<String, String> extras = new HashMap<String, String>();
extras.put("test", "https://community.jiguang.cn/push");
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.tag("tag1"))
.setAudience(Audience.all())
.setNotification(Notification.newBuilder()
.setAlert("alert content")
.addPlatformNotification(AndroidNotification.newBuilder()
.setTitle("Android Title").build())
.setTitle("Android Title")
.addExtras(extras).build())
.addPlatformNotification(IosNotification.newBuilder()
.incrBadge(1)
.addExtra("extra_key", "extra_value").build())
Expand Down Expand Up @@ -416,7 +418,7 @@ public static void testSendWithSMS() {
public static void testGetCidList() {
JPushClient jPushClient = new JPushClient(MASTER_SECRET, APP_KEY);
try {
CIDResult result = jPushClient.getCidList(3, null);
CIDResult result = jPushClient.getCidList(3, "push");
LOG.info("Got result - " + result);
} catch (APIConnectionException e) {
LOG.error("Connection error. Should retry later. ", e);
Expand Down
29 changes: 29 additions & 0 deletions example/main/java/cn/jpush/api/examples/ReportsExample.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package cn.jpush.api.examples;

import cn.jpush.api.report.MessageStatus;
import cn.jpush.api.report.model.CheckMessagePayload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -11,12 +13,17 @@
import cn.jpush.api.report.ReceivedsResult;
import cn.jpush.api.report.UsersResult;

import java.util.Map;

public class ReportsExample {
protected static final Logger LOG = LoggerFactory.getLogger(ReportsExample.class);

// demo App defined in resources/jpush-api.conf
private static final String appKey = "dd1066407b044738b6479275";
private static final String masterSecret = "e8cc9a76d5b7a580859bcfa7";
public static final String REGISTRATION_ID1 = "0900e8d85ef";
public static final String REGISTRATION_ID2 = "0a04ad7d8b4";
public static final String REGISTRATION_ID3 = "18071adc030dcba91c0";

public static void main(String[] args) {
testGetReport();
Expand Down Expand Up @@ -76,5 +83,27 @@ public static void testGetMessages() {
}
}

public static void testGetMessageStatus() {
JPushClient jPushClient = new JPushClient(masterSecret, appKey);
CheckMessagePayload payload = CheckMessagePayload.newBuilder()
.setMsgId(3993287034L)
.addRegistrationIds(REGISTRATION_ID1, REGISTRATION_ID2, REGISTRATION_ID3)
.setDate("2017-08-08")
.build();
try {
Map<String, MessageStatus> map = jPushClient.getMessageStatus(payload);
for (Map.Entry<String, MessageStatus> entry : map.entrySet()) {
LOG.info("registrationId: " + entry.getKey() + " status: " + entry.getValue().getStatus());
}
} catch (APIConnectionException e) {
LOG.error("Connection error. Should retry later. ", e);
} catch (APIRequestException e) {
LOG.error("Error response from JPush server. Should review and fix it. ", e);
LOG.info("HTTP Status: " + e.getStatus());
LOG.info("Error Code: " + e.getErrorCode());
LOG.info("Error Message: " + e.getErrorMessage());
}
}

}

6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.0-SNAPSHOT</version>
<version>3.3.1-SNAPSHOT</version>
<packaging>jar</packaging>
<url>https://github.com/jpush/jpush-api-java-client</url>
<name>JPush API Java Client</name>
Expand Down Expand Up @@ -35,14 +35,14 @@
<url>https://github.com/jpush/jpush-api-java-client</url>
<connection>scm:git:git@github.com:jpush/jpush-api-java-client.git</connection>
<developerConnection>scm:git:git@github.com:jpush/jpush-api-java-client.git</developerConnection>
<tag>v3.3.0</tag>
<tag>v3.3.1</tag>
</scm>

<dependencies>
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.0.7</version>
<version>1.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
Expand Down
11 changes: 7 additions & 4 deletions src/main/java/cn/jpush/api/JPushClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import java.util.Set;

import cn.jpush.api.push.CIDResult;
import cn.jpush.api.report.*;
import cn.jpush.api.report.model.CheckMessagePayload;
import com.google.gson.JsonObject;

import cn.jiguang.common.ClientConfig;
Expand All @@ -29,10 +31,6 @@
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.IosAlert;
import cn.jpush.api.push.model.notification.Notification;
import cn.jpush.api.report.MessagesResult;
import cn.jpush.api.report.ReceivedsResult;
import cn.jpush.api.report.ReportClient;
import cn.jpush.api.report.UsersResult;
import cn.jpush.api.schedule.ScheduleClient;
import cn.jpush.api.schedule.ScheduleListResult;
import cn.jpush.api.schedule.ScheduleResult;
Expand Down Expand Up @@ -261,6 +259,11 @@ public UsersResult getReportUsers(TimeUnit timeUnit, String start, int duration)
public MessagesResult getReportMessages(String msgIds) throws APIConnectionException, APIRequestException {
return _reportClient.getMessages(msgIds);
}

public Map<String, MessageStatus> getMessageStatus(CheckMessagePayload payload)
throws APIConnectionException, APIRequestException {
return _reportClient.getMessagesStatus(payload);
}


// ------------------------------ Shortcuts - notification
Expand Down
28 changes: 28 additions & 0 deletions src/main/java/cn/jpush/api/report/MessageStatus.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package cn.jpush.api.report;

import java.io.Serializable;

public class MessageStatus implements Serializable {

/**
* 0 送达
* 1 未送达
* 2 用户不属于该 app
* 3 用户属于该 app,但不属于该 msgid
* 4 系统异常
*/
private int status;

public void setStatus(int status) {
this.status = status;
}

public int getStatus() {
return status;
}

@Override
public String toString() {
return "status : " + status;
}
}
13 changes: 13 additions & 0 deletions src/main/java/cn/jpush/api/report/ReportClient.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package cn.jpush.api.report;


import java.lang.reflect.Type;
import java.net.URLEncoder;
import java.util.Map;
import java.util.regex.Pattern;

import cn.jiguang.common.ClientConfig;
Expand All @@ -14,6 +16,9 @@
import cn.jiguang.common.resp.APIRequestException;
import cn.jiguang.common.resp.BaseResult;
import cn.jiguang.common.resp.ResponseWrapper;
import cn.jpush.api.report.model.CheckMessagePayload;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class ReportClient {

Expand Down Expand Up @@ -100,6 +105,14 @@ public MessagesResult getMessages(String msgIds)

return MessagesResult.fromResponse(response);
}

public Map<String, MessageStatus> getMessagesStatus(CheckMessagePayload payload)
throws APIConnectionException, APIRequestException {
String url = _hostName + "/v3/status/message";
ResponseWrapper result = _httpClient.sendPost(url, payload.toString());
Type type = new TypeToken<Map<String, MessageStatus>>(){}.getType();
return new Gson().fromJson(result.responseContent, type);
}

public UsersResult getUsers(TimeUnit timeUnit, String start, int duration)
throws APIConnectionException, APIRequestException {
Expand Down
115 changes: 115 additions & 0 deletions src/main/java/cn/jpush/api/report/model/CheckMessagePayload.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
package cn.jpush.api.report.model;

import cn.jiguang.common.utils.Preconditions;
import cn.jiguang.common.utils.TimeUtils;
import cn.jpush.api.schedule.model.IModel;
import com.google.gson.*;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CheckMessagePayload implements IModel{

public final static String MSG_ID = "msg_id";
public final static String REGISTRATION_IDS = "registration_ids";
public final static String DATE = "date";

private long msgId = -1L;
private List<String> registrationIds;
private String date;
private Gson gson = new Gson();
public CheckMessagePayload(long msgId, List<String> rids, String date) {
this.msgId = msgId;
this.registrationIds = rids;
this.date = date;
}

public static Builder newBuilder() {
return new Builder();
}

public static class Builder {
private long msgId;
private List<String> registrationIds = new ArrayList<String>();
private String date;

public Builder setMsgId(long msgId) {
this.msgId = msgId;
return this;
}

public Builder setRegistrationIds(String[] rids) {
Preconditions.checkArgument(rids != null && rids.length > 0, "Registration ids is empty");
Collections.addAll(registrationIds, rids);
return this;
}

public Builder setRegistrationsIds(List<String> rids) {
Preconditions.checkArgument(rids != null && rids.size() > 0, "Registration ids is empty");
registrationIds = rids;
return this;
}

public Builder addRegistrationIds(String... rids) {
if (null == rids) {
return this;
}
Collections.addAll(registrationIds, rids);
return this;
}

public Builder addRegistrationIds(List<String> rids) {
registrationIds.addAll(rids);
return this;
}

public Builder setDate(String date) {
Preconditions.checkArgument(isDayFormat(date), "Date format is invalid");
this.date = date;
return this;
}

public CheckMessagePayload build() {
return new CheckMessagePayload(msgId, registrationIds, date);
}
}

@Override
public JsonElement toJSON() {
JsonObject jsonObject = new JsonObject();
if (msgId != -1L) {
jsonObject.addProperty(MSG_ID, msgId);
}
if (null != registrationIds) {
JsonArray jsonArray = new JsonArray();
for (String rid : registrationIds) {
jsonArray.add(new JsonPrimitive(rid));
}
jsonObject.add(REGISTRATION_IDS, jsonArray);
}
if (null != date) {
jsonObject.addProperty(DATE, date);
}
return jsonObject;
}

@Override
public String toString() {
return gson.toJson(toJSON());
}

private static boolean isDayFormat(String date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
simpleDateFormat.parse(date);
return true;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
}
2 changes: 1 addition & 1 deletion src/test/java/cn/jpush/api/BaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public abstract class BaseTest {

protected static final String APP_KEY = "d4ee2375846bc30fa51334f5";
protected static final String MASTER_SECRET = "61807e56ddaebf2e47172159";
protected static final String MASTER_SECRET = "f88f9b289c3f681eef0b95ee";
protected static final String GROUP_MASTER_SECRET = "b11314807507e2bcfdeebe2e";
protected static final String GROUP_PUSH_KEY = "2c88a01e073a0fe4fc7b167c";

Expand Down
2 changes: 1 addition & 1 deletion src/test/java/cn/jpush/api/push/PushClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public void test_validate() {
public void testGetCidList() {
JPushClient jPushClient = new JPushClient(MASTER_SECRET, APP_KEY);
try {
CIDResult result = jPushClient.getCidList(3, null);
CIDResult result = jPushClient.getCidList(3, "push");
LOG.info("Got result - " + result);
} catch (APIConnectionException e) {
LOG.error("Connection error. Should retry later. ", e);
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/cn/jpush/api/push/remote/ExceptionTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void appKeyNotExist() {
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
assertEquals(APPKEY_NOT_EXIST, e.getErrorCode());
assertEquals(AUTHENTICATION_FAIL, e.getErrorCode());
}
}

Expand Down
Loading