java后台实现Jpush推送通知

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

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

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

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

1、pom依赖引入:


            cn.jpush.api
            jpush-client
            3.3.10
        
        
            cn.jpush.api
            jiguang-common
            1.1.4
            
                
                    org.slf4j
                    slf4j-api
                
                
                    org.slf4j
                    jcl-over-slf4j
                
                
                    org.slf4j
                    slf4j-log4j12
                
                
                    log4j
                    log4j
                
            
        
        
            io.netty
            netty-all
            4.1.6.Final
            compile
        
        
            com.google.code.gson
            gson
            2.3
        

此处要注意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接口调用成功,但是没有触发推送,还需要再了解一下。

你可能感兴趣的:(jpush,java服务器)