diff --git a/pom.xml b/pom.xml
index 6f28712..4c14c71 100644
--- a/pom.xml
+++ b/pom.xml
@@ -233,6 +233,36 @@
${fastjson.version}
+
+ com.gexin.platform
+ gexin-rp-fastjson
+ 1.0.0.7
+
+
+
+ com.google.protobuf
+ protobuf-java
+ 2.5.0
+
+
+
+ com.gexin.platform
+ gexin-rp-sdk-base
+ 4.0.0.37
+
+
+
+ com.gexin.platform
+ gexin-rp-sdk-http
+ 4.1.1.4
+
+
+
+ com.gexin.platform
+ gexin-rp-sdk-template
+ 4.0.0.29
+
+
diff --git a/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java b/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java
index 4117258..6137845 100644
--- a/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java
+++ b/src/main/java/com/ifish7/mq/business/user/entity/TblAliyunDeviceInfo.java
@@ -29,6 +29,11 @@ public class TblAliyunDeviceInfo {
*/
private Integer userId;
+ /**
+ * 类型 0默认 1个推
+ */
+ private Integer type;
+
/**
* 手机类型
*/
diff --git a/src/main/java/com/ifish7/mq/push/AliyunPushApi.java b/src/main/java/com/ifish7/mq/push/AliyunPushApi.java
index dfc6067..568f062 100644
--- a/src/main/java/com/ifish7/mq/push/AliyunPushApi.java
+++ b/src/main/java/com/ifish7/mq/push/AliyunPushApi.java
@@ -9,24 +9,27 @@ import com.aliyuncs.push.model.v20160801.PushRequest;
import com.aliyuncs.push.model.v20160801.PushResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gexin.rp.sdk.base.IPushResult;
+import com.gexin.rp.sdk.base.impl.SingleMessage;
+import com.gexin.rp.sdk.base.impl.Target;
+import com.gexin.rp.sdk.base.notify.Notify;
+import com.gexin.rp.sdk.dto.GtReq;
+import com.gexin.rp.sdk.http.IGtPush;
+import com.gexin.rp.sdk.template.NotificationTemplate;
+import com.gexin.rp.sdk.template.TransmissionTemplate;
+import com.gexin.rp.sdk.template.style.Style0;
import com.ifish7.mq.business.user.entity.TblAliyunDeviceInfo;
import com.ifish7.mq.business.user.entity.TblPushList;
import com.ifish7.mq.business.user.service.ITblAliyunDeviceInfoService;
import com.ifish7.mq.business.user.service.ITblPushListService;
import lombok.extern.log4j.Log4j;
-import org.apache.http.HttpResponse;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.security.MessageDigest;
-import java.util.*;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
/**
* @author: yan.y
@@ -36,7 +39,10 @@ import java.util.*;
@Log4j
public class AliyunPushApi {
- private DefaultAcsClient client;
+ private final DefaultAcsClient client;
+
+ private final IGtPush iGtPush = new IGtPush(HOST_HTTPS, "099ng3u5ud5pVGqsH0GlK", "w3yLh3Ng4j5JYqGYH7C7o9");
+
public AliyunPushApi(String regionId,String accessKeyId,String accessKeySecret){
client = new DefaultAcsClient(DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret));
@@ -47,12 +53,23 @@ public class AliyunPushApi {
//推送类型
private static final String PUSH_TYPE = "NOTICE";
+ private static final String HOST_HTTPS = "https://api.getui.com/apiex.htm";
+
@Value("${android_app_key}")
private String androidAppKey;
@Value("${ios_app_key}")
private String iosAppKey;
+ @Value("${gtAppId}")
+ private String gtAppId;
+
+ @Value("${gtAppKey}")
+ private String gtAppKey;
+
+ @Value("${gtMasterSecret}")
+ private String gtMasterSecret;
+
@Autowired
private PushRequest pushRequest;
@@ -79,47 +96,10 @@ public class AliyunPushApi {
}
List pushUserDevices = aliyunDeviceInfoService.list(allQuary);
pushUserDevices.forEach(aliyunDeviceInfo -> {
- if ("iOS".equals(aliyunDeviceInfo.getPhoneType())) {
- pushRequest.setAppKey(Long.parseLong(iosAppKey));
+ if (aliyunDeviceInfo.getType() == 1) {
+ gtPush(pushList, aliyunDeviceInfo);
} else {
- pushRequest.setAppKey(Long.parseLong(androidAppKey));
- pushRequest.setAndroidNotificationChannel("1");
- }
- //推送目标:
- //DEVICE:根据设备推送
- //ACCOUNT:根据账号推送
- //ALIAS:根据别名推送
- //TAG:根据标签推送
- //ALL:推送给全部设备
- pushRequest.setTarget(TARGET_TYPE);
- //响应数据
- pushRequest.setAcceptFormat(FormatType.JSON);
- pushRequest.setTargetValue(aliyunDeviceInfo.getAliyunDeviceId());
- //推送类型
- pushRequest.setPushType(PUSH_TYPE);
- //推送设备类型
- pushRequest.setDeviceType(aliyunDeviceInfo.getPhoneType());
- // 消息的标题
- pushRequest.setTitle(pushList.getPushTitle());
- // 消息的内容
- pushRequest.setBody(pushList.getPushContext());
- // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
- pushRequest.setStoreOffline(true);
-
- //android通知设置
- pushRequest.setAndroidOpenType("APPLICATION");
- pushRequest.setAndroidNotifyType("BOTH");
- pushRequest.setAndroidPopupActivity("PopupPushActivity");
- pushRequest.setAndroidPopupTitle(pushList.getPushTitle());
- pushRequest.setAndroidPopupBody(pushList.getPushContext());
- pushRequest.setAndroidRemind(true);
-
- try {
- PushResponse response = client.getAcsResponse(pushRequest);
- pushList.setReportId(response.getMessageId());
- pushList.setDeviceId((pushList.getDeviceId() == null || pushList.getDeviceId() == 0)? null : pushList.getDeviceId());
- } catch (ClientException e) {
- log.error(e.getMessage(),e);
+ aliyunPush(pushList, aliyunDeviceInfo);
}
});
//未读
@@ -129,6 +109,107 @@ public class AliyunPushApi {
//sendMsg(String.valueOf(pushList.getUserId()),pushList.getPushContext());
}
+ private void aliyunPush(TblPushList pushList, TblAliyunDeviceInfo aliyunDeviceInfo) {
+ if ("iOS".equals(aliyunDeviceInfo.getPhoneType())) {
+ pushRequest.setAppKey(Long.parseLong(iosAppKey));
+ } else {
+ pushRequest.setAppKey(Long.parseLong(androidAppKey));
+ pushRequest.setAndroidNotificationChannel("1");
+ }
+ //推送目标:
+ //DEVICE:根据设备推送
+ //ACCOUNT:根据账号推送
+ //ALIAS:根据别名推送
+ //TAG:根据标签推送
+ //ALL:推送给全部设备
+ pushRequest.setTarget(TARGET_TYPE);
+ //响应数据
+ pushRequest.setAcceptFormat(FormatType.JSON);
+ pushRequest.setTargetValue(aliyunDeviceInfo.getAliyunDeviceId());
+ //推送类型
+ pushRequest.setPushType(PUSH_TYPE);
+ //推送设备类型
+ pushRequest.setDeviceType(aliyunDeviceInfo.getPhoneType());
+ // 消息的标题
+ pushRequest.setTitle(pushList.getPushTitle());
+ // 消息的内容
+ pushRequest.setBody(pushList.getPushContext());
+ // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
+ pushRequest.setStoreOffline(true);
+
+ //android通知设置
+ pushRequest.setAndroidOpenType("APPLICATION");
+ pushRequest.setAndroidNotifyType("BOTH");
+ pushRequest.setAndroidPopupActivity("PopupPushActivity");
+ pushRequest.setAndroidPopupTitle(pushList.getPushTitle());
+ pushRequest.setAndroidPopupBody(pushList.getPushContext());
+ pushRequest.setAndroidRemind(true);
+
+ try {
+ PushResponse response = client.getAcsResponse(pushRequest);
+ pushList.setReportId(response.getMessageId());
+ pushList.setDeviceId((pushList.getDeviceId() == null || pushList.getDeviceId() == 0)? null : pushList.getDeviceId());
+ } catch (ClientException e) {
+ log.error(e.getMessage(),e);
+ }
+ }
+
+ private void gtPush(TblPushList pushList, TblAliyunDeviceInfo aliyunDeviceInfo) {
+ SingleMessage singleMessage = new SingleMessage();
+ Notify notify = new Notify();
+ notify.setTitle(pushList.getPushTitle());
+ notify.setContent(pushList.getPushContext());
+ notify.addExtKVToAll("/android/notification/importance","NORMAL");
+ notify.addXMExtKV("/extra.channel_id", "131247");
+
+ TransmissionTemplate transmissionTemplate = new TransmissionTemplate();
+ transmissionTemplate.setTransmissionType(2); // 透传消息接受方式设置:1:立即启动APP 2:客户端收到消息后需要自行处理
+
+ transmissionTemplate.setAppId(gtAppId);
+ transmissionTemplate.setAppkey(gtAppKey);
+ transmissionTemplate.set3rdNotifyInfo(notify);
+ singleMessage.setData(transmissionTemplate);
+ singleMessage.setOffline(true);
+ singleMessage.setOfflineExpireTime(72 * 3600000L);
+ Target target = new Target();
+ target.setAppId(gtAppId);
+ target.setClientId(aliyunDeviceInfo.getAliyunDeviceId());
+ IPushResult pushResult = iGtPush.pushMessageToSingle(singleMessage, target);
+ Map response = pushResult.getResponse();
+ log.info("gtPush request : " + JSONObject.toJSONString(singleMessage) + " , response : " + JSONObject.toJSONString(response));
+ }
+
+
+ public static void main(String[] args) {
+ //8cfcfe16d96ef9345391de475bb5297d
+ SingleMessage singleMessage = new SingleMessage();
+ Style0 style = new Style0();
+ // 设置通知栏标题与内容
+ style.setTitle("测试推送-11111");
+ style.setText("测试推送-11111");
+ // 设置通知是否响铃,震动,或者可清除
+ style.setRing(true);
+ style.setVibrate(true);
+ style.setClearable(true);
+ NotificationTemplate notificationTemplate = new NotificationTemplate();
+ notificationTemplate.setAppId("C2ZpsHzexi5UKuUKyW0Ig");
+ notificationTemplate.setAppkey("099ng3u5ud5pVGqsH0GlK");
+ notificationTemplate.setStyle(style);
+
+ singleMessage.setData(notificationTemplate);
+ singleMessage.setOffline(true);
+ singleMessage.setOfflineExpireTime(72 * 3600000L);
+ Target target = new Target();
+ target.setAppId("C2ZpsHzexi5UKuUKyW0Ig");
+ target.setClientId("fc8c87fa41da480fb769fbdae92c4cd2");
+ IGtPush iGtPush = new IGtPush(HOST_HTTPS, "099ng3u5ud5pVGqsH0GlK", "w3yLh3Ng4j5JYqGYH7C7o9");
+ IPushResult pushResult = iGtPush.pushMessageToSingle(singleMessage, target);
+ System.out.println(JSONObject.toJSONString(pushResult));
+ Map response = pushResult.getResponse();
+ System.out.println(response);
+ }
+
+
/**
* 发送普通消息 (已废弃 网易云信)
* @param userId
diff --git a/src/main/resources/push.properties b/src/main/resources/push.properties
index 0c971fd..1ff0097 100644
--- a/src/main/resources/push.properties
+++ b/src/main/resources/push.properties
@@ -24,4 +24,6 @@ version = 2016-08-01
# \u53D1\u9001\u7684tag, tag\u8868\u8FBE\u5F0F\u53C2\u8003\u6587\u6863:https://help.aliyun.com/document_detail/48055.html?
#tag =
#tagExpression =
-
+gtAppId=C2ZpsHzexi5UKuUKyW0Ig
+gtAppKey=099ng3u5ud5pVGqsH0GlK
+gtMasterSecret=w3yLh3Ng4j5JYqGYH7C7o9
\ No newline at end of file