|
@@ -0,0 +1,140 @@
|
|
|
+package com.iotechn.unimall.biz.utils;
|
|
|
+
|
|
|
+import com.getui.push.v2.sdk.ApiHelper;
|
|
|
+import com.getui.push.v2.sdk.GtApiConfiguration;
|
|
|
+import com.getui.push.v2.sdk.api.PushApi;
|
|
|
+import com.getui.push.v2.sdk.common.ApiResult;
|
|
|
+import com.getui.push.v2.sdk.dto.req.Audience;
|
|
|
+import com.getui.push.v2.sdk.dto.req.Settings;
|
|
|
+import com.getui.push.v2.sdk.dto.req.Strategy;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.PushChannel;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.PushDTO;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.PushMessage;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.android.ThirdNotification;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.android.Ups;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
|
|
|
+import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
|
|
|
+import com.iotechn.unimall.data.domain.UserDO;
|
|
|
+import com.iotechn.unimall.data.mapper.UserMapper;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author:chengchangjiang
|
|
|
+ * @Description:
|
|
|
+ * @Date:Created in 9:38 2021-06-03
|
|
|
+ */
|
|
|
+
|
|
|
+@Component
|
|
|
+public class GeTuiUtils {
|
|
|
+ @Autowired
|
|
|
+ private UserMapper userMapper;
|
|
|
+ private static String appId = "q2frjgRYqt7RuC9Vjj6Va9";
|
|
|
+ private static String appKey = "L0gnzFQa2O8aFW15lPRzh2";
|
|
|
+ private static String masterSecret = "NhuCKHZJhp877ofHWtlQWA";
|
|
|
+ PushApi pushApi = null;
|
|
|
+
|
|
|
+ //别名推送方式
|
|
|
+ static String host = "http://sdk.open.api.igexin.com/apiex.htm";
|
|
|
+
|
|
|
+ public GeTuiUtils(){
|
|
|
+ GtApiConfiguration apiConfiguration = new GtApiConfiguration();
|
|
|
+ //填写应用配置
|
|
|
+ apiConfiguration.setAppId(appId);
|
|
|
+ apiConfiguration.setAppKey(appKey);
|
|
|
+ apiConfiguration.setMasterSecret(masterSecret);
|
|
|
+ // 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀, 可不填写appId
|
|
|
+ apiConfiguration.setDomain("https://restapi.getui.com/v2/");
|
|
|
+ // 实例化ApiHelper对象,用于创建接口对象
|
|
|
+ ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
|
|
|
+ // 创建对象,建议复用。目前有PushApi、StatisticApi、UserApi
|
|
|
+ pushApi = apiHelper.creatApi(PushApi.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void pushByCid(String title,String content,Long userId){
|
|
|
+ try{
|
|
|
+ UserDO userDO = userMapper.selectById(userId);
|
|
|
+ String cid = userDO.getCid();
|
|
|
+ //根据cid进行单推
|
|
|
+ PushDTO<Audience> pushDTO = new PushDTO<Audience>();
|
|
|
+ // 设置推送参数
|
|
|
+ pushDTO.setRequestId(System.currentTimeMillis() + "");//requestid需要每次变化唯一
|
|
|
+ //配置推送条件
|
|
|
+ // 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
|
|
|
+ // 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
|
|
|
+ // 3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
|
|
|
+ // 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
|
|
|
+ Strategy strategy=new Strategy();
|
|
|
+ strategy.setDef(1);
|
|
|
+ Settings settings=new Settings();
|
|
|
+ settings.setStrategy(strategy);
|
|
|
+ pushDTO.setSettings(settings);
|
|
|
+ settings.setTtl(3600000);//消息有效期,走厂商消息需要设置该值
|
|
|
+ //推送苹果离线通知标题内容
|
|
|
+ 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.setAps(aps);
|
|
|
+ iosDTO.setType("notify");
|
|
|
+ PushChannel pushChannel = new PushChannel();
|
|
|
+ pushChannel.setIos(iosDTO);
|
|
|
+ //安卓离线厂商通道推送消息体
|
|
|
+// PushChannel pushChannel = new PushChannel();
|
|
|
+ AndroidDTO androidDTO = new AndroidDTO();
|
|
|
+ Ups ups = new Ups();
|
|
|
+ ThirdNotification notification1 = new ThirdNotification();;
|
|
|
+ ups.setNotification(notification1);
|
|
|
+ notification1.setTitle(title);
|
|
|
+ notification1.setBody(content);
|
|
|
+ notification1.setClickType("intent");
|
|
|
+ notification1.setIntent("intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;component=uni.UNI7297DA2/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title="+title+";S.content="+content+";S.payload=test;end");
|
|
|
+ //各厂商自有功能单项设置
|
|
|
+ //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);
|
|
|
+ androidDTO.setUps(ups);
|
|
|
+ pushChannel.setAndroid(androidDTO);
|
|
|
+ pushDTO.setPushChannel(pushChannel);
|
|
|
+
|
|
|
+ // PushMessage在线走个推通道才会起作用的消息体
|
|
|
+ PushMessage pushMessage = new PushMessage();
|
|
|
+ pushDTO.setPushMessage(pushMessage);
|
|
|
+ pushMessage.setTransmission(" {title:\""+title+"\",content:\""+content+"\",payload:\"test\"}");
|
|
|
+// pushMessage.setTransmission(" {title:\"标题\",content:\"内容\",payload:\"自定义数据\"}");
|
|
|
+ // 设置接收人信息
|
|
|
+ Audience audience = new Audience();
|
|
|
+ pushDTO.setAudience(audience);
|
|
|
+ audience.addCid(cid);
|
|
|
+
|
|
|
+ // 进行cid单推
|
|
|
+ ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
|
|
|
+ if (apiResult.isSuccess()) {
|
|
|
+ // success
|
|
|
+ System.out.println(apiResult.getData());
|
|
|
+ } else {
|
|
|
+ // failed
|
|
|
+ System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e){
|
|
|
+ System.out.println("推送异常:" + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|