java-极光推送教程

一、准备工作:

1.访问极光推送官网:https://www.jiguang.cn/accounts/login/form

2.注册登陆,拿到appKey和masterSecret

3.创建一个应用,安卓需要自己配置自己的设备ios一样的,服务端加上访问前缀和前端相对应即可。

package com.hykj.common;

import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
//import cn.jpush.api.common.resp.APIConnectionException;
//import cn.jpush.api.common.resp.APIRequestException;
import cn.jpush.api.push.PushResult;
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.audience.Audience;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.fasterxml.jackson.databind.ser.std.StdKeySerializers.Default;

import java.util.HashMap;
import java.util.Map;

/**
 * 
 * @Description:极光推送工具类
 * @author: fuzongle
 * @date:   2019年5月7日 下午9:55:02
 */
@Controller
@RequestMapping(value="/jpush")
public class JPushClientUtil{
    

    private static final String appKey = ""; // 必填,例如466f7032ac604e02fb7bda89
    private static final String masterSecret = "";//必填,每个应用都对应一个masterSecret
    
    
    private static final String appKey2 = ""; // 必填,例如466f7032ac604e02fb7bda89
    private static final String masterSecret2 = "";//必填,每个应用都对应一个masterSecret

/
    private static JPushClient jpush = null;
    public static final int MAX = Integer.MAX_VALUE;
    public static final int MIN = MAX / 2;
    /**
     * 保存离线的时长。秒为单位。最多支持10天(864000秒)。 
     * 0 表示该消息不保存离线。即:用户在线马上发出,当前不在线用户将不会收到此消息。
     * 此参数不设置则表示默认,默认为保存1天的离线消息(86400秒)。
     */
    private static long timeToLive = 60 * 60 * 24;
    public static void main(String[] args) {
        String msgTitle = "推送测试";
        String msgContent = "看到信息了么,看到就推送成功了!";
        //String tel_phone="18516779543";
        String tel_phone="15937016361";
        Map<String,String> extra = new HashMap<String, String>();
        extra.put("number","CO2017082811195687100");
        extra.put("type","money");
        push("JLY"+tel_phone,msgTitle,extra,0);
    /*    String title = "推送测试";    
        PushPayload payload = JPushClientUtil.buildPushObject_all_all_alert(title);  
        System.out.println("服务器返回数据:" + payload.toString());*/
    }
     /** 
     *     所有平台,所有设备,内容为 content 的通知 
     *  
     * @param content 
     * @return 
     */  
    public static PushPayload buildPushObject_all_all_alert(String content) {  
        return PushPayload.alertAll(content);  
    }  
    
    /**
     * 生成极光推送对象PushPayload(采用java SDK)
     * @param alias
     * @param alert
     * @return PushPayload
     */
    public static PushPayload buildPushObject_android_ios_alias_alert(String alias,String alert,
            Map<String,String> extra,int value,String sound){
        return PushPayload.newBuilder()
                .setPlatform(Platform.android_ios())
                .setAudience(Audience.alias(alias))
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(AndroidNotification.newBuilder()
                                .addExtras(extra)
                                .setAlert(alert)
                                .build())
                        .addPlatformNotification(IosNotification.newBuilder()
                                .addExtras(extra)
                                .setAlert(alert)
                                .setBadge(value)
                                .setSound(sound)
                                .build())
                        .build())
                .setOptions(Options.newBuilder()
                        .setApnsProduction(false)//true-推送生产环境 false-推送开发环境(测试使用参数)
                        .setTimeToLive(90)//消息在JPush服务器的失效时间(测试使用参数)
                        .build())
                .build();
    }

    /**
     * 极光推送方法(采用java SDK)
     * @param alias
     * @param alert
     * @return PushResult
     */
    public static PushResult push(String alias, String alert, Map<String,String> extra,int type){
        PushResult pushResult = null;
        if (type==0){
            JPushClient jpushClient = new JPushClient(masterSecret, appKey,3);
            PushPayload payload = buildPushObject_android_ios_alias_alert(alias,alert,extra,1,"default");
            try {
                pushResult =  jpushClient.sendPush(payload);
                if(pushResult.isResultOK()){
                    System.out.println("ok");
                }
            } catch (APIConnectionException e) {
                e.printStackTrace();
                return null;
            } catch (APIRequestException e) {
                e.printStackTrace();
                return null;
            }
        }else if (type==1){
            JPushClient jpushClient = new JPushClient(masterSecret2, appKey2,3);
            PushPayload payload = buildPushObject_android_ios_alias_alert(alias,alert,extra,1,"default");
            try {
                pushResult =  jpushClient.sendPush(payload);
            } catch (APIConnectionException e) {
                e.printStackTrace();
                return null;
            } catch (APIRequestException e) {
                e.printStackTrace();
                return null;
            }
//        }else if (type==2){
//            JPushClient jpushClient = new JPushClient(masterSecret3, appKey3,3);
//            PushPayload payload = buildPushObject_android_ios_alias_alert(alias,alert,extra);
//            try {
//                pushResult =  jpushClient.sendPush(payload);
//            } catch (APIConnectionException e) {
//                e.printStackTrace();
//                return null;
//            } catch (APIRequestException e) {
//                e.printStackTrace();
//                return null;
//            }
//        }
        }
        return  pushResult;
        
    }
    
    /**
     * 给多个人推送消息
     * @param list
     */
    /*public static void pushManyMessage(List<PageData> list){
        
        for(int i=0;i<list.size();i++){
            pushMessage(
                list.get(i).get("msgTitle").toString(),
                list.get(i).get("msgContent").toString(),
                list.get(i).get("user_id").toString()
            );
        }
        
    }*/
    
    /**
     * 保持 sendNo 的唯一性是有必要的
     */
    public static int getRandomSendNo() {
        return (int) (MIN + Math.random() * (MAX - MIN));
    }

}

4.接口直接调用此工具类的push方法传入参数,即可发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值