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 = "71e7432cf51877daf5334115";
    private static String MASTER_SECRET = "acf5f4dd6302eaebf24c1eef";


    /*
    * 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. 小提示

若是极光推送没有用户会报错误码:1011java

此时先检查集成是否成功android

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

END

相关文章
相关标签/搜索