package com.ks.push.utils; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.ks.push.pojo.DO.BPushMessage; import com.ks.push.pojo.DO.PushPlatform; import com.ks.push.utils.push.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.yeshi.utils.StringUtil; import org.yeshi.utils.push.entity.PushAppInfo; import org.yeshi.utils.push.entity.PushMessage; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class PushUtil { static Logger logger = LoggerFactory.getLogger(PushUtil.class); /** * 推送通知 * * @param platform * @param appInfo * @param pushMessage * @param tokenList * @throws Exception */ public static void pushNotifyCation(PushPlatform platform, PushAppInfo appInfo, BPushMessage pushMessage, String identifyCode, List tokenList) throws Exception { if (appInfo == null) { throw new Exception("应用参数为空"); } if (pushMessage == null) { throw new Exception("消息为空"); } if (tokenList == null || tokenList.size() == 0) { throw new Exception("token为空"); } logger.info("{}推送应用信息:{}", platform.name(), new Gson().toJson(appInfo)); logger.info("{}推送内容信息:{}", platform.name(), new Gson().toJson(pushMessage)); logger.info("{}推送token信息:{}", platform.name(), new Gson().toJson(tokenList)); Map extras = null; if (pushMessage.getExtras() != null) { extras = new HashMap<>(); for (Iterator its = pushMessage.getExtras().keySet().iterator(); its.hasNext(); ) { String key = its.next(); String value = pushMessage.getExtras().get(key); if (!StringUtil.isNullOrEmpty(key) && !StringUtil.isNullOrEmpty(value)) { extras.put(key, value); } } } PushMessage message = new PushMessage(pushMessage.getTitle(), pushMessage.getContent(), pushMessage.getAndroidActivity(), pushMessage.getAndroidActivityScheme(), pushMessage.getAndroidHostPath(), extras); if (platform == PushPlatform.xm) { pushXM(appInfo, message, tokenList); } else if (platform == PushPlatform.hw) { pushHW(appInfo, message, identifyCode, tokenList); } else if (platform == PushPlatform.oppo) { pushOPPO(appInfo, message, tokenList); } else if (platform == PushPlatform.vivo) { pushVIVO(appInfo, message, tokenList); } else if (platform == PushPlatform.mz) { pushMZ(appInfo, message, tokenList); } else if (platform == PushPlatform.jpush) { pushJPush(appInfo, message, tokenList,!pushMessage.isMessage()); } } /** * 小米推送 * * @param appInfo * @param message * @param tokenList * @throws Exception */ private static void pushXM(PushAppInfo appInfo, PushMessage message, List tokenList) throws Exception { XiaoMiPushUtil.pushNotificationByRegIds(appInfo, message, tokenList); } /** * 华为推送 * * @param appInfo * @param message * @param bigTag * @param tokenList * @throws Exception */ private static void pushHW(PushAppInfo appInfo, PushMessage message, String bigTag, List tokenList) throws Exception { HuaWeiPushUtil.pushNotificationByTokens(appInfo, message, bigTag, tokenList); } /** * OPPO推送 * * @param appInfo * @param message * @param tokenList * @throws Exception */ private static void pushOPPO(PushAppInfo appInfo, PushMessage message, List tokenList) throws Exception { OppoPushUtil.pushNotificationByRegIds(appInfo, message, tokenList); } /** * VIVO推送 * * @param appInfo * @param message * @param tokenList * @throws Exception */ private static void pushVIVO(PushAppInfo appInfo, PushMessage message, List tokenList) throws Exception { VIVOPushUtil.pushNotificationByRegIds(appInfo, message, tokenList); } /** * 魅族推送 * * @param appInfo * @param message * @param tokenList * @throws Exception */ private static void pushMZ(PushAppInfo appInfo, PushMessage message, List tokenList) throws Exception { MeiZuPushUtil.pushNotificationByPushId(appInfo, message, tokenList); } /** * 极光推送 * * @param appInfo * @param message * @param tokenList * @throws Exception */ private static void pushJPush(PushAppInfo appInfo, PushMessage message, List tokenList, boolean alert) throws Exception { if (alert) { JpushUtil.pushNotification(appInfo, message, tokenList, null); } else { JSONObject data = new JSONObject(); if (message.getActivityParams() != null) { for (Iterator its = message.getActivityParams().keySet().iterator(); its.hasNext(); ) { String key = its.next(); data.put(key, message.getActivityParams().get(key)); } } JpushUtil.pushMessage(appInfo, data, tokenList, null); } } }