[ 极光文档 ]
<dependency>
<groupId>cn.jpush.apigroupId>
<artifactId>jpush-clientartifactId>
<version>3.2.17version>
dependency>
<dependency>
<groupId>cn.jpush.apigroupId>
<artifactId>jiguang-commonartifactId>
<version>1.0.3version>
dependency>
<dependency>
<groupId>io.nettygroupId>
<artifactId>netty-allartifactId>
<version>4.1.6.Finalversion>
<scope>compilescope>
dependency>
<dependency>
<groupId>com.google.code.gsongroupId>
<artifactId>gsonartifactId>
<version>2.3version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-apiartifactId>
<version>1.7.7version>
dependency>
com.XXX.jdpush //包名
jdpush //类名
接下来是在jdpush类的操作
其实,极光已经给我们集成好了,只需调用推送方法即可
//极光推送>>Android
//Map parm是我自己传过来的参数,同学们可以自定义参数
public static void jpushAndroid(Map parm) {
// 设置好账号的app_key和masterSecret
String appKey = "**************";
String masterSecret = "************";
//创建JPushClient(极光推送的实例)
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
//推送的关键,构造一个payload
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.android())//指定android平台的用户
.setAudience(Audience.all())//你项目中的所有用户
.setNotification(Notification.android(parm.get("msg"), "这是title", parm))
//发送内容,这里不要盲目复制粘贴,这里是我从controller层中拿过来的参数)
.setOptions(Options.newBuilder().setApnsProduction(false).build())
//这里是指定开发环境,不用设置也没关系
.setMessage(Message.content(parm.get("msg")))//自定义信息
.build();
try {
PushResult pu = jpushClient.sendPush(payload);
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
}
//极光推送>>ios
//Map parm是我自己传过来的参数,同学们可以自定义参数
public static void jpushIOS(Map parm) {
// 设置好账号的app_key和masterSecret是必须的
String appKey = "*********************";
String masterSecret = "**********************";
//创建JPushClient
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.ios())//ios平台的用户
.setAudience(Audience.all())//所有用户
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder()
.setAlert(parm.get("msg"))
.setBadge(+1)
.setSound("happy")//这里是设置提示音(更多可以去官网看看)
.addExtras(parm)
.build())
.build())
.setOptions(Options.newBuilder().setApnsProduction(false).build())
.setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
.build();
try {
PushResult pu = jpushClient.sendPush(payload);
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
}
.setOptions(Options.newBuilder().setApnsProduction(false).build())
[ 极光文档Push API v3 ]
//这是我的添加文章的接口方法
//现在我要添加一篇文章后,进行推送
public Map<String, Object> addArticle() throws Exception {
Map<String, Object> result = new HashMap<String, Object>();
....
//省略文章添加的步骤
//从前端页面传个参数过来判断是否推送
if((infoMap.get("is_push").toString()).trim().equals("1")){
//设置推送参数
//这里同学们就可以自定义推送参数了
Map<String, String> parm =new HashMap<String, String>();
//这是我的文章id
parm.put("id",(""+id).trim());
//文章标题
parm.put("Atitle",(String) infoMap.get("Atitle") );
//设置提示信息,内容是文章标题
parm.put("msg",(String) infoMap.get("Atitle") );
//调用ios的
Jdpush.jpushIOS(parm);
//然后调用安卓的
Jdpush.jpushAndroid(parm);
}
return result;
}
推送后报错了
Your request params is invalid. Please check them according to error message.
Error response from JPush server. Should review and fix it.
//然后状态码是
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 HTTP Status: 400
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Error Code: 1011
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Error Message: cannot find user by this audience
INFO 2017-07-14 11:08:04,208 com.weiwend.jdpush.Jdpush.http-bio-8080-exec-7 Msg ID: 4241206476
这就很尴尬了
如果你的项目中有用户,
但是,是你的参数(setAudience)设置错了,也会也会报错.
[ 极客学院>>极光推送javaSDK集成使用 ]
PS:推送所有平台
注意事项:安卓直接忽略开发环境和生产环境,但是ios对环境敏感哦~~~~
(就是安卓不论生产开发都会推送,但是ios必须指定才能推,默认生产模式)
//极光推送>>All所有平台
public static void jpushAll(Map parm) {
// 设置好账号的ACCESS_KEY和SECRET_KEY
//创建JPushClient
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
//创建option
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.all()) //所有平台的用户
.setAudience(Audience.registrationId(parm.get("RegId")))//registrationId指定用户
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder()
.setAlert(parm.get("msg"))
.setBadge(+1)
.setSound("happy")
.addExtras(parm)
.build())
.addPlatformNotification(AndroidNotification.newBuilder()
.addExtras(parm)
.setAlert(parm.get("msg"))
.build())
.build())
.setOptions(Options.newBuilder().setApnsProduction(true).build())//指定开发环境
.setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
.build();
try {
PushResult pu = jpushClient.sendPush(payload);
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
}