Skip to content

Commit 27d092a

Browse files
author
Javen
committed
Add shortcuts for JPushClient
1 parent 0cdb46c commit 27d092a

File tree

6 files changed

+255
-1
lines changed

6 files changed

+255
-1
lines changed

src/cn/jpush/api/JPushClient.java

Lines changed: 176 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
package cn.jpush.api;
22

3+
import java.util.Map;
4+
35
import cn.jpush.api.common.APIConnectionException;
46
import cn.jpush.api.common.APIRequestException;
57
import cn.jpush.api.common.TimeUnit;
68
import cn.jpush.api.push.PushClient;
79
import cn.jpush.api.push.PushResult;
10+
import cn.jpush.api.push.model.Message;
11+
import cn.jpush.api.push.model.Platform;
812
import cn.jpush.api.push.model.PushPayload;
13+
import cn.jpush.api.push.model.audience.Audience;
14+
import cn.jpush.api.push.model.notification.AndroidNotification;
15+
import cn.jpush.api.push.model.notification.IosNotification;
16+
import cn.jpush.api.push.model.notification.Notification;
917
import cn.jpush.api.report.MessagesResult;
1018
import cn.jpush.api.report.ReceivedsResult;
1119
import cn.jpush.api.report.ReportClient;
@@ -50,7 +58,7 @@ public JPushClient(String masterSecret, String appKey, boolean apnsProduction, l
5058
}
5159

5260
/**
53-
* Send a push with object.
61+
* Send a push with PushPayload object.
5462
*
5563
* @param pushPayload payload object of a push.
5664
* @return PushResult The result object of a Push. Can be printed to a JSON.
@@ -97,6 +105,173 @@ public MessagesResult getReportMessages(String msgIds) throws APIConnectionExcep
97105
return _reportClient.getMessages(msgIds);
98106
}
99107

108+
109+
// ------------------------------ Shortcuts - notification
110+
111+
/**
112+
* Shortcut
113+
*/
114+
public PushResult sendNotificationAll(String alert) throws APIConnectionException, APIRequestException {
115+
PushPayload payload = PushPayload.alertAll(alert);
116+
return _pushClient.sendPush(payload);
117+
}
118+
119+
/**
120+
* Shortcut
121+
*/
122+
public PushResult sendAndroidNotificationWithAlias(String title, String alert,
123+
Map<String, String> extras, String... alias)
124+
throws APIConnectionException, APIRequestException {
125+
PushPayload payload = PushPayload.newBuilder()
126+
.setPlatform(Platform.android())
127+
.setAudience(Audience.alias(alias))
128+
.setNotification(Notification.newBuilder()
129+
.addPlatformNotification(AndroidNotification.newBuilder()
130+
.setTitle(title)
131+
.setAlert(alert)
132+
.addExtras(extras)
133+
.build())
134+
.build())
135+
.build();
136+
return _pushClient.sendPush(payload);
137+
}
138+
139+
/**
140+
* Shortcut
141+
*/
142+
public PushResult sendAndroidNotificationWithRegistrationID(String title, String alert,
143+
Map<String, String> extras, String... registrationID)
144+
throws APIConnectionException, APIRequestException {
145+
PushPayload payload = PushPayload.newBuilder()
146+
.setPlatform(Platform.android())
147+
.setAudience(Audience.registrationId(registrationID))
148+
.setNotification(Notification.newBuilder()
149+
.addPlatformNotification(AndroidNotification.newBuilder()
150+
.setTitle(title)
151+
.setAlert(alert)
152+
.addExtras(extras)
153+
.build())
154+
.build())
155+
.build();
156+
return _pushClient.sendPush(payload);
157+
}
158+
159+
/**
160+
* Shortcut
161+
*/
162+
public PushResult sendIosNotificationWithAlias(String alert,
163+
Map<String, String> extras, String... alias)
164+
throws APIConnectionException, APIRequestException {
165+
PushPayload payload = PushPayload.newBuilder()
166+
.setPlatform(Platform.ios())
167+
.setAudience(Audience.alias(alias))
168+
.setNotification(Notification.newBuilder()
169+
.addPlatformNotification(IosNotification.newBuilder()
170+
.setAlert(alert)
171+
.addExtras(extras)
172+
.build())
173+
.build())
174+
.build();
175+
return _pushClient.sendPush(payload);
176+
}
177+
178+
/**
179+
* Shortcut
180+
*/
181+
public PushResult sendIosNotificationWithRegistrationID(String alert,
182+
Map<String, String> extras, String... registrationID)
183+
throws APIConnectionException, APIRequestException {
184+
PushPayload payload = PushPayload.newBuilder()
185+
.setPlatform(Platform.ios())
186+
.setAudience(Audience.registrationId(registrationID))
187+
.setNotification(Notification.newBuilder()
188+
.addPlatformNotification(IosNotification.newBuilder()
189+
.setAlert(alert)
190+
.addExtras(extras)
191+
.build())
192+
.build())
193+
.build();
194+
return _pushClient.sendPush(payload);
195+
}
196+
197+
198+
// ---------------------- shortcuts - message
199+
200+
/**
201+
* Shortcut
202+
*/
203+
public PushResult sendMessageAll(String msgContent) throws APIConnectionException, APIRequestException {
204+
PushPayload payload = PushPayload.messageAll(msgContent);
205+
return _pushClient.sendPush(payload);
206+
}
207+
208+
/**
209+
* Shortcut
210+
*/
211+
public PushResult sendAndroidMessageWithAlias(String title, String msgContent, String... alias)
212+
throws APIConnectionException, APIRequestException {
213+
PushPayload payload = PushPayload.newBuilder()
214+
.setPlatform(Platform.android())
215+
.setAudience(Audience.alias(alias))
216+
.setMessage(Message.newBuilder()
217+
.setTitle(title)
218+
.setMsgContent(msgContent)
219+
.build())
220+
.build();
221+
return _pushClient.sendPush(payload);
222+
}
223+
224+
/**
225+
* Shortcut
226+
*/
227+
public PushResult sendAndroidMessageWithRegistrationID(String title, String msgContent, String... registrationID)
228+
throws APIConnectionException, APIRequestException {
229+
PushPayload payload = PushPayload.newBuilder()
230+
.setPlatform(Platform.android())
231+
.setAudience(Audience.registrationId(registrationID))
232+
.setMessage(Message.newBuilder()
233+
.setTitle(title)
234+
.setMsgContent(msgContent)
235+
.build())
236+
.build();
237+
return _pushClient.sendPush(payload);
238+
}
239+
240+
/**
241+
* Shortcut
242+
*/
243+
public PushResult sendIosMessageWithAlias(String title, String msgContent, String... alias)
244+
throws APIConnectionException, APIRequestException {
245+
PushPayload payload = PushPayload.newBuilder()
246+
.setPlatform(Platform.ios())
247+
.setAudience(Audience.alias(alias))
248+
.setMessage(Message.newBuilder()
249+
.setTitle(title)
250+
.setMsgContent(msgContent)
251+
.build())
252+
.build();
253+
return _pushClient.sendPush(payload);
254+
}
255+
256+
/**
257+
* Shortcut
258+
*/
259+
public PushResult sendIosMessageWithRegistrationID(String title, String msgContent, String... registrationID)
260+
throws APIConnectionException, APIRequestException {
261+
PushPayload payload = PushPayload.newBuilder()
262+
.setPlatform(Platform.ios())
263+
.setAudience(Audience.registrationId(registrationID))
264+
.setMessage(Message.newBuilder()
265+
.setTitle(title)
266+
.setMsgContent(msgContent)
267+
.build())
268+
.build();
269+
return _pushClient.sendPush(payload);
270+
}
271+
272+
273+
274+
100275

101276
}
102277

src/cn/jpush/api/push/model/Message.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package cn.jpush.api.push.model;
22

3+
import java.util.Map;
4+
35
import com.google.common.base.Preconditions;
46
import com.google.common.collect.ImmutableMap;
57
import com.google.gson.JsonElement;
@@ -112,6 +114,17 @@ public Builder addExtra(String key, String value) {
112114
return this;
113115
}
114116

117+
public Builder addExtras(Map<String, String> extras) {
118+
Preconditions.checkArgument(! (null == extras), "extras should not be null.");
119+
if (null == extrasBuilder) {
120+
extrasBuilder = ImmutableMap.builder();
121+
}
122+
for (String key : extras.keySet()) {
123+
extrasBuilder.put(key, extras.get(key));
124+
}
125+
return this;
126+
}
127+
115128
public Builder addExtra(String key, Number value) {
116129
Preconditions.checkArgument(! (null == key || null == value), "Key/Value should not be null.");
117130
if (null == numberExtrasBuilder) {

src/cn/jpush/api/push/model/notification/AndroidNotification.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package cn.jpush.api.push.model.notification;
22

3+
import java.util.Map;
4+
35
import com.google.common.base.Preconditions;
46
import com.google.common.collect.ImmutableMap;
57
import com.google.gson.JsonElement;
@@ -82,6 +84,17 @@ public Builder addExtra(String key, String value) {
8284
return this;
8385
}
8486

87+
public Builder addExtras(Map<String, String> extras) {
88+
Preconditions.checkArgument(! (null == extras), "extras should not be null.");
89+
if (null == extrasBuilder) {
90+
extrasBuilder = ImmutableMap.builder();
91+
}
92+
for (String key : extras.keySet()) {
93+
extrasBuilder.put(key, extras.get(key));
94+
}
95+
return this;
96+
}
97+
8598
public Builder addExtra(String key, Number value) {
8699
Preconditions.checkArgument(! (null == key || null == value), "Key/Value should not be null.");
87100
if (null == numberExtrasBuilder) {

src/cn/jpush/api/push/model/notification/IosNotification.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package cn.jpush.api.push.model.notification;
22

3+
import java.util.Map;
4+
5+
import cn.jpush.api.push.model.notification.AndroidNotification.Builder;
6+
37
import com.google.common.base.Preconditions;
48
import com.google.common.collect.ImmutableMap;
59
import com.google.gson.JsonElement;
@@ -123,6 +127,17 @@ public Builder addExtra(String key, String value) {
123127
return this;
124128
}
125129

130+
public Builder addExtras(Map<String, String> extras) {
131+
Preconditions.checkArgument(! (null == extras), "extras should not be null.");
132+
if (null == extrasBuilder) {
133+
extrasBuilder = ImmutableMap.builder();
134+
}
135+
for (String key : extras.keySet()) {
136+
extrasBuilder.put(key, extras.get(key));
137+
}
138+
return this;
139+
}
140+
126141
public Builder addExtra(String key, Number value) {
127142
Preconditions.checkArgument(! (null == key || null == value), "Key/Value should not be null.");
128143
if (null == numberExtrasBuilder) {

src/cn/jpush/api/push/model/notification/WinphoneNotification.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package cn.jpush.api.push.model.notification;
22

3+
import java.util.Map;
4+
35
import com.google.common.base.Preconditions;
46
import com.google.common.collect.ImmutableMap;
57
import com.google.gson.JsonElement;
@@ -82,6 +84,17 @@ public Builder addExtra(String key, String value) {
8284
return this;
8385
}
8486

87+
public Builder addExtras(Map<String, String> extras) {
88+
Preconditions.checkArgument(! (null == extras), "extras should not be null.");
89+
if (null == extrasBuilder) {
90+
extrasBuilder = ImmutableMap.builder();
91+
}
92+
for (String key : extras.keySet()) {
93+
extrasBuilder.put(key, extras.get(key));
94+
}
95+
return this;
96+
}
97+
8598
public Builder addExtra(String key, Number value) {
8699
Preconditions.checkArgument(! (null == key || null == value), "Key/Value should not be null.");
87100
if (null == numberExtrasBuilder) {

test/cn/jpush/api/push/model/MessageTests.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package cn.jpush.api.push.model;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
5+
36
import org.junit.Assert;
47
import org.junit.Test;
58

@@ -42,8 +45,30 @@ public void testMsgContentAndExtras() {
4245

4346
json.add("extras", extras);
4447

48+
Assert.assertEquals("", json, message.toJSON());
49+
}
50+
51+
@Test
52+
public void testMsgContentAndExtrasMap() {
53+
Map<String, String> extrasMap = new HashMap<String, String>();
54+
extrasMap.put("key1", "value1");
55+
extrasMap.put("key2", "value2");
56+
57+
Message message = Message.newBuilder()
58+
.setMsgContent("msgContent")
59+
.addExtras(extrasMap).build();
60+
61+
JsonObject json = new JsonObject();
62+
json.add("msg_content", new JsonPrimitive("msgContent"));
63+
64+
JsonObject extras = new JsonObject();
65+
extras.add("key1", new JsonPrimitive("value1"));
66+
extras.add("key2", new JsonPrimitive("value2"));
67+
json.add("extras", extras);
68+
4569
Assert.assertEquals("", json, message.toJSON());
4670

4771
}
4872

73+
4974
}

0 commit comments

Comments
 (0)