欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springboot 整合 Jpush 极光推送

程序员文章站 2022-03-21 17:25:32
产品简介:JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。产品优势:快速集成SDK,简单易用的控制台和API提供用户自定义的标签和别名系统,以及极光自己根据数据分析出的分类目标支持10亿级的高并发访问,多点备份保证系统稳定有专业的技术支持团队,及时...

产品简介:

JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。

产品优势:

快速集成SDK,简单易用的控制台和API
提供用户自定义的标签和别名系统,以及极光自己根据数据分析出的分类目标
支持10亿级的高并发访问,多点备份保证系统稳定
有专业的技术支持团队,及时响应客户的需求和问题

这些都是人家自己说的⬆️ 还有一些统计的功能确实不错

实现比较简单

一.账号申请

百度 极光推送 或直接 https://www.jiguang.cn/

二.注册 (进入官网之后右上角注册 邮箱即可)

springboot 整合 Jpush 极光推送
springboot 整合 Jpush 极光推送

三.创建应用 (注册成功后进入 默认没有应用 进行创建)

springboot 整合 Jpush 极光推送

四.查看自己应用的appkey 与 Master Secret

一会要配置在代码中类似于账号密码
springboot 整合 Jpush 极光推送

五.项目添加pom文件

	<dependency>
			<groupId>cn.jpush.api</groupId>
			<artifactId>jpush-client</artifactId>
			<version>3.2.17</version>
		</dependency>
		<dependency>
			<groupId>cn.jpush.api</groupId>
			<artifactId>jiguang-common</artifactId>
			<version>1.1.1</version>
		</dependency>

六.编写通用的实现类

package com.zhuning.safetyguard.common;

import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
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.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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;


import java.util.Map;

import static com.zhuning.safetyguard.common.ErrCodeEnum.JPUSH_FAILE;


/**
 * @author : Gyf
 * create at:  2019-06-06  11:18
 * @description: 推送通用Utils
 */
@Service
public class JPushUtils {


    //TODO molly123456789@126.com 极光号

    private static final String APP_KEY = "a21265452973aafa25c2b386";
    private static final String MASTER_SECRET = "fd2fdc64c3eb85a26409b111";


    /**
     * 极光推送>>Android
     */
    public static void jpushAndroid(Map<String, String> param, String title) {


        final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

        //创建JPushClient(极光推送的实例)
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        //推送的关键,构造一个payload
        PushPayload payload = PushPayload.newBuilder()
                //指定android平台的用户
                .setPlatform(Platform.android())
                //你项目中的所有用户
                .setAudience(Audience.all())
//                .setAudience(Audience.registrationId(param.get("id")))
                //registrationId指定用户
                .setNotification(Notification.android(param.get("msg"), title, param))
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                //这里是指定开发环境,不用设置也没关系
                //自定义信息
                .setMessage(Message.content(param.get("msg")))
                .build();
        try {
            jpushClient.sendPush(payload);
        } catch (APIConnectionException | APIRequestException e) {
            logger.info(JPUSH_FAILE.getRetMsg());
        }
    }


    /**
     * 极光推送>>ios
     */
    public static void jpushIOS(Map<String, String> param, String title) {

        final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

        //创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        PushPayload payload = PushPayload.newBuilder()
                //ios平台的用户
                .setPlatform(Platform.ios())
                //所有用
                .setAudience(Audience.all())
                //.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用户
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder()
                                .setAlert(param.get("msg"))
                                .setBadge(+1)
                                //这里是设置提示音(更多可以去官网看看)
                                .setSound("happy")
                                .addExtras(param)
                                .build())
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                //自定义信息
                .setMessage(Message.newBuilder().setMsgContent(param.get("msg")).addExtras(param).build())
                .build();
        try {
            jpushClient.sendPush(payload);
        } catch (Exception e) {
            logger.info(JPUSH_FAILE.getRetMsg());
        }
    }

    /**
     * 极光推送>>All所有平台
     */
    public static void jpushAll(Map<String, String> parm, String title) {

        final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

        //创建JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        //创建option
        PushPayload payload = PushPayload.newBuilder()
                //所有平台的用户
                .setPlatform(Platform.all())
                //registrationId指定用户
                .setAudience(Audience.registrationId(parm.get("id")))
                .setNotification(Notification.newBuilder()
                        //发送ios
                        .addPlatformNotification(IosNotification.newBuilder()
                                //消息体
                                .setAlert(parm.get("msg"))
                                .setBadge(+1)
                                //ios提示音
                                .setSound("happy")
                                //附加参数
                                .addExtras(parm)
                                .build())
                        //发送android
                        .addPlatformNotification(AndroidNotification.newBuilder().setTitle(title)
                                //附加参数
                                .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 {
            jpushClient.sendPush(payload);
        } catch (APIConnectionException | APIRequestException e) {
            logger.info(JPUSH_FAILE.getRetMsg());
        }
    }


    /**
     * 极光推送 api v3 自定义推送 没有提示
     */

    public static void apiV3Push() {
        final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, ClientConfig.getInstance());

        // For push, all you need do is to build PushPayload object.
        PushPayload payload = buildPushObject_ios_tagAnd_alertWithExtrasAndMessage();

        try {
            jpushClient.sendPush(payload);

        } catch (APIConnectionException | APIRequestException e) {
            logger.info(JPUSH_FAILE.getRetMsg());
        }
    }

    private static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android())
                .setAudience(Audience.registrationId("140fe1da9ee8a57e2fd"))
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(AndroidNotification.newBuilder()
                                .setAlert("")
                                .build())
                        .build())
                .setMessage(Message.content("20"))
                .setOptions(Options.newBuilder()
                        .setApnsProduction(false)
                        .build())
                .build();
    }
}

我只用了 推送android ios 以及全部推送和一个自定义推送的方法

七.测试 (等待 移动端开发人员集成sdk 获取移动设备key)

1.api测试 java后台发起 推送手机
创建测试接口 根据 设备的类型与设备key进行推送
2.web测试 极光官网推送
点击自己项目进入 然后选择推送
springboot 整合 Jpush 极光推送
选择推送的设备类型 标题以及推送的内容
springboot 整合 Jpush 极光推送
也可以自定义传送的消息 key-value形式
springboot 整合 Jpush 极光推送
根据 设备的key 进行发送
springboot 整合 Jpush 极光推送

介绍这里溜了 更多的可以看人家的官方文档https://docs.jiguang.cn//jpush/guideline/intro/

本文地址:https://blog.csdn.net/weixin_42404521/article/details/107512865