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

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

1、Uni Push1.0(老版本)

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

Uni Push控制台需要对应用信息、厂商推送(离线推送)设置进行配置。如只需app在使用的过程中进行推送的话只需将应用信息进行配置即可,如果需要离线推送的正常使用,那我们需要将厂商推送进行配置。消息推送,可对app应用进行消息推送测试。
image.png

(2)应用信息配置:

如下图所示将应用信息进行配置,如果应用只支持Android平台无需选择ios进行配置。
image.png

(3)消息推送

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

(4)厂商推送设置

厂商应用开通指南:

华为

1. 创建华为应用

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

image.png

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

image.png

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

image.png

  • 在 “项目设置 > 推送服务> 配置”中开通项目回执状态,配置个推侧的回调地址以及HTTPS证书。如下image.png
  • 回执名称可自定义

    1. https://thirdrcp-hz.getui.com/hw
    1. -----BEGIN CERTIFICATE-----
    2. MIIGqTCCBZGgAwIBAgIQAVdiWJ3ORoF7fDA5qyolZTANBgkqhkiG9w0BAQsFADBf
    3. MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
    4. d3cuZGlnaWNlcnQuY29tMR4wHAYDVQQDExVHZW9UcnVzdCBDTiBSU0EgQ0EgRzEw
    5. HhcNMjIwNTE2MDAwMDAwWhcNMjMwNjE2MjM1OTU5WjB0MQswCQYDVQQGEwJDTjES
    6. MBAGA1UECAwJ5rWZ5rGf55yBMRIwEAYDVQQHDAnmna3lt57luIIxJzAlBgNVBAoM
    7. Huavj+aXpeS6kuWKqOiCoeS7veaciemZkOWFrOWPuDEUMBIGA1UEAwwLKi5nZXR1
    8. aS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAOvUwMLw5roP+
    9. vQzEqdVfFQDg5viSUnevk31GhS7UkwNVKPJkdwBvuetOuki5NfJR9GxQAq0fk0Qq
    10. 15VHHnLYdgY/VSBSuFJZ8DbKD+/3LqVp6WW7HEEgPWbto04bgB2KOqkt/ws3bmso
    11. NZsdHHAYb2pbOTO7ZW4VpZaiIppGeLvcFNcP1QwqpARiOGOUxz3q4OFSh8QWapV9
    12. Y15LBrTdMid4Dzd+UNRqZJYWX0KdmD5VNK3obo+Wq2Rj0ktV1skPWWINo+ecvJDq
    13. O82+6m8zF+G1nmz7ofVCGm261wXdAaFWS7gdh8MRuSFSVW0O+edXTx4Ez2mNMzQp
    14. 65PjJAxfAgMBAAGjggNKMIIDRjAfBgNVHSMEGDAWgBSRn14xFa4Qn61gwffBzKpI
    15. NC8MJjAdBgNVHQ4EFgQUpYw0JXac0ld0vX8gP1le02rlQUAwIQYDVR0RBBowGIIL
    16. Ki5nZXR1aS5jb22CCWdldHVpLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw
    17. FAYIKwYBBQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9j
    18. cmwzLmRpZ2ljZXJ0LmNvbS9HZW9UcnVzdENOUlNBQ0FHMS5jcmwwNKAyoDCGLmh0
    19. dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9HZW9UcnVzdENOUlNBQ0FHMS5jcmwwPgYD
    20. VR0gBDcwNTAzBgZngQwBAgIwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdp
    21. Y2VydC5jb20vQ1BTMG8GCCsGAQUFBwEBBGMwYTAhBggrBgEFBQcwAYYVaHR0cDov
    22. L29jc3AuZGNvY3NwLmNuMDwGCCsGAQUFBzAChjBodHRwOi8vY3JsLmRpZ2ljZXJ0
    23. LWNuLmNvbS9HZW9UcnVzdENOUlNBQ0FHMS5jcnQwCQYDVR0TBAIwADCCAX0GCisG
    24. AQQB1nkCBAIEggFtBIIBaQFnAHUA6D7Q2j71BjUy51covIlryQPTy9ERa+zraeF3
    25. fW0GvW4AAAGAyt5DUAAABAMARjBEAiAsp7cSQHGTO8EF09x7mKga8eWF0UYq0JZ2
    26. xQR4ubI87AIgK+zsAzAF7tFQ29fQGm/87wYEE8y1g5lhWqO+5vLUpg8AdwA1zxkb
    27. v7FsV78PrUxtQsu7ticgJlHqP+Eq76gDwzvWTAAAAYDK3kOMAAAEAwBIMEYCIQDe
    28. fomYJt4a0uSt2CE6pA1LePKCCobkCWbBriHSFgNPEwIhAPlyCWEPFkZ0sIV7rAEg
    29. oZHuV77Xe58cSUIGm80UxS5sAHUAtz77JN+cTbp18jnFulj0bF38Qs96nzXEnh0J
    30. gSXttJkAAAGAyt5DhwAABAMARjBEAiA+FlDj9Gmb8zbK+wHFlqkzjKLFqeSOH80F
    31. Ndv/tgemaAIgFiGUdq3HTxNsdstCfBpK8UCN8ChNeI2O2msCHK8lU70wDQYJKoZI
    32. hvcNAQELBQADggEBAHtbJKGJOfgJzvSfyvzPKcbYymhjIerPVX+HBAEqb2SX9f9M
    33. qhvo89xsZTiT2dMSDLCvdEO2E5QWJZoTKmL3uY9BO6/4reoYvd8sGTjNU/spjZUR
    34. hv1+79Xz9DTFtCYziBnPOv72t4iklZjpato1vJLHQ62f9BgQlYplMiZ1KZkmP5XA
    35. my34lax7fg0SSz2GCmjKoNGkoCpvAl+TmJ+8IS0z6N/szZrmioDZT5Jp/lJ2U1fk
    36. so3vAz19idF8P95yy2jRGg2IA8WdMnfxp8rv6HszdBoaKiMlSAYXU3mktRhedEz4
    37. MUvq13jQmXo+vsN0eggEeUiFFHBHjlXs1g+b8bQ=
    38. -----END CERTIFICATE-----
  • 点击“提交”,提示“成功”则表示配置成功

    2. 应用配置

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

小米

1. 创建小米应用

  • 登录 小米开放平台 申请开发者帐号:image.png
  • 进入管理控制台->消息推送:image.png
  • 选择创建手机/平板应用:image.png
  • 填写应用名称和应用包名创建应用image.png
  • 勾选我同意接受小米推送的接入合作协议复选框,点击启用按钮:image.png
  • 查看应用信息,获取小米 AppID、小米 AppKey、小米 AppSecret:image.png

    2. 应用配置

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

OPPO

1. 创建 OPPO 应用

  • 登录 OPPO 推送平台 登录/注册帐号:image.png
  • 选择创建应用:image.png
  • 填写应用名称和应用包名以及上传应用图标创建应用image.png
  • 查看应用信息,获取 OPPO App ID、OPPO App Key、OPPO App Secret、OPPO Master Secretimage.png

    2. 应用配置

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

image.png

VIVO

1. 创建 VIVO 应用

  1. 首先,先创建 VIVO 应用,见 Vivo 推送平台开启指南。
  2. 查看应用信息,获取 VIVO APP ID、VIVO APP keyy、VIVO APP secretimage.png

    2. 应用配置

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

image.png

魅族

1. 创建魅族应用

  • 登录 魅族开放平台 申请开发者帐号:image.png
  • 登录 魅族推送平台 ,选择新建应用:image.png
  • 填写应用名称和应用包名,上传应用图标后创建应用:image.png
  • 打开新创建的应用:image.png
  • 在配置管理中查看相应的魅族 AppID、魅族 AppKey、魅族 AppSecret:image.png

    2. 应用配置

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

UPS

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

1. 创建 UPS 应用

应用创建后,在推送页面-配置管理-应用配置-Android多厂商配置-UPS,选择需要开通的UPS厂商,如下:
image.png

2. 应用配置

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

image.png

FCM

1.简介

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

2.创建FCM应用

进入 Firebase官网 创建项目,获取 google-services.json 文件及 Server key 。
1,登录 google 账号,如果没有账号请先注册
image.png
2,登录后点击右上角的“Go to console”
image.png
3,打开项目列表页面,点击 “Add project” 创建项目
image.png
4,输入项目名称(根据自己应用取名),点击 “Continue”
image.png
5,确认是否需要使用 Google Analytics 服务(根据自己需要开启或关闭),点击 “Continue”
image.png
6,确认后创建项目,点击 “Continue” image.png
进入项目详情页面,点击 “Android” 图标添加 Android 应用
image.png
7,输入 Android 应用信息(包名、昵称、证书SHA-1),点击 “Register App”
image.png
8,注册 Android 应用后下载配置文件 “google-services.json”,保存 google-services.json 文件后面需要使用
点击 “Next” 继续
image.png
9,此步骤中的操作云端打包机已经处理,忽略提示信息,继续点击“Next”,进入下一步
完成注册 Android 应用,点击 “Continue to console” 回到项目详情页面
image.png
10,点击 “Project settings” ,进入项目设置页面
image.png
11,切换到 “Cloud Messaging” 项,获取 “Server key”
image.png

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

image.png

三星

三星手机通道还没对外公测,目前app基本都用不了。

3.应用配置

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

1、服务端 SDK

SDK介绍

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

获取SDK

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

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

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

2.Pom文件引入依赖

  1. <dependency>
  2. <groupId>com.getui.push</groupId>
  3. <artifactId>restful-sdk</artifactId>
  4. <version>1.0.0.4</version>
  5. </dependency>

3.集成Uni Push Java代码实现

  1. /**
  2. *
  3. * @author zhoukeu
  4. * @since 2021-12-20
  5. */
  6. @RestController
  7. @RequestMapping("/sys-message")
  8. public class SysMessageController {
  9. @Autowired
  10. private SysMessageService sysMessageService;
  11. /**
  12. * 消息推送服务端接口,测试用
  13. */
  14. @NoAuthentication
  15. @RequestMapping(value = "/pushMess", method = RequestMethod.GET)
  16. public void forwardNews(){
  17. sysMessageService.forwardNews();
  18. }
  19. }
  1. /**
  2. *
  3. * @author zhoukeu
  4. * @since 2021-12-20
  5. */
  6. public interface SysMessageService extends IService<SysMessage> {
  7. void forwardNews();
  8. }
  1. /**
  2. *
  3. * @author zhoukeu
  4. * @since 2021-12-20
  5. */
  6. @Slf4j
  7. @Service
  8. public class SysMessageServiceImpl extends ServiceBaseImpl<SysMessageMapper, SysMessage> implements SysMessageService {
  9. @Resource
  10. private GeTuiUtils geTuiUtils;
  11. @Autowired
  12. private SysMessageMapper sysMessageMapper;
  13. /**
  14. * 集成个推推送消息
  15. */
  16. @Override
  17. @Scheduled(cron = "0 0/2 * * * ?")
  18. public void forwardNews(){
  19. List<Map<String, Object>> maps = sysMessageMapper.selectMessages();
  20. if (maps.size() > 0) {
  21. maps.forEach(map -> {
  22. log.info("正在推送:{}", map);
  23. // System.out.println(map);
  24. // 获取推送信息
  25. String cid = (String) map.get("F_ClientID");
  26. String title = (String) map.get("F_Title");
  27. String content = (String) map.get("F_Summary");
  28. String linkUrl = (String) map.get("F_LinkUrl");
  29. // type = 1 消息推送
  30. String type = GeTuiUtils.MESSAGE_PUSH;
  31. ApiResult<Map<String, Map<String, String>>> mapApiResult = geTuiUtils.pushToSingleByCid(cid, title, content, linkUrl, type);
  32. // 修改推送消息表
  33. map.put("F_IsPush", 1);
  34. SysMessage sysMessage = null;
  35. try {
  36. sysMessage = this.mapToEntity(map, SysMessage.class, Other);
  37. } catch (IllegalAccessException | InstantiationException e) {
  38. e.printStackTrace();
  39. }
  40. // 判断消息是否推送成功打印日志更新数据库状态
  41. if (mapApiResult.isSuccess()) {
  42. sysMessageMapper.updateById(sysMessage);
  43. log.info("成功推送至:{}", map.get("F_FullName"));
  44. } else {
  45. log.error("无法推送消息至:{},请检查后重试", map.get("F_FullName"));
  46. }
  47. });
  48. } else {
  49. log.info("没有消息需要推送");
  50. }
  51. }
  52. }
  1. /**
  2. *
  3. * @author zhoukeu
  4. * @since 2021-12-20
  5. */
  6. @Mapper
  7. public interface SysMessageMapper extends MapperBase<SysMessage> {
  8. @Select("SELECT\n" +
  9. "\tm.F_MessageID,\n" +
  10. "\tm.F_Title,\n" +
  11. "\tm.F_Summary,\n" +
  12. "\tm.F_LinkUrl,\n" +
  13. "\tm.F_IsPush,\n" +
  14. "\tm.F_Status,\n" +
  15. "\tu.F_ClientID,\n" +
  16. "\tu.F_FullName \n" +
  17. "FROM\n" +
  18. "\tT_Sys_Message m\n" +
  19. "\tLEFT JOIN T_Sys_User u ON m.F_RecieverUserID= u.F_UserID \n" +
  20. "WHERE\n" +
  21. "\tm.F_IsPush= 0 \n" +
  22. "\tAND m.F_Status = 0\n" +
  23. "\tAND m.F_IsDeleted= 0 \n" +
  24. "\tAND u.F_ClientID IS NOT NULL\n" +
  25. "\tAND u.F_IsDeleted = 0\n" +
  26. "\tAND u.F_AccountState = 1\n" +
  27. "\tAND u.F_LockState != 3\n" +
  28. "\tAND u.F_UserState = 1")
  29. List<Map<String, Object>> selectMessages();
  30. }
  1. @Slf4j
  2. @Component
  3. public class GeTuiUtils {
  4. // 消息推送
  5. public static final String MESSAGE_PUSH = "1";
  6. // 离线推送
  7. public static final String OFFLINE_PUSH = "2";
  8. @Resource(name = "myApiHelper")
  9. private ApiHelper myApiHelper;
  10. /**
  11. * 消息推送(离线推送)单cid推送
  12. *
  13. */
  14. public ApiResult<Map<String, Map<String, String>>> pushToSingleByCid(String cid, String title, String content, String linkUrl, String type) {
  15. PushDTO<Audience> pushDTO = this.buildPushDTO(title, content, linkUrl, type);
  16. // 设置接收人信息
  17. Audience audience = new Audience();
  18. pushDTO.setAudience(audience);
  19. audience.addCid(cid); // cid
  20. // 进行cid单推
  21. PushApi pushApi = myApiHelper.creatApi(PushApi.class);
  22. ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
  23. if (apiResult.isSuccess()) {
  24. // success
  25. log.info("推送成功");
  26. System.out.println(apiResult.getData());
  27. } else {
  28. // failed
  29. log.error("推送失败");
  30. System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
  31. }
  32. return apiResult;
  33. }
  34. /**
  35. * 消息参数模板
  36. */
  37. private PushDTO<Audience> buildPushDTO(String title, String content, String linkUrl, String type) {
  38. PushDTO<Audience> pushDTO = new PushDTO<>();
  39. // 设置推送参数
  40. //requestid需要每次变化唯一
  41. pushDTO.setRequestId(System.currentTimeMillis() + "");
  42. pushDTO.setGroupName("wxb-group");
  43. // 消息通知
  44. //GTNotification notification = new GTNotification();
  45. //pushMessage.setNotification(notification);
  46. //notification.setTitle(title);
  47. //notification.setBody(content);
  48. //android8.0以上
  49. //0:无声音,无振动,不显示;
  50. //1:无声音,无振动,锁屏不显示,通知栏中被折叠显示,导航栏无logo;
  51. //2:无声音,无振动,锁屏和通知栏中都显示,通知不唤醒屏幕;
  52. //3:有声音,无振动,锁屏和通知栏中都显示,通知唤醒屏幕;
  53. //4:有声音,有振动,亮屏下通知悬浮展示,锁屏通知以默认形式展示且唤醒屏幕;
  54. // notification.setChannelLevel("3");
  55. //notification.setClickType("payload");
  56. //notification.setPayload(payload);
  57. //notification.setBadgeAddNum("1");
  58. /* 设置个推通道参数,更多参数请查看文档或对象源码 */
  59. //配置推送条件
  60. // 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
  61. // 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
  62. // 3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
  63. // 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
  64. Strategy strategy = new Strategy();
  65. strategy.setDef(1);
  66. strategy.setSt(1);
  67. Settings settings = new Settings();
  68. settings.setStrategy(strategy);
  69. pushDTO.setSettings(settings);
  70. //消息有效期,走厂商消息需要设置该值
  71. settings.setTtl(3600000);
  72. PushChannel pushChannel = new PushChannel();
  73. Map<String, String> map = new HashMap<>();
  74. map.put("title", title);
  75. map.put("content", content);
  76. map.put("linkUrl", linkUrl);
  77. map.put("type", type);
  78. // 转json对象
  79. String payload = JSONUtils.toJSONString(map);
  80. // ========================= ios离线配置 ==============================
  81. //推送苹果离线通知标题内容
  82. Alert alert = new Alert();
  83. //苹果离线通知栏标题
  84. alert.setTitle(title);
  85. //苹果离线通知栏内容
  86. alert.setBody(content);
  87. Aps aps = new Aps();
  88. //1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。
  89. // 苹果建议1小时最多推送3条静默消息
  90. aps.setContentAvailable(0);
  91. aps.setSound("default");
  92. aps.setAlert(alert);
  93. IosDTO iosDTO = new IosDTO();
  94. iosDTO.setPayload(payload);
  95. iosDTO.setAps(aps);
  96. iosDTO.setType("notify");
  97. pushChannel.setIos(iosDTO);
  98. // =================== 安卓离线厂商通道推送消息体 ===========================
  99. AndroidDTO androidDTO = new AndroidDTO();
  100. pushDTO.setPushChannel(pushChannel);
  101. pushChannel.setAndroid(androidDTO);
  102. Ups ups = new Ups();
  103. androidDTO.setUps(ups);
  104. ThirdNotification notification1 = new ThirdNotification();
  105. ups.setNotification(notification1);
  106. //安卓离线展示的标题
  107. notification1.setTitle(title);
  108. //安卓离线展示的内容
  109. notification1.setBody(content);
  110. notification1.setClickType("intent");
  111. notification1.setIntent("intent:#Intent;action=android.intent.action.oppopush;" +
  112. "launchFlags=0x14000000;" +
  113. "component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;" +
  114. "S.title=" + title + ";" +
  115. "S.content="+ content + ";" +
  116. "S.payload=" + payload + ";end");
  117. // notification1.setPayload(payload);
  118. //各厂商自有功能单项设置
  119. // ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry ");
  120. // ups.addOption("HW", "/message/android/notification/badge/add_num", 1);
  121. // ups.addOption("HW", "/message/android/notification/importance", "HIGH");
  122. // ups.addOption("VV","classification",1);
  123. //设置options 方式一
  124. // ups.addOption("HW","badgeAddNum",3);
  125. // ups.addOption("HW","badgeClass","com.getui.demo.GetuiSdkDemoActivity");
  126. // ups.addOption("OP","app_message_id",11);
  127. // ups.addOption("VV","message_sort",1);
  128. // ups.addOptionAll("channel","default");
  129. // PushMessage在线走个推通道才会起作用的消息体
  130. PushMessage pushMessage = new PushMessage();
  131. pushDTO.setPushMessage(pushMessage);
  132. Map<String, Object> mapTC = new HashMap<>();
  133. mapTC.put("title", title);
  134. mapTC.put("content", content);
  135. mapTC.put("payload", map);
  136. String jsonTC = JSONUtils.toJSONString(mapTC);
  137. pushMessage.setTransmission(jsonTC);
  138. log.info("pushDTO:{}", pushDTO);
  139. return pushDTO;
  140. }
  141. /**
  142. * 离线通知消息参数模板
  143. *
  144. */
  145. private PushDTO<Audience> offlinePushDTO(String title, String content, String linkUrl, String type) {
  146. PushDTO<Audience> pushDTO = new PushDTO<>();
  147. // 设置推送参数
  148. //requestid需要每次变化唯一
  149. pushDTO.setRequestId(System.currentTimeMillis() + "");
  150. pushDTO.setGroupName("wxb-group");
  151. // PushMessage在线走个推通道才会起作用的消息体
  152. Map<String, String> map = new HashMap<>();
  153. map.put("title", title);
  154. map.put("content", content);
  155. map.put("linkUrl", linkUrl);
  156. map.put("type", type);
  157. PushMessage pushMessage = new PushMessage();
  158. pushDTO.setPushMessage(pushMessage);
  159. Map<String, Object> mapTC = new HashMap<>();
  160. mapTC.put("title", title);
  161. mapTC.put("content", content);
  162. mapTC.put("payload", map);
  163. String jsonTC = JSONUtils.toJSONString(mapTC);
  164. System.err.println(jsonTC);
  165. pushMessage.setTransmission(jsonTC);
  166. log.info("pushDTO:{}", pushDTO);
  167. return pushDTO;
  168. }
  169. }
  1. /**
  2. * 个推推送类
  3. */
  4. @Configuration
  5. public class GTPushConfig {
  6. @Value("${push.app_id}")
  7. private String appId;
  8. @Value("${push.app_key}")
  9. private String appKey;
  10. @Value("${push.master_secret}")
  11. private String masterSecret;
  12. @Bean(name = "myApiHelper")
  13. public ApiHelper apiHelper() {
  14. // 设置httpClient最大连接数,当并发较大时建议调大此参数。或者启动参数加上 -Dhttp.maxConnections=200
  15. System.setProperty("http.maxConnections", "200");
  16. GtApiConfiguration apiConfiguration = new GtApiConfiguration();
  17. // 填写应用配置
  18. apiConfiguration.setAppId(appId);
  19. apiConfiguration.setAppKey(appKey);
  20. apiConfiguration.setMasterSecret(masterSecret);
  21. // 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀, 可不填写appId
  22. // 默认为https://restapi.getui.com/v2
  23. apiConfiguration.setDomain("https://restapi.getui.com/v2/");
  24. // 实例化ApiHelper对象,用于创建接口对象
  25. ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
  26. return apiHelper;
  27. }
  28. }
  1. push:
  2. # 登录测试
  3. app_id: l4jOPmTtJx9MpeY4SGgCh4
  4. app_key: FEeRTZeCPx98QDwYBtZTG3
  5. master_secret: RyU5cFvTy09YANmfJgWLC
  6. # 本配置信息仅用于开发测试,请自行前往Uni Push信息配置获取