• java后台服务器实现极光推送


    一、添加极光推送所需要的jar包,项目使用的maven,所以只需要在pom文件里添加jar包依赖

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

    二,编写极光推送工具类

    package com.cccuu.project.utils;
    
    import cn.jpush.api.JPushClient;
    import cn.jpush.api.push.PushResult;
    import cn.jpush.api.push.model.Message;
    import cn.jpush.api.push.model.Options;
    import cn.jpush.api.push.model.Platform;
    import cn.jpush.api.push.model.PushPayload;
    import cn.jpush.api.push.model.PushPayload.Builder;
    import cn.jpush.api.push.model.audience.Audience;
    import cn.jpush.api.push.model.notification.Notification;
    
    /**
     * 极光推送工具类
     */
    
    public class JiGuangPushUtil {
    
        //两个参数分别填写你申请的masterSecret和appKey
        private static JPushClient jPushClient=new JPushClient("masterSecret","appKey");
    
        /**
         * 通知推送
         * 备注:推送方式不为空时,推送的值也不能为空;推送方式为空时,推送值不做要求
         * @param type 推送方式:1、“tag”标签推送,2、“alias”别名推送
         * @param value 推送的标签或别名值
         * @param alert 推送的内容
         */
        private static void pushNotice(String type,String value,String alert){
            Builder builder= PushPayload.newBuilder();
            builder.setPlatform(Platform.all());//设置接受的平台,all为所有平台,包括安卓、ios、和微软的
            //设置如果用户不在线、离线消息保存的时间
            Options options=Options.sendno();
            options.setTimeToLive(86400l);    //设置为86400为保存一天,如果不设置默认也是保存一天
            builder.setOptions(options);
            //设置推送方式
            if(type.equals("alias")){
                builder.setAudience(Audience.alias(value));//根据别名推送
            }else if(type.equals("tag")){
                builder.setAudience(Audience.tag(value));//根据标签推送
            }else{
                builder.setAudience(Audience.all());//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
            }
            //设置为采用通知的方式发送消息
            builder.setNotification(Notification.alert(alert));
            PushPayload pushPayload=builder.build();
            try{
                //进行推送,实际推送就在这一步
                PushResult pushResult=jPushClient.sendPush(pushPayload);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
        /**
         * 自定义消息推送
         * 备注:推送方式不为空时,推送的值也不能为空;推送方式为空时,推送值不做要求
         * @param type 推送方式:1、“tag”标签推送,2、“alias”别名推送
         * @param value 推送的标签或别名值
         * @param alert 推送的内容
         */
        private static void pushMsg(String type, String value,String alert){
            Builder builder= PushPayload.newBuilder();
            builder.setPlatform(Platform.all());//设置接受的平台
            if(type.equals("alias")){
                builder.setAudience(Audience.alias(value));//别名推送
            }else if(type.equals("tag")){
                builder.setAudience(Audience.tag(value));//标签推送
            }else{
                builder.setAudience(Audience.all());//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
            }
            Message.Builder newBuilder=Message.newBuilder();
            newBuilder.setMsgContent(alert);//消息内容
            Message message=newBuilder.build();
            builder.setMessage(message);
            PushPayload pushPayload=builder.build();
            try{
                PushResult pushResult=jPushClient.sendPush(pushPayload);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
    
        public static void main(String[] args){
            //给标签为kefu的用户进行消息推送
            JiGuangPushUtil.pushNotice("tag","kefu","你有新的任务,请及时处理");
        }
    
    }

      代码中采用的是标签或者别名进行推送,需要在在手机APP端进行标签和别名设置,一般是在用户登录之后就设置好,这样只要用户登录,它的绑定别名或者标签就可以保存到极光服务器,而我们推送时,指定这个别名或者标签,就能将信息推送到对应用户的手机上。

      其实我们发起推送请求,只是将信息发送到了极光服务器之上,这个信息有一个保存时限,默认一天,只要用户使用手机APP登录系统,极光服务器就会将信息自动推送到对应别名或者标签的手机上,由此可见,信息并非由我们后台直接推送到手机,而是通过极光服务器这个中转站,而这正式极光的工作。

      注意:这里告知一个技巧,这个别名设置的时候,其实直接将用户ID设置为别名即可,既方便,又安全,不用再去想办法生成一个唯一的串来进行标识,甚至需要在后台数据库中用户表中新增字段。在标签设置的时候,一般是将一类用户设置为一个标签,然后实现给某类用户群发

  • 相关阅读:
    jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏
    CSS实现限制字数功能
    实用CSS3属性之 :target伪类实现Tab切换效果
    CSS Transform让百分比宽高布局元素水平垂直居中
    纯CSS3编写的面包屑导航收集
    node(day6)之静态资源页面设计和命名
    node中其他成员(非模块成员)之dirname和filename
    node=day6
    path路径操作模块
    promise数据库操作案例
  • 原文地址:https://www.cnblogs.com/duanrantao/p/9028740.html
Copyright © 2020-2023  润新知