SpringBoot服务端集成极光推送

1. 添加依赖

		<!-- 极光推送 -->
		<dependency>
			<groupId>cn.jpush.api</groupId>
			<artifactId>jpush-client</artifactId>
			<version>3.4.6</version>
		</dependency>

2. 推送工具类

/**
 * create by 星航指挥官
 * create on 2020/11/22
 * 不过是大梦一场空
 * 不过是孤影照惊鸿
 */
public class JpushUtils {
    // 设置app_key和masterSecret
    private static String APP_KEY = "******";
    private static String MASTER_SECRET = "******";


    /*
    * android端推送
    * parm参数是Controller层传来的参数,设置了通知的具体内容
    * */
    public static void jpushAndroid(Map<String, String> parm) {

        //创建JPushClient(极光推送的实例)
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        //推送的关键,构造一个payload
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.android())//指定android平台
//                .setAudience(Audience.all())//通知全部  即广播(免费版一天只有10次机会)
//                .setAudience(Audience.alias(parm.get("alias")))//根据别名发送
                .setAudience(Audience.tag(parm.get("tag")))//根据标签发送
//                .setAudience(Audience.registrationId(parm.get("id")))//指定用户发送
                .setOptions(Options.newBuilder().setApnsProduction(true).setTimeToLive(7200).build())
                // apnProduction指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式) 不用设置也没关系
                // TimeToLive 缓存时间
                .setNotification(Notification.android(parm.get("msg"), parm.get("title"), parm))  //发送通知
                .setMessage(Message.content(parm.get("msg")))//自定义信息  和上一个二选一 当然也可以一起发
                .build();//创建
        try {
            PushResult pushResult = jpushClient.sendPush(payload);
            System.out.println(pushResult.toString());
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }

    /*
     * ios端推送
     * parm参数是Controller层传来的参数,设置了通知的具体内容
     * */
    public static void jpushIOS(Map<String, String> parm) {

        //创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.ios())//ios平台
                .setAudience(Audience.all())//所有用户
                //.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用户
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder()
                                .setAlert(parm.get("msg"))
                                .setBadge(+1)
                                .setSound("happy")//这里是设置提示音
                                .addExtras(parm)
                                .build())
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
                .build();

        try {
            PushResult pushResult = jpushClient.sendPush(payload);
            System.out.println(pushResult.toString());
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }


    /*
     * android于ios端同时推送
     * parm参数是Controller层传来的参数,设置了通知的具体内容
     * */
    public static void jpushAll(Map<String, String> parm) {
        //创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        //创建option
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.all())  //所有平台的用户
                .setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用户
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder() //发送ios
                                .setAlert(parm.get("msg")) //消息体
                                .setBadge(+1)
                                .setSound("happy") //ios提示音
                                .addExtras(parm) //附加参数
                                .build())
                        .addPlatformNotification(AndroidNotification.newBuilder() //发送android
                                .addExtras(parm) //附加参数
                                .setAlert(parm.get("msg")) //消息体
                                .build())
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(true).build())//指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式)
                .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定义信息
                .build();
        try {
            PushResult pushResult = jpushClient.sendPush(payload);
            System.out.println(pushResult.toString());
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }
}

3. 推送消息

    @RequestMapping("/androidPush")
    public Result pushMessageToAndroid(){
        //创建参数集合
        Map<String, String> parm = new HashMap<>();
        //设置标题
        parm.put("title","Alin");
        //设置内容
        parm.put("msg","Hello Alin !");
        //设置标签
        parm.put("tag","0x412");
        //设置别名
        parm.put("alias","0x123");
        //发送推送
        JpushUtils.jpushAndroid(parm);

        return new Result(49,"SUCCESS",null);
    }

4. 小提示

如果极光推送没有用户会报错误码:1011

此时先检查集成是否成功

再检查标签或者别名是不是设置错误

END

猜你喜欢

转载自blog.csdn.net/AbyssskyLin/article/details/109958997