UniAppUtils.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. /*
  2. package com.willalp.common.uniapp;
  3. import cn.hutool.core.util.IdUtil;
  4. import com.getui.push.v2.sdk.api.PushApi;
  5. import com.getui.push.v2.sdk.common.ApiResult;
  6. import com.getui.push.v2.sdk.dto.req.Audience;
  7. import com.getui.push.v2.sdk.dto.req.Settings;
  8. import com.getui.push.v2.sdk.dto.req.Strategy;
  9. import com.getui.push.v2.sdk.dto.req.message.PushBatchDTO;
  10. import com.getui.push.v2.sdk.dto.req.message.PushChannel;
  11. import com.getui.push.v2.sdk.dto.req.message.PushDTO;
  12. import com.getui.push.v2.sdk.dto.req.message.PushMessage;
  13. import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO;
  14. import com.getui.push.v2.sdk.dto.req.message.android.ThirdNotification;
  15. import com.getui.push.v2.sdk.dto.req.message.android.Ups;
  16. import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
  17. import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
  18. import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.springframework.stereotype.Component;
  21. import javax.annotation.Resource;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.Map;
  25. */
  26. /**
  27. * @author hs
  28. *//*
  29. @Slf4j
  30. @Component
  31. public class UniAppUtils {
  32. @Resource(name = "myPushApi")
  33. private PushApi myPushApi;
  34. */
  35. /**
  36. * 单点推送(离线不推送)
  37. *
  38. * @param cid 目标
  39. * @param title 标题
  40. * @param content 内容
  41. *//*
  42. public void pushMsg(String cid, String title, String content) {
  43. //根据cid进行单推
  44. PushDTO<Audience> pushDTO = new PushDTO<Audience>();
  45. // 设置推送参数
  46. pushDTO.setRequestId(System.currentTimeMillis() + "");
  47. PushMessage pushMessage = new PushMessage();
  48. pushDTO.setPushMessage(pushMessage);
  49. */
  50. /** 带跳转url*//*
  51. // GTNotification notification = new GTNotification();
  52. // pushMessage.setNotification(notification);
  53. // notification.setTitle(title + new Date());
  54. // notification.setBody(content);
  55. // notification.setClickType("url");
  56. // notification.setUrl("https://www.baidu.com");// 跳转地址
  57. */
  58. /** 不带跳转url*//*
  59. pushMessage.setTransmission(" {title:\"" + title + "\",content:\"" + content + "\",payload:\"自定义数据\"}");
  60. pushDTO.setPushMessage(pushMessage);
  61. // 设置接收人信息
  62. Audience audience = new Audience();
  63. pushDTO.setAudience(audience);
  64. audience.addCid(cid);
  65. // 进行cid单推
  66. ApiResult<Map<String, Map<String, String>>> apiResult = myPushApi.pushToSingleByCid(pushDTO);
  67. if (apiResult.isSuccess()) {
  68. // success
  69. System.out.println(apiResult.getData());
  70. } else {
  71. // failed
  72. System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
  73. }
  74. }
  75. */
  76. /**
  77. * 推送给多个
  78. *
  79. * @param cids 目标集
  80. * @param title 标题
  81. * @param content 内容
  82. *//*
  83. public void pushMsg(List<String> cids, String title, String content) {
  84. List<PushDTO<Audience>> list = new ArrayList<>(cids.size());
  85. cids.forEach(s -> {
  86. PushDTO<Audience> pushDTO = new PushDTO<>();
  87. // 唯一标识
  88. pushDTO.setRequestId(IdUtil.fastSimpleUUID());
  89. // 消息内容
  90. PushMessage pushMessage = new PushMessage();
  91. pushMessage.setNetworkType(0);
  92. // 透传消息内容
  93. pushMessage.setTransmission(" {title:\"" + title + "\",content:\"" + content + "\",payload:\"自定义数据\"}");
  94. pushDTO.setPushMessage(pushMessage);
  95. // 消息接受人
  96. Audience audience = new Audience();
  97. audience.addCid(s);
  98. pushDTO.setAudience(audience);
  99. list.add(pushDTO);
  100. });
  101. PushBatchDTO pushBatchDTO = new PushBatchDTO();
  102. pushBatchDTO.setAsync(true);
  103. pushBatchDTO.setMsgList(list);
  104. ApiResult<Map<String, Map<String, String>>> mapApiResult = myPushApi.pushBatchByCid(pushBatchDTO);
  105. if (mapApiResult.isSuccess()) {
  106. // success
  107. System.out.println(mapApiResult.getData());
  108. } else {
  109. // failed
  110. System.out.println("code:" + mapApiResult.getCode() + ", msg: " + mapApiResult.getMsg());
  111. }
  112. }
  113. */
  114. /**
  115. * 消息推送(离线推送)
  116. *
  117. * @param cid
  118. * @param title
  119. * @param content
  120. *//*
  121. public void pushMsgOffLine(String cid, String title, String content) {
  122. //b588d2a110c79b7591de409c17719ef2
  123. //根据cid进行单推
  124. PushDTO<Audience> pushDTO = new PushDTO<Audience>();
  125. // 设置推送参数
  126. // requestId需要每次变化唯一
  127. pushDTO.setRequestId(System.currentTimeMillis() + "");
  128. //配置推送条件
  129. // 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
  130. // 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
  131. // 3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
  132. // 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
  133. Strategy strategy = new Strategy();
  134. strategy.setDef(1);
  135. Settings settings = new Settings();
  136. settings.setStrategy(strategy);
  137. pushDTO.setSettings(settings);
  138. settings.setTtl(3600000);//消息有效期,走厂商消息需要设置该值
  139. //推送苹果离线通知标题内容
  140. Alert alert = new Alert();
  141. alert.setTitle(title);//苹果离线通知栏标题
  142. alert.setBody(content);//苹果离线通知栏内容
  143. Aps aps = new Aps();
  144. //1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。
  145. //苹果建议1小时最多推送3条静默消息
  146. aps.setContentAvailable(0);
  147. aps.setSound("default");
  148. aps.setAlert(alert);
  149. IosDTO iosDTO = new IosDTO();
  150. iosDTO.setAps(aps);
  151. iosDTO.setType("notify");
  152. PushChannel pushChannel = new PushChannel();
  153. pushChannel.setIos(iosDTO);
  154. //安卓离线厂商通道推送消息体
  155. PushChannel pushChannel1 = new PushChannel();
  156. AndroidDTO androidDTO = new AndroidDTO();
  157. Ups ups = new Ups();
  158. ThirdNotification notification1 = new ThirdNotification();
  159. ups.setNotification(notification1);
  160. notification1.setTitle(title);//安卓离线展示的标题
  161. notification1.setBody(content);//安卓离线展示的内容
  162. notification1.setClickType("intent");
  163. notification1.setIntent("intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end");
  164. //各厂商自有功能单项设置
  165. //ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry ");
  166. //ups.addOption("HW", "/message/android/notification/badge/add_num", 1);
  167. //ups.addOption("HW", "/message/android/notification/importance", "HIGH");
  168. //ups.addOption("VV","classification",1);
  169. androidDTO.setUps(ups);
  170. pushChannel1.setAndroid(androidDTO);
  171. pushDTO.setPushChannel(pushChannel1);
  172. // PushMessage在线走个推通道才会起作用的消息体
  173. PushMessage pushMessage = new PushMessage();
  174. pushDTO.setPushMessage(pushMessage);
  175. pushMessage.setTransmission(" {title:\"" + title + "\",content:\"" + content + "\",payload:\"自定义数据\"}");
  176. // 设置接收人信息
  177. Audience audience = new Audience();
  178. pushDTO.setAudience(audience);
  179. // cid
  180. audience.addCid(cid);
  181. // 进行cid单推
  182. ApiResult<Map<String, Map<String, String>>> apiResult = myPushApi.pushToSingleByCid(pushDTO);
  183. if (apiResult.isSuccess()) {
  184. // success
  185. System.out.println(apiResult.getData());
  186. } else {
  187. // failed
  188. System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
  189. }
  190. }
  191. }
  192. */