springboot +极光jpush

实体类:
@Data
public class JPushVo implements Serializable {
/**
*
/
private static final long serialVersionUID = 1L;
/
*
* 通知内容
/
private String alert;
/
*
* 标题
/
private String title;
/
*
* 副标题
/
private String subtitle;
/
*
* 消息内容
/
private String msgContent;
/
*
* 自定义消息内容
/
private Map<String, String> extras;
/
*
* 离线消息保留时长 默认1天 最多10天
/
private Integer timeToLive;
/
*
* 极光开发者页面添加新应用时生成
/
private String appkey;
/
*
* 伴随appkey一起生成
/
private String masterSecret;
}
实体类:
@EqualsAndHashCode(callSuper = false)
@Data
public class JPushIdVo extends JPushVo {
/
*
*
/
private static final long serialVersionUID = 1L;
/
*
* 通知目标,JPush设备id 由客户端生成
/
private String[] registrationId;
}
工具类:
public class JiguangUtil implements Serializable {
/
*
*
/
private static final long serialVersionUID = 1L;
/
*
*
* @Title: getJPushClient
* @Description: jpush 客户端
* @param @param appkey 极光开发者页面添加新应用时生成
* @param @param masterSecret 伴随appkey一起生成
* @param @return
* @return JPushClient
* @throws
*/
public static JPushClient getJPushClient(String appkey,String masterSecret) {
return new JPushClient(masterSecret, appkey, null, ClientConfig.getInstance());
}
}

public class JPushUtil {
/**
* 离线消息保留时长
/
private static final int TIME_TO_LIVE = 86400;
/
*
*
* @Title: notificationToRegistrationId
* @Description: 向指定设备推送通知
* @param @param vo
* @param @return
* @param @throws APIConnectionException
* @param @throws APIRequestException
* @return PushResult
* @author 2019年7月6日
* @throws
/
public static PushResult notificationToRegistrationId(JPushVo vo)
throws APIConnectionException, APIRequestException {
JPushClient jPushClient = JiguangUtil.getJPushClient(vo.getAppkey(), vo.getMasterSecret());
return jPushClient.sendPush(buildLoadByRegistrationId((JPushIdVo) vo));
};
/
*
*
* @Title: notificationToAll
* @Description: 向所有设备推送通知
* @param @param vo
* @param @return
* @param @throws APIConnectionException
* @param @throws APIRequestException
* @return PushResult
* @author 2019年7月8日
* @throws
/
public static PushResult notificationToAll(JPushVo vo) throws APIConnectionException, APIRequestException {
JPushClient jPushClient = JiguangUtil.getJPushClient(vo.getAppkey(), vo.getMasterSecret());
return jPushClient.sendPush(buildLoad(vo, Audience.all()));
};
/
*
*
* @Title: buildLoad
* @Description: 向指定设备推送通知 封装推送内容
* @param @param vo
* @param @return
* @return PushPayload
* @author 2019年7月6日
* @throws
/
public static PushPayload buildLoadByRegistrationId(JPushIdVo vo) {
return buildLoad(vo, Audience.registrationId(vo.getRegistrationId()));
}
/
*
*
* @Title: buildLoad
* @Description: 向所有设备推送通知
* @param @param vo
* @param @param audience
* @param @return
* @return PushPayload
* @author 2019年7月8日
* @throws
/
public static PushPayload buildLoad(JPushVo vo, Audience audience) {
Integer timeToLive = vo.getTimeToLive() == null ? TIME_TO_LIVE : vo.getTimeToLive();
PushPayload build = PushPayload.newBuilder().setPlatform(Platform.all()).setAudience(audience)
.setNotification(notificationAll(vo)).setOptions(Options.newBuilder().setTimeToLive(timeToLive).build())
.build();
return build;
}
/
*
*
* @Title: setIosAlert
* @Description: ios通知alert title
* @param @param vo
* @param @return
* @return IosAlert
* @author 2019年7月8日
* @throws
/
private static IosAlert setIosAlert(JPushVo vo) {
IosAlert.Builder builder = new IosAlert.Builder();
builder.setTitleAndBody(vo.getTitle(), vo.getSubtitle(), vo.getAlert());
return builder.build();
}
/
*
*
* @Title: iosPlatform
* @Description: ios 通知内容封装
* @param @param vo
* @param @return
* @return PlatformNotification
* @author 2019年7月8日
* @throws
/
private static PlatformNotification iosPlatform(JPushVo vo) {
PlatformNotification androidPlatform = IosNotification.newBuilder().setAlert(setIosAlert(vo))
.addExtras(vo.getExtras()).build();
return androidPlatform;
}
/
*
*
* @Title: androidPlatform
* @Description: android 通知内容封装
* @param @param vo
* @param @return
* @return PlatformNotification
* @author 2019年7月8日
* @throws
/
private static PlatformNotification androidPlatform(JPushVo vo) {
PlatformNotification androidPlatform = AndroidNotification.newBuilder().setAlert(vo.getAlert())
.setTitle(vo.getTitle()).addExtras(vo.getExtras()).build();
return androidPlatform;
}
/
*
*
* @Title: notificationAll
* @Description: 同时通知ios android
* @param @param vo
* @param @return
* @return Notification
* @author 2019年7月9日
* @throws
*/
private static Notification notificationAll(JPushVo vo) {
Notification build = Notification.newBuilder().addPlatformNotification(iosPlatform(vo))
.addPlatformNotification(androidPlatform(vo)).build();
return build;
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值