Skip to content
Merged
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
24 changes: 22 additions & 2 deletions example/main/java/cn/jpush/api/examples/DevcieExample.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package cn.jpush.api.examples;

import cn.jpush.api.device.OnlineStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -8,11 +9,13 @@
import cn.jpush.api.common.resp.APIRequestException;
import cn.jpush.api.device.TagAliasResult;

import java.util.Map;

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

private static final String appKey = "dd1066407b044738b6479275";
private static final String masterSecret = "2b38ce69b1de2a7fa95706ea";
private static final String masterSecret = "6b135be0037a5c1e693c3dfa";
private static final String TAG1 = "tag1";
private static final String ALIAS1 = "alias1";
private static final String ALIAS2 = "alias2";
Expand All @@ -22,7 +25,8 @@ public class DevcieExample {
private static JPushClient jpushClient = new JPushClient(masterSecret, appKey);

public static void main(String[] args) {
testGetDeviceTagAlias();
// testGetDeviceTagAlias();
testGetUserOnlineStatus();
}

public static void testGetDeviceTagAlias() {
Expand All @@ -42,6 +46,22 @@ public static void testGetDeviceTagAlias() {
LOG.info("Error Message: " + e.getErrorMessage());
}
}

public static void testGetUserOnlineStatus() {
try {
Map<String, OnlineStatus> result = jpushClient.getUserOnlineStatus(REGISTRATION_ID1, REGISTRATION_ID2);

LOG.info(result.get(REGISTRATION_ID1).toString());
LOG.info(result.get(REGISTRATION_ID2).toString());
} 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());
}
}

}

Expand Down
26 changes: 25 additions & 1 deletion example/main/java/cn/jpush/api/examples/PushExample.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cn.jpush.api.examples;

import cn.jpush.api.common.ClientConfig;
import cn.jpush.api.push.model.notification.IosAlert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -18,6 +19,8 @@
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

import java.util.HashMap;

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

Expand All @@ -32,7 +35,8 @@ public class PushExample {
public static final String TAG = "tag_api";

public static void main(String[] args) {
testSendPushWithCustomConfig();
// testSendPushWithCustomConfig();
testSendIosAlert();
}


Expand Down Expand Up @@ -154,5 +158,25 @@ public static void testSendPushWithCustomConfig() {
}
}

public static void testSendIosAlert() {
JPushClient jpushClient = new JPushClient(masterSecret, appKey);

IosAlert alert = IosAlert.newBuilder()
.setTitleAndBody("test alert", "test ios alert json")
.setActionLocKey("PLAY")
.build();
try {
PushResult result = jpushClient.sendIosNotificationWithAlias(alert, new HashMap<String, String>(), "alias1");
LOG.info("Got result - " + result);
} 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());
}
}

}

5 changes: 2 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<encoding>UTF-8</encoding>
<groups>cn.jpush.api.FastTests</groups>
<argLine>-Dfile.encoding=UTF-8</argLine>
<excludes>
Expand Down Expand Up @@ -200,7 +199,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.7</version>
<version>2.8</version>
<reportSets>
<reportSet>
<reports>
Expand All @@ -214,7 +213,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<version>2.10.3</version>
<configuration>
<overview>resources/javadoc-overview.html</overview>
</configuration>
Expand Down
62 changes: 55 additions & 7 deletions src/main/java/cn/jpush/api/JPushClient.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package cn.jpush.api;

import java.util.Map;
import java.util.Set;

import cn.jpush.api.common.ClientConfig;
import cn.jpush.api.common.TimeUnit;
import cn.jpush.api.common.Week;
Expand All @@ -11,16 +8,14 @@
import cn.jpush.api.common.resp.APIRequestException;
import cn.jpush.api.common.resp.BooleanResult;
import cn.jpush.api.common.resp.DefaultResult;
import cn.jpush.api.device.AliasDeviceListResult;
import cn.jpush.api.device.DeviceClient;
import cn.jpush.api.device.TagAliasResult;
import cn.jpush.api.device.TagListResult;
import cn.jpush.api.device.*;
import cn.jpush.api.push.PushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
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;
Expand All @@ -33,6 +28,9 @@
import cn.jpush.api.schedule.model.TriggerPayload;
import cn.jpush.api.utils.Preconditions;

import java.util.Map;
import java.util.Set;

/**
* The global entrance of JPush API library.
*/
Expand Down Expand Up @@ -249,6 +247,28 @@ public PushResult sendIosNotificationWithAlias(String alert,
.build();
return _pushClient.sendPush(payload);
}

/**
* Send an iOS notification with alias.
* If you want to send alert as a Json object, maybe this method is what you needed.
*
* @param alert The wrapper of APNs alert.
* @param extras The extra params.
* @param alias The alias list.
* @return
* @throws APIConnectionException
* @throws APIRequestException
*/
public PushResult sendIosNotificationWithAlias(IosAlert alert,
Map<String, String> extras, String... alias)
throws APIConnectionException, APIRequestException {
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.ios(alert, extras))
.build();
return _pushClient.sendPush(payload);
}

/**
* Shortcut
Expand All @@ -264,6 +284,28 @@ public PushResult sendIosNotificationWithRegistrationID(String alert,
return _pushClient.sendPush(payload);
}

/**
* Send an iOS notification with registrationIds.
* If you want to send alert as a Json object, maybe this method is what you needed.
*
* @param alert The wrapper of APNs alert.
* @param extras The extra params.
* @param registrationID The registration ids.
* @return
* @throws APIConnectionException
* @throws APIRequestException
*/
public PushResult sendIosNotificationWithRegistrationID(IosAlert alert,
Map<String, String> extras, String... registrationID)
throws APIConnectionException, APIRequestException {
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.ios())
.setAudience(Audience.registrationId(registrationID))
.setNotification(Notification.ios(alert, extras))
.build();
return _pushClient.sendPush(payload);
}


// ---------------------- shortcuts - message

Expand Down Expand Up @@ -407,6 +449,12 @@ public DefaultResult deleteAlias(String alias, String platform)
return _deviceClient.deleteAlias(alias, platform);
}

public Map<String, OnlineStatus> getUserOnlineStatus(String... registrationIds)
throws APIConnectionException, APIRequestException
{
return _deviceClient.getUserOnlineStatus(registrationIds);
}

// ----------------------- Schedule

/**
Expand Down
39 changes: 30 additions & 9 deletions src/main/java/cn/jpush/api/device/DeviceClient.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
package cn.jpush.api.device;

import java.util.Set;

import cn.jpush.api.common.ClientConfig;
import cn.jpush.api.common.ServiceHelper;
import cn.jpush.api.common.connection.HttpProxy;
import cn.jpush.api.common.connection.IHttpClient;
import cn.jpush.api.common.connection.NativeHttpClient;
import cn.jpush.api.common.resp.APIConnectionException;
import cn.jpush.api.common.resp.APIRequestException;
import cn.jpush.api.common.resp.BaseResult;
import cn.jpush.api.common.resp.BooleanResult;
import cn.jpush.api.common.resp.DefaultResult;
import cn.jpush.api.common.resp.ResponseWrapper;
import cn.jpush.api.common.resp.*;
import cn.jpush.api.utils.Preconditions;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.Map;
import java.util.Set;

public class DeviceClient {

Expand Down Expand Up @@ -196,6 +194,29 @@ public DefaultResult deleteAlias(String alias, String platform) throws APIConnec

return DefaultResult.fromResponse(response);
}

// -------------- devices status

public Map<String, OnlineStatus> getUserOnlineStatus(String... registrationIds)
throws APIConnectionException, APIRequestException
{
Preconditions.checkArgument((null != registrationIds ),
"The registration id list should not be null.");
Preconditions.checkArgument(registrationIds.length > 0 && registrationIds.length <= 1000,
"The length of registration id list should between 1 and 1000.");

String url = hostName + devicesPath + "/status";
JsonObject json = new JsonObject();
JsonArray array = new JsonArray();
for(int i = 0; i < registrationIds.length; i++) {
array.add(new JsonPrimitive(registrationIds[i]));
}
json.add("registration_ids", array);
Type type = new TypeToken<Map<String, OnlineStatus>>(){}.getType();
ResponseWrapper response = _httpClient.sendPost(url, json.toString());
Map<String, OnlineStatus> map = new Gson().fromJson(response.responseContent, type);
return map;
}

}

Expand Down
31 changes: 31 additions & 0 deletions src/main/java/cn/jpush/api/device/OnlineStatus.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package cn.jpush.api.device;

public class OnlineStatus {

Boolean online;
String last_online_time;

public Boolean getOnline() {
return online;
}

public void setOnline(Boolean online) {
this.online = online;
}

public String getLast_online_time() {
return last_online_time;
}

public void setLast_online_time(String last_online_time) {
this.last_online_time = last_online_time;
}

@Override
public String toString() {
if(null == last_online_time) {
return "OnlineStatus " + online;
}
return "OnlineStatus " + online + " ," + last_online_time;
}
}
2 changes: 2 additions & 0 deletions src/main/java/cn/jpush/api/push/model/PushModel.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package cn.jpush.api.push.model;

import com.google.gson.Gson;
import com.google.gson.JsonElement;

public interface PushModel {

public static Gson gson = new Gson();
public JsonElement toJSON();

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package cn.jpush.api.push.model.notification;

import java.util.Map;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;

import java.util.Map;

public class AndroidNotification extends PlatformNotification {
public static final String NOTIFICATION_ANDROID = "android";

Expand All @@ -15,7 +15,7 @@ public class AndroidNotification extends PlatformNotification {
private final String title;
private final int builderId;

private AndroidNotification(String alert, String title, int builderId,
private AndroidNotification(Object alert, String title, int builderId,
Map<String, String> extras,
Map<String, Number> numberExtras,
Map<String, Boolean> booleanExtras,
Expand Down Expand Up @@ -73,7 +73,7 @@ public Builder setBuilderId(int builderId) {
return this;
}

public Builder setAlert(String alert) {
public Builder setAlert(Object alert) {
this.alert = alert;
return this;
}
Expand Down
Loading