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

1、添加极光推送所须要的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 推送方式:一、“tag”标签推送,二、“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 推送方式:一、“tag”标签推送,二、“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端进行标签和别名设置,通常是在用户登陆以后就设置好,这样只要用户登陆,它的绑定别名或者标签就能够保存到极光服务器,而咱们推送时,指定这个别名或者标签,就能将信息推送到对应用户的手机上。ios

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

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

相关文章
相关标签/搜索