背景
用极光推送将消息推送给指定的用户,而不是通过平台手动推送,急需集成极光推送Web端。
1. 依赖包
在pom.xml下依赖相关包
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.1.8</version>
</dependency>
2. 极光推送工具类
public class Jpushtils {
//极光推送>>Android
String appKey="";
String masterSecret = "";
//Map<String, String> parm是我自己传过来的参数,同学们可以自定义参数
public PushResult jpushAndroid(Map<String, String> parm,String userId,String title) {
// 设置好账号的app_key和masterSecret
//创建JPushClient(极光推送的实例)
PushResult pu=null;
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
//推送的关键,构造一个payload
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.android())//指定android平台的用户
.setAudience(Audience.alias(userId))//你项目中的所有用户
.setNotification(Notification.android(parm.get("msg"), parm.get("title"), parm))
//发送内容,这里不要盲目复制粘贴,这里是我从controller层中拿过来的参数)
.setOptions(Options.newBuilder().setApnsProduction(false).build())
//这里是指定开发环境,不用设置也没关系
.setMessage(Message.content(parm.get("msg")))//自定义信息
.build();
try {
pu = jpushClient.sendPush(payload);
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
return pu;
}
//极光推送>>ios
//Map<String, String> parm是我自己传过来的参数,同学们可以自定义参数
public PushResult jpushIOS(Map<String, String> parm,String userId) {
// 设置好账号的app_key和masterSecret是必须的
//创建JPushClient
PushResult pu = null;
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.ios())//ios平台的用户
.setAudience(Audience.alias(userId))//用户
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder()
.setAlert(parm.get("msg"))
.setBadge(+1)
.setSound("happy")//这里是设置提示音(更多可以去官网看看)
.addExtras(parm)
.build())
.build())
//ios正式上线请开启 true
.setOptions(Options.newBuilder().setApnsProduction(false).build())
.setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
.build();
try {
pu = jpushClient.sendPush(payload);
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
return pu;
}
}
说明:其中appKey、masterSecret为开发平台所生成的参数。
//指定人员推送信息
setAudience(Audience.alias(userId))
注:在IOS应用正式上线前将开发环境设置为true,默认为false
.setOptions(Options.newBuilder().setApnsProduction(true).build())
3.实现类调用方法
MsgMainBean noticeMessages = JSON.parseObject(result, MsgMainBean.class);
for (MsgMainBean.DataBean.RecordsBean recordsBean : noticeMessages.getData().getRecords()) {
if(recordsBean.getPushStatus()==0){
Jpushtils jpushtils = new Jpushtils();
Map<String, String> parm = new HashMap<String, String>();
parm.put("id", recordsBean.getId()+"");
//文章标题
parm.put("title", recordsBean.getMsgTypeName());
String title="推送测试";
//设置提示信息,内容是文章标题
parm.put("msg", recordsBean.getMsgContent());
PushResult jpushios = jpushtils.jpushIOS(parm,recordsBean.getUserId()+"");
PushResult jpushAndroid= jpushtils.jpushAndroid(parm,recordsBean.getUserId()+"",title);
if(jpushAndroid!=null||jpushios!=null){
iSafeCenterService.updateById(recordsBean.getId(),1);
System.out.println("推送成功*****");
}
}
}
}