SpringBoot项目集成UniPush推送服务

一、DCLOUD开发者平台uni app开通uni push厂商推送配置

DCLOUD开发者平台开发者中心网址:DCLOUD开发者平台开发者中心

1、Uni Push1.0(老版本)

(1)Uni Push控制台菜单列表

Uni Push控制台需要对应用信息、厂商推送(离线推送)设置进行配置。如只需app在使用的过程中进行推送的话只需将应用信息进行配置即可,如果需要离线推送的正常使用,那我们需要将厂商推送进行配置。消息推送,可对app应用进行消息推送测试。
SpringBoot项目集成UniPush推送服务_第1张图片

(2)应用信息配置:

如下图所示将应用信息进行配置,如果应用只支持Android平台无需选择ios进行配置。
SpringBoot项目集成UniPush推送服务_第2张图片

(3)消息推送

官方对Uni Push的解释就是,Uni App集成了个推平台,项目开发文档就是服务端开发文档也就是个推官方开发文档:RestAPI V2
注意:
1. uniPush推送功能需提交云端打包后才能生效,如需真机调试请使用 自定义基座。 详情参考:UniPush使用指南
2. 如果下方页面内容不显示或提示登录超时,请刷新页面重试。
3. 在使用推送过程中如果遇到任何问题,可以通过“配置管理”-“故障排查”中的联系方式获取帮助。
4. 每个账号有开通 uniPush 应用个数的限制,请合理安排使用。如需提升限额,需先完成企业认证(仅支持面向企业用户提升额度),然后发邮件到 [email protected] 申请。发送提额邮件时,需说明dev.dcloud.net.cn的登录账号,同时需解释公司主营业务,以及为何需要更多的uniPush额度。正常情况下,3个工作日内审核完毕。
5. 常见问题:UniPush常见问题
控制台界面如下图,用于测试、推送数据查看或是在控制台进行消息推送:
SpringBoot项目集成UniPush推送服务_第3张图片

(4)厂商推送设置

厂商应用开通指南:

华为

1. 创建华为应用

  • 参见华为官方文档 配置AppGallery Connect ,完成文档中的内容配置。登录 AppGallery Connect 网站,选择我的项目。打开刚才创建的项目,查看应用信息中相应的华为 AppID、华为 SecretKey。该信息在之后步骤中将会使用,如下图:

SpringBoot项目集成UniPush推送服务_第4张图片

  • 在 “项目设置 > 增长” 中选择“推送服务”,点击“立即开通”,以此来开启华为侧推送服务状态。

image.png

  • 在 “项目设置 > 常规” 中填写“ SHA256证书指纹 ”,点击右侧对勾进行保存;若不知道具体值,请参考 SHA256指纹证书获取 。

SpringBoot项目集成UniPush推送服务_第5张图片

  • 在 “项目设置 > 推送服务> 配置”中开通项目回执状态,配置个推侧的回调地址以及HTTPS证书。如下SpringBoot项目集成UniPush推送服务_第6张图片

  • 回执名称可自定义

https://thirdrcp-hz.getui.com/hw
-----BEGIN CERTIFICATE-----
MIIGqTCCBZGgAwIBAgIQAVdiWJ3ORoF7fDA5qyolZTANBgkqhkiG9w0BAQsFADBf
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR4wHAYDVQQDExVHZW9UcnVzdCBDTiBSU0EgQ0EgRzEw
HhcNMjIwNTE2MDAwMDAwWhcNMjMwNjE2MjM1OTU5WjB0MQswCQYDVQQGEwJDTjES
MBAGA1UECAwJ5rWZ5rGf55yBMRIwEAYDVQQHDAnmna3lt57luIIxJzAlBgNVBAoM
Huavj+aXpeS6kuWKqOiCoeS7veaciemZkOWFrOWPuDEUMBIGA1UEAwwLKi5nZXR1
aS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAOvUwMLw5roP+
vQzEqdVfFQDg5viSUnevk31GhS7UkwNVKPJkdwBvuetOuki5NfJR9GxQAq0fk0Qq
15VHHnLYdgY/VSBSuFJZ8DbKD+/3LqVp6WW7HEEgPWbto04bgB2KOqkt/ws3bmso
NZsdHHAYb2pbOTO7ZW4VpZaiIppGeLvcFNcP1QwqpARiOGOUxz3q4OFSh8QWapV9
Y15LBrTdMid4Dzd+UNRqZJYWX0KdmD5VNK3obo+Wq2Rj0ktV1skPWWINo+ecvJDq
O82+6m8zF+G1nmz7ofVCGm261wXdAaFWS7gdh8MRuSFSVW0O+edXTx4Ez2mNMzQp
65PjJAxfAgMBAAGjggNKMIIDRjAfBgNVHSMEGDAWgBSRn14xFa4Qn61gwffBzKpI
NC8MJjAdBgNVHQ4EFgQUpYw0JXac0ld0vX8gP1le02rlQUAwIQYDVR0RBBowGIIL
Ki5nZXR1aS5jb22CCWdldHVpLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9j
cmwzLmRpZ2ljZXJ0LmNvbS9HZW9UcnVzdENOUlNBQ0FHMS5jcmwwNKAyoDCGLmh0
dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9HZW9UcnVzdENOUlNBQ0FHMS5jcmwwPgYD
VR0gBDcwNTAzBgZngQwBAgIwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdp
Y2VydC5jb20vQ1BTMG8GCCsGAQUFBwEBBGMwYTAhBggrBgEFBQcwAYYVaHR0cDov
L29jc3AuZGNvY3NwLmNuMDwGCCsGAQUFBzAChjBodHRwOi8vY3JsLmRpZ2ljZXJ0
LWNuLmNvbS9HZW9UcnVzdENOUlNBQ0FHMS5jcnQwCQYDVR0TBAIwADCCAX0GCisG
AQQB1nkCBAIEggFtBIIBaQFnAHUA6D7Q2j71BjUy51covIlryQPTy9ERa+zraeF3
fW0GvW4AAAGAyt5DUAAABAMARjBEAiAsp7cSQHGTO8EF09x7mKga8eWF0UYq0JZ2
xQR4ubI87AIgK+zsAzAF7tFQ29fQGm/87wYEE8y1g5lhWqO+5vLUpg8AdwA1zxkb
v7FsV78PrUxtQsu7ticgJlHqP+Eq76gDwzvWTAAAAYDK3kOMAAAEAwBIMEYCIQDe
fomYJt4a0uSt2CE6pA1LePKCCobkCWbBriHSFgNPEwIhAPlyCWEPFkZ0sIV7rAEg
oZHuV77Xe58cSUIGm80UxS5sAHUAtz77JN+cTbp18jnFulj0bF38Qs96nzXEnh0J
gSXttJkAAAGAyt5DhwAABAMARjBEAiA+FlDj9Gmb8zbK+wHFlqkzjKLFqeSOH80F
Ndv/tgemaAIgFiGUdq3HTxNsdstCfBpK8UCN8ChNeI2O2msCHK8lU70wDQYJKoZI
hvcNAQELBQADggEBAHtbJKGJOfgJzvSfyvzPKcbYymhjIerPVX+HBAEqb2SX9f9M
qhvo89xsZTiT2dMSDLCvdEO2E5QWJZoTKmL3uY9BO6/4reoYvd8sGTjNU/spjZUR
hv1+79Xz9DTFtCYziBnPOv72t4iklZjpato1vJLHQ62f9BgQlYplMiZ1KZkmP5XA
my34lax7fg0SSz2GCmjKoNGkoCpvAl+TmJ+8IS0z6N/szZrmioDZT5Jp/lJ2U1fk
so3vAz19idF8P95yy2jRGg2IA8WdMnfxp8rv6HszdBoaKiMlSAYXU3mktRhedEz4
MUvq13jQmXo+vsN0eggEeUiFFHBHjlXs1g+b8bQ=
-----END CERTIFICATE-----
  • 点击“提交”,提示“成功”则表示配置成功

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:
    SpringBoot项目集成UniPush推送服务_第7张图片

小米

1. 创建小米应用

  • 登录 小米开放平台 申请开发者帐号:SpringBoot项目集成UniPush推送服务_第8张图片

  • 进入管理控制台->消息推送:SpringBoot项目集成UniPush推送服务_第9张图片

  • 选择创建手机/平板应用:SpringBoot项目集成UniPush推送服务_第10张图片

  • 填写应用名称和应用包名创建应用SpringBoot项目集成UniPush推送服务_第11张图片

  • 勾选我同意接受小米推送的接入合作协议复选框,点击启用按钮:SpringBoot项目集成UniPush推送服务_第12张图片

  • 查看应用信息,获取小米 AppID、小米 AppKey、小米 AppSecret:SpringBoot项目集成UniPush推送服务_第13张图片

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:SpringBoot项目集成UniPush推送服务_第14张图片

OPPO

1. 创建 OPPO 应用

  • 登录 OPPO 推送平台 登录/注册帐号:SpringBoot项目集成UniPush推送服务_第15张图片

  • 选择创建应用:SpringBoot项目集成UniPush推送服务_第16张图片

  • 填写应用名称和应用包名以及上传应用图标创建应用SpringBoot项目集成UniPush推送服务_第17张图片

  • 查看应用信息,获取 OPPO App ID、OPPO App Key、OPPO App Secret、OPPO Master SecretSpringBoot项目集成UniPush推送服务_第18张图片

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:

SpringBoot项目集成UniPush推送服务_第19张图片

VIVO

1. 创建 VIVO 应用

  1. 首先,先创建 VIVO 应用,见 Vivo 推送平台开启指南。
  2. 查看应用信息,获取 VIVO APP ID、VIVO APP keyy、VIVO APP secretSpringBoot项目集成UniPush推送服务_第20张图片

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:

SpringBoot项目集成UniPush推送服务_第21张图片

魅族

1. 创建魅族应用

  • 登录 魅族开放平台 申请开发者帐号:SpringBoot项目集成UniPush推送服务_第22张图片

  • 登录 魅族推送平台 ,选择新建应用:SpringBoot项目集成UniPush推送服务_第23张图片

  • 填写应用名称和应用包名,上传应用图标后创建应用:SpringBoot项目集成UniPush推送服务_第24张图片

  • 打开新创建的应用:SpringBoot项目集成UniPush推送服务_第25张图片

  • 在配置管理中查看相应的魅族 AppID、魅族 AppKey、魅族 AppSecret:SpringBoot项目集成UniPush推送服务_第26张图片

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:SpringBoot项目集成UniPush推送服务_第27张图片

UPS

UPS即统一推送服务。个推与手机厂商合作,帮助建设系统消息推送通道。目前支持的厂商有坚果、海信和索尼。

1. 创建 UPS 应用

应用创建后,在推送页面-配置管理-应用配置-Android多厂商配置-UPS,选择需要开通的UPS厂商,如下:
SpringBoot项目集成UniPush推送服务_第28张图片

2. 应用配置

  • UPS开通后无需再手动配置参数,效果如下:

SpringBoot项目集成UniPush推送服务_第29张图片

FCM

1.简介

消息推送支持集成 Firebase 云信息传递(Firebase Cloud Messaging,简称 FCM)通道,以满足 App 在海外安卓设备上的使用推送的需求,该服务由 Google 拥有的 Firebase 公司提供。若app需要上架海外应用市场,建议您使用 Google Play专版 客户端 SDK 。

2.创建FCM应用

进入 Firebase官网 创建项目,获取 google-services.json 文件及 Server key 。
1,登录 google 账号,如果没有账号请先注册
SpringBoot项目集成UniPush推送服务_第30张图片

2,登录后点击右上角的“Go to console”
SpringBoot项目集成UniPush推送服务_第31张图片

3,打开项目列表页面,点击 “Add project” 创建项目
SpringBoot项目集成UniPush推送服务_第32张图片

4,输入项目名称(根据自己应用取名),点击 “Continue”
SpringBoot项目集成UniPush推送服务_第33张图片

5,确认是否需要使用 Google Analytics 服务(根据自己需要开启或关闭),点击 “Continue”
SpringBoot项目集成UniPush推送服务_第34张图片

6,确认后创建项目,点击 “Continue” SpringBoot项目集成UniPush推送服务_第35张图片

进入项目详情页面,点击 “Android” 图标添加 Android 应用
SpringBoot项目集成UniPush推送服务_第36张图片

7,输入 Android 应用信息(包名、昵称、证书SHA-1),点击 “Register App”
SpringBoot项目集成UniPush推送服务_第37张图片

8,注册 Android 应用后下载配置文件 “google-services.json”,保存 google-services.json 文件后面需要使用
点击 “Next” 继续
SpringBoot项目集成UniPush推送服务_第38张图片

9,此步骤中的操作云端打包机已经处理,忽略提示信息,继续点击“Next”,进入下一步
完成注册 Android 应用,点击 “Continue to console” 回到项目详情页面
SpringBoot项目集成UniPush推送服务_第39张图片

10,点击 “Project settings” ,进入项目设置页面
SpringBoot项目集成UniPush推送服务_第40张图片

11,切换到 “Cloud Messaging” 项,获取 “Server key”
SpringBoot项目集成UniPush推送服务_第41张图片

3.应用配置

  • 在个推开发者中心中填写相关厂商信息:

SpringBoot项目集成UniPush推送服务_第42张图片

二、Java项目服务端集成Uni Push

1、服务端 SDK

SDK介绍

个推SDK的主要目标是提升开发者在服务端集成个推推送服务的开发效率。 开发者不需要进行复杂编程即可使用个推推送服务的各项常用功能,SDK可以自动帮您满足调用过程中所需的鉴权、组装参数、发送HTTP请求等非功能性要求。

获取SDK

开发语言 资源下载 其他
Java Maven 项目依赖

GitHub 项目主页 | 适用于 JDK 1.6 及其以上版本 |
| PHP | Composer 项目依赖

GitHub 项目主页 | 适用于 PHP 5.5 及其以上版本 |

2.Pom文件引入依赖

<dependency>
    <groupId>com.getui.push</groupId>
    <artifactId>restful-sdk</artifactId>
    <version>1.0.0.4</version>
</dependency>

3.集成Uni Push Java代码实现

/**
 *
 * @author zhoukeu
 * @since 2021-12-20
 */
@RestController
@RequestMapping("/sys-message")
public class SysMessageController {

    @Autowired
    private SysMessageService sysMessageService;

    /**
     * 消息推送服务端接口,测试用
     */
    @NoAuthentication
    @RequestMapping(value = "/pushMess", method = RequestMethod.GET)
    public void forwardNews(){
        sysMessageService.forwardNews();
    }
}
/**
 *
 * @author zhoukeu
 * @since 2021-12-20
 */
public interface SysMessageService extends IService<SysMessage> {

    void forwardNews();
}
/**
 *
 * @author zhoukeu
 * @since 2021-12-20
 */
@Slf4j
@Service
public class SysMessageServiceImpl extends ServiceBaseImpl<SysMessageMapper, SysMessage> implements SysMessageService {

    @Resource
    private GeTuiUtils geTuiUtils;

    @Autowired
    private SysMessageMapper sysMessageMapper;

    /**
     * 集成个推推送消息
     */
    @Override
    @Scheduled(cron = "0 0/2 * * * ?")
    public void forwardNews(){
        List<Map<String, Object>> maps = sysMessageMapper.selectMessages();
        if (maps.size() > 0) {
            maps.forEach(map -> {
                log.info("正在推送:{}", map);
                // System.out.println(map);
                // 获取推送信息
                 String cid = (String) map.get("F_ClientID");
                 String title = (String) map.get("F_Title");
                 String content = (String) map.get("F_Summary");
                 String linkUrl = (String) map.get("F_LinkUrl");
                // type = 1 消息推送
                String type = GeTuiUtils.MESSAGE_PUSH;
                ApiResult<Map<String, Map<String, String>>> mapApiResult = geTuiUtils.pushToSingleByCid(cid, title, content, linkUrl, type);
                // 修改推送消息表
                map.put("F_IsPush", 1);
                SysMessage sysMessage = null;
                try {
                    sysMessage = this.mapToEntity(map, SysMessage.class, Other);
                } catch (IllegalAccessException | InstantiationException e) {
                    e.printStackTrace();
                }
                // 判断消息是否推送成功打印日志更新数据库状态
                if (mapApiResult.isSuccess()) {
                    sysMessageMapper.updateById(sysMessage);
                    log.info("成功推送至:{}", map.get("F_FullName"));
                } else {
                    log.error("无法推送消息至:{},请检查后重试", map.get("F_FullName"));
                }

            });
        } else {
            log.info("没有消息需要推送");
        }
    }
}
/**
 *
 * @author zhoukeu
 * @since 2021-12-20
 */
@Mapper
public interface SysMessageMapper extends MapperBase<SysMessage> {

    @Select("SELECT\n" +
            "\tm.F_MessageID,\n" +
            "\tm.F_Title,\n" +
            "\tm.F_Summary,\n" +
            "\tm.F_LinkUrl,\n" +
            "\tm.F_IsPush,\n" +
            "\tm.F_Status,\n" +
            "\tu.F_ClientID,\n" +
            "\tu.F_FullName \n" +
            "FROM\n" +
            "\tT_Sys_Message m\n" +
            "\tLEFT JOIN T_Sys_User u ON m.F_RecieverUserID= u.F_UserID \n" +
            "WHERE\n" +
            "\tm.F_IsPush= 0 \n" +
            "\tAND m.F_Status = 0\n" +
            "\tAND m.F_IsDeleted= 0 \n" +
            "\tAND u.F_ClientID IS NOT NULL\n" +
            "\tAND u.F_IsDeleted = 0\n" +
            "\tAND u.F_AccountState = 1\n" +
            "\tAND u.F_LockState != 3\n" +
            "\tAND u.F_UserState = 1")
    List<Map<String, Object>> selectMessages();
}
@Slf4j
@Component
public class GeTuiUtils {
    // 消息推送
    public static final String MESSAGE_PUSH = "1";
    // 离线推送
    public static final String OFFLINE_PUSH = "2";

    @Resource(name = "myApiHelper")
    private ApiHelper myApiHelper;

    /**
     * 消息推送(离线推送)单cid推送
     *
     */
    public ApiResult<Map<String, Map<String, String>>> pushToSingleByCid(String cid, String title, String content, String linkUrl, String type) {
        PushDTO<Audience> pushDTO = this.buildPushDTO(title, content, linkUrl, type);
        // 设置接收人信息
        Audience audience = new Audience();
        pushDTO.setAudience(audience);
        audience.addCid(cid); // cid
        // 进行cid单推
        PushApi pushApi = myApiHelper.creatApi(PushApi.class);
        ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
        if (apiResult.isSuccess()) {
            // success
            log.info("推送成功");
            System.out.println(apiResult.getData());
        } else {
            // failed
            log.error("推送失败");
            System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
        }
        return apiResult;
    }

    /**
     * 消息参数模板
     */
    private PushDTO<Audience> buildPushDTO(String title, String content, String linkUrl, String type) {
        PushDTO<Audience> pushDTO = new PushDTO<>();
        // 设置推送参数
        //requestid需要每次变化唯一
        pushDTO.setRequestId(System.currentTimeMillis() + "");
        pushDTO.setGroupName("wxb-group");

        // 消息通知
        //GTNotification notification = new GTNotification();
        //pushMessage.setNotification(notification);
        //notification.setTitle(title);
        //notification.setBody(content);
        //android8.0以上
        //0:无声音,无振动,不显示;
        //1:无声音,无振动,锁屏不显示,通知栏中被折叠显示,导航栏无logo;
        //2:无声音,无振动,锁屏和通知栏中都显示,通知不唤醒屏幕;
        //3:有声音,无振动,锁屏和通知栏中都显示,通知唤醒屏幕;
        //4:有声音,有振动,亮屏下通知悬浮展示,锁屏通知以默认形式展示且唤醒屏幕;
        // notification.setChannelLevel("3");



        //notification.setClickType("payload");
        //notification.setPayload(payload);
        //notification.setBadgeAddNum("1");
        /* 设置个推通道参数,更多参数请查看文档或对象源码 */

        //配置推送条件
        // 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
        // 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
        // 3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
        // 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
        Strategy strategy = new Strategy();
        strategy.setDef(1);
        strategy.setSt(1);
        Settings settings = new Settings();
        settings.setStrategy(strategy);
        pushDTO.setSettings(settings);
        //消息有效期,走厂商消息需要设置该值
        settings.setTtl(3600000);

        PushChannel pushChannel = new PushChannel();

        Map<String, String> map = new HashMap<>();
        map.put("title", title);
        map.put("content", content);
        map.put("linkUrl", linkUrl);
        map.put("type", type);
        // 转json对象
        String payload = JSONUtils.toJSONString(map);

        // ========================= ios离线配置 ==============================
        //推送苹果离线通知标题内容
        Alert alert = new Alert();
        //苹果离线通知栏标题
        alert.setTitle(title);
        //苹果离线通知栏内容
        alert.setBody(content);
        Aps aps = new Aps();
        //1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。
        // 苹果建议1小时最多推送3条静默消息
        aps.setContentAvailable(0);
        aps.setSound("default");
        aps.setAlert(alert);
        IosDTO iosDTO = new IosDTO();
        iosDTO.setPayload(payload);
        iosDTO.setAps(aps);
        iosDTO.setType("notify");
        pushChannel.setIos(iosDTO);

        // =================== 安卓离线厂商通道推送消息体 ===========================
        AndroidDTO androidDTO = new AndroidDTO();
        pushDTO.setPushChannel(pushChannel);
        pushChannel.setAndroid(androidDTO);
        Ups ups = new Ups();
        androidDTO.setUps(ups);
        ThirdNotification notification1 = new ThirdNotification();
        ups.setNotification(notification1);
        //安卓离线展示的标题
        notification1.setTitle(title);
        //安卓离线展示的内容
        notification1.setBody(content);
        notification1.setClickType("intent");

        notification1.setIntent("intent:#Intent;action=android.intent.action.oppopush;" +
                "launchFlags=0x14000000;" +
                "component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;" +
                "S.title=" + title + ";" +
                "S.content="+  content + ";" +
                "S.payload=" + payload + ";end");
        // notification1.setPayload(payload);
        //各厂商自有功能单项设置
//        ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry ");
//        ups.addOption("HW", "/message/android/notification/badge/add_num", 1);
//        ups.addOption("HW", "/message/android/notification/importance", "HIGH");
//        ups.addOption("VV","classification",1);

        //设置options 方式一
//        ups.addOption("HW","badgeAddNum",3);
//        ups.addOption("HW","badgeClass","com.getui.demo.GetuiSdkDemoActivity");
//        ups.addOption("OP","app_message_id",11);
//        ups.addOption("VV","message_sort",1);
//        ups.addOptionAll("channel","default");

        // PushMessage在线走个推通道才会起作用的消息体
        PushMessage pushMessage = new PushMessage();
        pushDTO.setPushMessage(pushMessage);
        Map<String, Object> mapTC = new HashMap<>();
        mapTC.put("title", title);
        mapTC.put("content", content);
        mapTC.put("payload", map);
        String jsonTC = JSONUtils.toJSONString(mapTC);
        pushMessage.setTransmission(jsonTC);
        log.info("pushDTO:{}", pushDTO);
        return pushDTO;
    }

    /**
     * 离线通知消息参数模板
     *
     */
    private PushDTO<Audience> offlinePushDTO(String title, String content, String linkUrl, String type) {
        PushDTO<Audience> pushDTO = new PushDTO<>();
        // 设置推送参数
        //requestid需要每次变化唯一
        pushDTO.setRequestId(System.currentTimeMillis() + "");
        pushDTO.setGroupName("wxb-group");
        // PushMessage在线走个推通道才会起作用的消息体

        Map<String, String> map = new HashMap<>();
        map.put("title", title);
        map.put("content", content);
        map.put("linkUrl", linkUrl);
        map.put("type", type);

        PushMessage pushMessage = new PushMessage();
        pushDTO.setPushMessage(pushMessage);
        Map<String, Object> mapTC = new HashMap<>();
        mapTC.put("title", title);
        mapTC.put("content", content);
        mapTC.put("payload", map);
        String jsonTC = JSONUtils.toJSONString(mapTC);
        System.err.println(jsonTC);
        pushMessage.setTransmission(jsonTC);
        log.info("pushDTO:{}", pushDTO);

        return pushDTO;
    }
}
/**
 * 个推推送类
 */
@Configuration
public class GTPushConfig {
    @Value("${push.app_id}")
    private String appId;

    @Value("${push.app_key}")
    private String appKey;

    @Value("${push.master_secret}")
    private String masterSecret;

    @Bean(name = "myApiHelper")
    public ApiHelper apiHelper() {
        // 设置httpClient最大连接数,当并发较大时建议调大此参数。或者启动参数加上 -Dhttp.maxConnections=200
        System.setProperty("http.maxConnections", "200");

        GtApiConfiguration apiConfiguration = new GtApiConfiguration();
        // 填写应用配置
        apiConfiguration.setAppId(appId);
        apiConfiguration.setAppKey(appKey);
        apiConfiguration.setMasterSecret(masterSecret);
        // 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀, 可不填写appId
        // 默认为https://restapi.getui.com/v2
        apiConfiguration.setDomain("https://restapi.getui.com/v2/");
        // 实例化ApiHelper对象,用于创建接口对象
        ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
        return apiHelper;
    }
}
push:
# 登录测试
  app_id: l4jOPmTtJx9MpeY4SGgCh4
  app_key: FEeRTZeCPx98QDwYBtZTG3
  master_secret: RyU5cFvTy09YANmfJgWLC
# 本配置信息仅用于开发测试,请自行前往Uni Push信息配置获取

你可能感兴趣的:(uniapp,spring,boot,后端,java,intellij-idea,sql)