From 441439d49219311bc7a76c0705a970c3b2486bc8 Mon Sep 17 00:00:00 2001 From: "yan.y" Date: Fri, 10 Jan 2025 20:29:06 +0800 Subject: [PATCH] update --- pom.xml | 30 +++ .../user/entity/TblAliyunDeviceInfo.java | 5 + .../com/ifish7/mq/push/AliyunPushApi.java | 181 +++++++++++++----- src/main/resources/push.properties | 4 +- 4 files changed, 169 insertions(+), 51 deletions(-) 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