java后台实现Jpush推送通知

我们目前做的平台是一整个快递物流体系,包含下单、收件、网点监控物流等多个模块,当用户下单完成后需要通知某一网点下的快递员。

我们最终采用了Jpush(毕竟免费简单),为了不对原有系统表进行修改,和前端商量之后直接通过用户手机号作为Jpush系统的alias,这样可以避免采集设备信息。

流程:用户登录app时,若后台校验成功,返回用户的详细信息给前端,前端立即将用户手机号录入Jpush系统(我们选择alias,也可以用标签),当寄件端有人下单后,后台触发向多人推送通知事件。

jpush开发文档地址:https://docs.jiguang.cn/jpush/server/push/server_overview/

1、pom依赖引入:

<dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jpush-client</artifactId>
            <version>3.3.10</version>
        </dependency>
        <dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jiguang-common</artifactId>
            <version>1.1.4</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.6.Final</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3</version>
        </dependency>

此处要注意log4j相关依赖冲突,如果项目中已经引入日志依赖,需要exclusion冲突的依赖。

2、功能实现:

//Jpush key
    private static String jpushKey = "your key";
    //Jpush secret
    private static String jpushSecret = "your secret";

    private static int timeToLive =  60 * 60 * 24;//通知存活时间,设置为24小时 

    public static void pushNotificationByAddOrder(String[] alias,String message) throws SystemException {
        JPushClient jpushClient = new JPushClient(jpushSecret,jpushKey, timeToLive,null);

        //push对象创建
        PushPayload  payload = PushPayload.newBuilder().setPlatform(Platform.all())
                .setAudience(Audience.alias(alias))//设置通知对象
                .setNotification(Notification.alert(message))//通知种类,可进行自定义
                .build();
        try {
            PushResult result = jpushClient.sendPush(payload);
            System.out.println(result.getResponseCode());
        } catch (APIConnectionException e) {
            // Connection error, should retry later
            throw new SystemException(500,"JPush连接出错");
        } catch (APIRequestException e) {
            throw new SystemException(500,"Jpush请求出错");
        }

    }

异常捕捉是我自己封装的,目前来说发送通知这一种就够我们使用,我也试了一下自定义的通知推送,没有成功,Jpush后台显示api接口调用成功,但是没有触发推送,还需要再了解一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值