Java 整合极光推送官方文档:https://github.com/jpush/jpush-api-java-client

这里记录一下简单的使用步骤:创建一个普通的 Maven 工程然后添加依赖

<dependency>
    <groupId>cn.jpush.api</groupId>
    <artifactId>jpush-client</artifactId>
    <version>3.4.8</version>
</dependency>

然后创建一个类测试消息推送,代码如下所示:

public class PushTest {
    public static void main(String[] args) throws Exception {
        // 实现推送最基本的两个参数
        String APP_KEY = "APP_KEY";
        String MASTER_SECRET = "SECRET";
        // 构建极光客户端对象
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        // 获取Payload对象,对象内封装这消息主体、消息接收范围等等,Payload是个重点
        PushPayload payload = getPayload("消息接收测试");
        // 调用客户端对象中的sendPush函数进行发送消息
        jpushClient.sendPush(payload);
    }
}

构建 Payload 对象

可以看到,通过两个基本参数构建了极光推送实例,然后获取到Payload将其发送出去完成了推送,这里含金量最高的地方就是获取 payload 的过程,上面获取 payload 的函数并没有写出来,这里单独拿出来看:

public static PushPayload getPayload(String msg) {
    return new PushPayload.Builder()
            .setPlatform(Platform.android())
            .setAudience(Audience.all())
            .setNotification(Notification.alert(msg))
            .build();
}

构建最基本的 Payload 对象语法是这样写的:

PushPayload payload = new PushPayload.Builder().build();

但是这样构建出来的是空对象,我们需要在build()之前对这个实例进行一些操作,例如:

1. 发送消息的内容:最终显示在通知上的内容

PushPayload payload = new PushPayload.Builder()
     // 消息的具体内容,会显示在通知上
    .setNotification(Notification.alert("【系统提示】您有五元话费优惠券待领取"))
    .build();

显示在手机上类似这种效果:

java swt 消息 java实现消息推送_发送消息

2. 限制接收消息的平台:例如限制为安卓、苹果

PushPayload payload = new PushPayload.Builder()
    .setNotification(Notification.alert("【系统提示】您有五元话费优惠券待领取"))
    /*
     * setPlatform代表客户端平台,也就是设备类型,最常用的几个参数为:
     *    1. Platform.all():所有设备都可以接收
     *    2. Platform.android():仅安卓设备可接收
     *    3. Platform.ios():仅苹果设备可接收
     *    4. Platform.android_ios():安卓、苹果都可以接收
     *    ....
     */
    .setPlatform(Platform.all())
    .build();

3. 限制接收消息的设备:匹配客户端自行设置的 TAG 标签以及 Alias 别名

PushPayload payload = new PushPayload.Builder()
    .setNotification(Notification.alert("【系统提示】您有五元话费优惠券待领取"))
    .setPlatform(Platform.all())
    /*
     * setAudience可以过滤符合条件的客户端,最常用的几个参数为:
     *    1. Audience.all():没有设置过滤条件
     *    2. Audience.alias("01", "02" ...):设置了目标别名的设备才能接收到
     *    3. Audience.tag("VIP1", "VIP2" ...):添加了目标标签才可以接收到
     *    4. Audience.tag_and("VIP", "SVIP" ...):必须同时拥有这两个标签才能接收到
     *    5. Audience.tag_not("Guest" ...):必须不包含这些标签才能接收到
     *    还有一些更高级的交集并集玩儿法等等....
     */
    .setAudience(Audience.all())
    .build();

4. 关于消息的其他配置项

PushPayload payload = new PushPayload.Builder()
    .setNotification(Notification.alert("【系统提示】您有五元话费优惠券待领取"))
    .setPlatform(Platform.all())
    .setAudience(Audience.all())
    /*
     * setOptions对消息进行其他设置,需要传入Options实例,同样是链式编程然后跟上build()函数,例如:
     *     setTimeToLive(10):消息离线生存时间/s,发送消息后10秒内用户打开了APP就会收到消息,否则收不到
     *     其他配置项我这里没用过就没去找....
     */
    .setOptions(Options.newBuilder()
                .setTimeToLive(10)
                .build())
    .build();