极光推送java服务端不保留,极光推送Java服务端工具类封装-简单易用直接复用

本文详细介绍了如何在Java服务端封装极光推送工具类,包括立即推送、定时推送、批量推送等方法,并展示了如何构建JPushPayload对象以封装推送信息,如推送平台、目标、内容等。此外,还提供了一个测试类的示例代码,方便开发者理解和使用。
摘要由CSDN通过智能技术生成

极光推送Java服务端工具类封装-简单易用直接复用

?

一、业务场景

最近接到一个工作上的新需求,接入极光推送:

1、在固定业务场景下触发一条APP通知信息给APP用户,比如订单发货后立即推送一条发货的APP通知提醒用户已发货;这类通知是被动的业务推送需要在具体的业务中埋入极光推送触发;

2、主动推送信息给APP用户,即在系统平台后台开发一个极光推送的平台页面,能编辑推送目标、推送平台、推送内容、定时和即时等等内容,点击推送后主动触发;比如发公告通知、发活动通知、新版本更新提醒等。

?

二、极光推送客户端、服务端、服务器

首先这三者之间关系要搞清楚。

服务器:泛指极光的服务器;

客户端:可以理解为iOS客户端和Android客户端,通过客户端SDK与服务器进行交互,包括连接、长连接、接收消息、反馈信息、注册APP用户等,主要作用可以看作与极光服务器长连接,接收服务器分发的消息;

服务端:可以简单理解为利用极光提供的服务端SDK根据自己实际业务自定义开发推送信息的功能;

三者之间交互:利用服务端SDK开发推送数据到极光服务器,极光服务器根据接收到的推送数据发送推送消息给匹配的客户端。

?

三、极光推送Java服务端工具类封装

1、需要了解的几个推送对象

推送平台:需要推送到哪些手机平台:iOS、Android、所有平台;

推送目标:需要推送到哪些APP用户,有三种推送方式:广播方式(所有人都能收到)、按标签(某一相同属性类的人能收到)、按别名(某个人能收到);

推送内容:推送的信息内容;

推送标题:就是标题;

推送的Notification内容体:标题、内容、附加内容;

推送的Message内容体:标题、内容、附加内容;

这里Notification和Message,即通知和消息概念是不一样的:

通知:发送后会在系统通知栏收到展现,同时响铃或振动提醒用户;

消息:以透传的形式传递给客户端,无显示,发送后不会在系统通知栏展现,第三方应用后需要开发者写代码才能看到;

?

总结:开发的服务端功能就是把以上信息封装起来然后发送给极光服务器,极光服务器再发送给匹配的客户端。

?

2、封装的极光推送Java服务端工具类

?① JPushUtil 推送工具类,提供了以下四种推送方法:

?

class="java"> /**

* JPUSH推送 - 立即

* 注:由于免费版极光限制了单次别名推送上限1000,这里适合别名单推名单在1000个以内

* 1000以上使用批量推送方法

*/

public boolean sendPush(JPushPayload jPushPayload);

/**

* JPUSH推送- 定时

* 注:由于免费版极光限制了单次别名推送上限1000,这里适合别名单推名单在1000个以内

* 1000以上使用批量推送方法

*/

public boolean sendPushSchedule(String name, String time, JPushPayload jPushPayload);

/**

* 批量推送

* 注:由于免费版极光限制了单次别名推送名单上限1000个,这里做了分批次推送

*/

public boolean sendPushes(JPushPayload jPushPayload);

/**

* * 批量推送(定时)

* 注:由于免费版极光限制了单次别名名单推送上限1000个,这里做了分批次推送

*/

public void sendPushesSchedule(final String name, final String time, JPushPayload jPushPayload);

?

具体推送的实现已经封装好,把重点放到怎样去构建好一个 JPushPayload 对象,下面看看JPushPayload具体是什么。

?

?② JPushPayload 推送封装信息对象

JPushPayload 类封装了推送所需的必须信息:?

?

private JPushMessage jPushMessage;

private JPushNotification jPushNotification;

private String platform; //推送平台

private String audience; //推送观众

JPushNotification 封装了Notification对象

?

?

private String notificationTitle; //推送标题

private String notificationContent; //推送内容

private JPushExtras jPushExtras; //附加字段

?JPushMessage 封装了Message对象

private String msgContent; //message内容

private String msgTitle; //message标题

private JPushExtras jPushExtras; //message附加内容

?JPushExtras 封装了按业务需求自定义的附加内容字段(这个类的字段根据具体业务需求自行定义)

private int pageType; //推送落地页标识

private String pkid = ""; //主键参数

?

四、推送实现思路

1、所有推送信息都封装在 JPushPayload 类中,所以整个推送思路就是构建好 JPushPayload 对象,可以作为表单对象封装;

2、JPushPayload 类封装了推送平台、推送目标、推送通知信息对象、推送message信息对象,需要分别构建好这些内容;

3、推送方法一共四种:

? ① sendPush(JPushPayload jPushPayload)? 限:1000个别名alias、20个标签tag以下的推送(立即推送)

? ② sendPushSchedule(String name, String time, JPushPayload jPushPayload)限:1000个别名alias、20个标签tag以下的推送(定时推送)

? ③ sendPushes(JPushPayload jPushPayload) 批量不限制别名alias、标签tag 个数(立即推送)

? ④ sendPushesSchedule(final String name, final String time, JPushPayload jPushPayload) 批量不限制别名alias、标签tag个数(定时推送)

??

? 下面是一个调用工具类测试类:

public static void main(String[] args) throws Exception{

JPushPayload jPushPayload = new JPushPayload();

//设置推送平台:所有平台、IOS、Android

jPushPayload.setPlatform(JPushPayload.PlatformDesc.所有平台.getValue());

//设置推送目标:所有人、按别名推送、按标签推送

jPushPayload.setAudience(JPushPayload.AudienceDesc.别名.getValue());

//如果是按别名推送、按标签推送必须构建推送名单List,所有人不用再构建

ArrayList aliasList = new ArrayList();

//别名和标签是根据自己业务自行定义,如:每个用户手机号可作为别名定位每个用户、VIP用户作为tag定位一类用户

aliasList.add("1242342341");

jPushPayload.setAliases(aliasList);

//构建推送Notification具体信息对象(标题、内容、附加内容)

JPushNotification notification = new JPushNotification();

notification.setNotificationTitle("notify_title");

notification.setNotificationContent("notify_content");

//附加内容构建:JPushExtras类字段可根据自己具体业务调整

JPushExtras notificationExtras = new JPushExtras();

//我的业务:传递给客户端(IOS、Android)作为接收通知后页面跳转逻辑依据

notificationExtras.setPageType(JPushExtras.PageTypeDesc.会员中心首页.getValue());

jPushPayload.setjPushNotification(notification);

//构建推送Message具体信息对象(标题、内容、附加内容)

JPushMessage message = new JPushMessage();

message.setMsgTitle("msg_title");

message.setMsgContent("msg_content");

jPushPayload.setjPushMessage(message);

//推送

JPushUtil.sendPush(jPushPayload);

}

?工具类完整代码我已放到GitHub,可自行Git,欢迎大家不断完善,这只是个基本功能的工具。

GitHub:https://github.com/JimmieRan/JPush_Java_SDK.git

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值