| | |
| | |
|
| | | import org.springframework.beans.factory.annotation.Autowired;
|
| | | import org.springframework.stereotype.Component;
|
| | | import org.yeshi.utils.HttpUtil;
|
| | |
|
| | | import com.google.gson.Gson;
|
| | | import com.yeshi.fanli.controller.admin.PushController;
|
| | | import com.yeshi.fanli.entity.system.System;
|
| | | import com.yeshi.fanli.dto.push.PushTypeEnum;
|
| | | import com.yeshi.fanli.entity.xinge.MessageInfo;
|
| | | import com.yeshi.fanli.entity.xinge.PushRecord;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.log.PushLogHelper;
|
| | | import com.yeshi.fanli.service.inter.config.SystemService;
|
| | | import com.yeshi.fanli.service.inter.config.BusinessSystemService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.factory.IOSPushFactory;
|
| | | import org.yeshi.utils.HttpUtil;
|
| | |
|
| | | import javapns.devices.Device;
|
| | | import javapns.devices.implementations.basic.BasicDevice;
|
| | |
| | | private static IOSPushUtil iosPushUtil;
|
| | |
|
| | | @Autowired
|
| | | private SystemService systemService;
|
| | | private BusinessSystemService businessSystemService;
|
| | |
|
| | | @PostConstruct
|
| | | public void init() {
|
| | | iosPushUtil = this;
|
| | | iosPushUtil.systemService = this.systemService;
|
| | | iosPushUtil.businessSystemService = this.businessSystemService;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | public static String allPushIOS(List<String> deviceTokenList, MessageInfo info, String url, int type)
|
| | | throws Exception {
|
| | |
|
| | | // if (Constant.IS_TEST)
|
| | | // return null;
|
| | |
|
| | | Gson gson = new Gson();
|
| | | PushLogHelper.iosInfo("IOS推送设备数为:" + deviceTokenList.size());
|
| | | PushLogHelper.iosInfo("IOS推送的内容为:" + gson.toJson(info));
|
| | |
| | | // json自定义传值
|
| | |
|
| | | JSONObject json = null;
|
| | | if (type == PushController.GOODS) {
|
| | | if (type == PushTypeEnum.goodsdetail.getCode()) {
|
| | | Long auctionId = null;
|
| | | if (url.contains("id=")) {
|
| | | String[] sts = url.split("\\?")[1].split("&");
|
| | |
| | | if (auctionId == null)
|
| | | throw new Exception("淘宝商品ID提取出错");
|
| | | json = IOSPushFactory.createGoodsPush(auctionId, info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.URL) {
|
| | | } else if (type == PushTypeEnum.url.getCode()) {
|
| | | String shortUrl = HttpUtil.getShortLink(url);
|
| | | if (StringUtil.isNullOrEmpty(shortUrl))
|
| | | throw new Exception("获取短链出错");
|
| | | json = IOSPushFactory.createURLPush(shortUrl, info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.ZNX) {
|
| | | } else if (type == PushTypeEnum.ZNX.getCode()) {
|
| | | json = IOSPushFactory.createZNXPush(info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.WEEX) {
|
| | | } else if (type == PushTypeEnum.weex.getCode()) {
|
| | | String shortUrl = HttpUtil.getShortLink(url);
|
| | | if (StringUtil.isNullOrEmpty(shortUrl))
|
| | | throw new Exception("获取短链出错");
|
| | | json = IOSPushFactory.createWEEXPush(shortUrl, info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.BAICHUAN) {
|
| | | String shortUrl = HttpUtil.getShortLink(url);
|
| | | if (StringUtil.isNullOrEmpty(shortUrl))
|
| | | throw new Exception("获取短链出错");
|
| | | } else if (type == PushTypeEnum.baichuan.getCode()) {
|
| | | String shortUrl = url;
|
| | | // HttpUtil.getShortLink(url);
|
| | | // if (StringUtil.isNullOrEmpty(shortUrl))
|
| | | // throw new Exception("获取短链出错");
|
| | | json = IOSPushFactory.createBaiChuanPush(shortUrl, info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.WELFARE_CENTER) {
|
| | | } else if (type == PushTypeEnum.welfare.getCode()) {
|
| | | json = IOSPushFactory.createWelfarePush(info.getTitle(), info.getContent());
|
| | | } else if (type == PushTypeEnum.signin.getCode()) {
|
| | | json = IOSPushFactory.createUserSignInPush(info.getTitle(), info.getContent());
|
| | | }
|
| | |
|
| | | // 分组推送 每50个设备为一组
|
| | |
|
| | | InputStream certificate = IOSPushUtil.class.getClassLoader()
|
| | |
| | | int end = start + pageSize;
|
| | | if (end > tokenList.size())
|
| | | end = tokenList.size();
|
| | | pushIOS(tokenList.subList(start, end), json,certificate,certificatePassword);
|
| | | pushIOS(tokenList.subList(start, end), json, certificate, certificatePassword);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | return null;
|
| | | }
|
| | |
|
| | | public static String pushIOS(List<String> deviceTokenList, JSONObject json,InputStream certificate,String certificatePWD) throws Exception {
|
| | | public static String pushIOS(List<String> deviceTokenList, JSONObject json, InputStream certificate,
|
| | | String certificatePWD) throws Exception {
|
| | | List<String> tokenList = new ArrayList<String>();
|
| | | for (String deviceToken : deviceTokenList) {
|
| | | tokenList.add(deviceToken);
|
| | |
| | | PushNotificationManager pushManager = new PushNotificationManager();
|
| | | // true:表示的是产品线上发布推送服务 false:表示的是产品测试推送服务
|
| | | if (Constant.IS_TEST)
|
| | | pushManager.initializeConnection(
|
| | | new AppleNotificationServerBasicImpl(certificate, certificatePWD, false));
|
| | | pushManager.initializeConnection(new AppleNotificationServerBasicImpl(certificate, certificatePWD, false));
|
| | | else
|
| | | pushManager
|
| | | .initializeConnection(new AppleNotificationServerBasicImpl(certificate, certificatePWD, true));
|
| | | pushManager.initializeConnection(new AppleNotificationServerBasicImpl(certificate, certificatePWD, true));
|
| | |
|
| | | List<Device> deviceList = new ArrayList<Device>();
|
| | | for (String token : tokenList) {
|
| | |
| | | InputStream certificate = IOSPushUtil.class.getClassLoader()
|
| | | .getResourceAsStream("certificate/pushCertificate.p12"); // 读取.p12文件
|
| | | String certificatePassword = Constant.systemCommonConfig.getIosPushCertificatePwd();
|
| | | pushIOS(tokenList, json,certificate,certificatePassword);
|
| | | pushIOS(tokenList, json, certificate, certificatePassword);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | |
|
| | | // json自定义传值
|
| | | JSONObject json = null;
|
| | | if (type == PushController.GOODS) {
|
| | | if (type == PushTypeEnum.goodsdetail.getCode()) {
|
| | | Long auctionId = null;
|
| | | if (url.contains("id=")) {
|
| | | String[] sts = url.split("\\?")[1].split("&");
|
| | |
| | | if (auctionId == null)
|
| | | throw new Exception("淘宝商品ID提取出错");
|
| | | json = IOSPushFactory.createGoodsPush(auctionId, info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.URL) {
|
| | | } else if (type == PushTypeEnum.url.getCode()) {
|
| | | String shortUrl = HttpUtil.getShortLink(url);
|
| | | if (StringUtil.isNullOrEmpty(shortUrl))
|
| | | throw new Exception("获取短链出错");
|
| | | json = IOSPushFactory.createURLPush(shortUrl, info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.ZNX) {
|
| | | } else if (type == PushTypeEnum.ZNX.getCode()) {
|
| | | json = IOSPushFactory.createZNXPush(info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.WEEX) {
|
| | | } else if (type == PushTypeEnum.weex.getCode()) {
|
| | | String shortUrl = HttpUtil.getShortLink(url);
|
| | | if (StringUtil.isNullOrEmpty(shortUrl))
|
| | | shortUrl = url;
|
| | | json = IOSPushFactory.createWEEXPush(shortUrl, info.getTitle(), info.getContent());
|
| | | } else if (type == PushController.BAICHUAN) {
|
| | | } else if (type == PushTypeEnum.baichuan.getCode()) {
|
| | | String shortUrl = HttpUtil.getShortLink(url);
|
| | | if (StringUtil.isNullOrEmpty(shortUrl))
|
| | | shortUrl = url;
|
| | | json = IOSPushFactory.createBaiChuanPush(shortUrl, info.getTitle(), info.getContent());
|
| | | } else if (type == PushTypeEnum.signin.getCode()) {
|
| | | json = IOSPushFactory.createUserSignInPush(info.getTitle(), info.getContent());
|
| | | }
|
| | |
|
| | | return json;
|