package com.zteits.pay.util; import java.util.HashMap; import java.util.Map; import cn.jpush.api.push.model.Options; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.zteits.pay.configuration.JPushConfigure; import com.zteits.pay.configuration.JPushPDAConfigure; import cn.jiguang.common.ClientConfig; import cn.jiguang.common.resp.APIConnectionException; import cn.jiguang.common.resp.APIRequestException; import cn.jpush.api.JPushClient; import cn.jpush.api.push.PushResult; import cn.jpush.api.push.model.Message; import cn.jpush.api.push.model.Platform; import cn.jpush.api.push.model.PushPayload; import cn.jpush.api.push.model.audience.Audience; import cn.jpush.api.push.model.notification.Notification; public class JPustUtil { private static final Logger log = LoggerFactory.getLogger(JPustUtil.class); private static JPushClient jpushClient = null; private static JPushClient pdaJpushClient = null; /** * 单个android用户推送消息 * @param title * @param msgContent * @param alias * @return */ public static PushResult sendaAndroidMessage(String title, String msgContent, String alias) { PushResult result = new PushResult(); try { result = getJpushClient().sendAndroidMessageWithAlias(title, msgContent, alias); } catch (Exception e) { log.debug(" 单个android用户推送消息 失败:"+e); } return result; } /** * PDA单个android用户推送消息 * @param title * @param msgContent * @param alias * @return * 2017年11月28日 zhaowg */ public static PushResult pdaSendPush(String title, String msgContent,String... alias) { PushResult result = new PushResult(); try { PushPayload payload = sendAndroidMessageWithAlias(title,msgContent,null,alias); result = getPdaJpushClient().sendPush(payload); } catch (Exception e) { e.printStackTrace(); log.debug(" 单个用户推送消息 失败:"+e); } return result; } /** * @author wangbiao * @date 2018/5/9 17:34 * @param alias, msgType, deivceType] * @return cn.jpush.api.push.PushResult */ public static PushResult sendPush(String msgContent, String alias,String msgType,Integer deivceType) { PushResult result = new PushResult(); try { alias = alias.replace("-", ""); PushPayload payload = buildPushObject_all_alias_alert(msgContent,alias,msgType,deivceType); result = getJpushClient().sendPush(payload); } catch (Exception e) { log.debug(" 单个用户推送消息 失败:"+e); } return result; } public static PushResult sendPush(String title, String msgContent, String contentType,String... alias) { PushResult result = new PushResult(); try { PushPayload payload = sendAndroidMessageWithAlias(title,msgContent,contentType,alias); result = getJpushClient().sendPush(payload); } catch (Exception e) { log.debug(" 单个用户推送消息 失败:"+e); } return result; } public static PushResult sendPushIos(String title, String msgContent, String contentType,String... alias) { PushResult result = new PushResult(); try { PushPayload payload = sendIosMessageWithAlias(title,msgContent,contentType,alias); result = getJpushClient().sendPush(payload); } catch (Exception e) { log.debug(" 单个用户推送消息 失败:"+e); } return result; } public static PushPayload buildPushObject_all_alias_alert(String msgContent,String alias,String msgType,Integer deivceType ) { Map extras = new HashMap(); extras.put("msgType", msgType); if(deivceType !=null && deivceType == 2){ log.info("IOS极光推送,alias:"+alias+",content:"+msgContent); return PushPayload.newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.alias(alias)) .setNotification(Notification.ios(msgContent, extras)) .setMessage(Message.newBuilder().setMsgContent(msgContent).addExtra("msgType", msgType).build()) .setOptions(Options.newBuilder().setApnsProduction(true).build()) .build(); }else{ log.info("Android极光推送,alias:"+alias+",content:"+msgContent); return PushPayload.newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.alias(alias)) // .setNotification(Notification.ios(alias, extras)) .setMessage(Message.newBuilder().setMsgContent(msgContent).addExtra("msgType", msgType).build()) .build(); } } public static PushPayload sendAndroidMessageWithAlias(String title, String msgContent, String contentType,String... alias) throws APIConnectionException, APIRequestException { return PushPayload.newBuilder() .setPlatform(Platform.android()) .setAudience(Audience.alias(alias)) .setMessage(Message.newBuilder() .setTitle(title) .setMsgContent(msgContent) .setContentType(contentType) .build()) .build(); } /** * 单个ios用户推送消息 * @param title * @param msgContent * @param alias * @return */ public static PushResult sendaIosMessage(String title, String msgContent, String alias) { PushResult result = new PushResult(); try { result = getJpushClient().sendIosMessageWithAlias(title, msgContent, alias); } catch (Exception e) { log.error("单个ios用户推送消息 失败:{}",e); } return result; } public static PushPayload sendIosMessageWithAlias(String title, String msgContent, String contentType,String... alias) throws APIConnectionException, APIRequestException { return PushPayload.newBuilder() .setPlatform(Platform.ios()) .setAudience(Audience.alias(alias)) .setMessage(Message.newBuilder() .setTitle(title) .setMsgContent(msgContent) .setContentType(contentType) .build()) .build(); } public static JPushClient getJpushClient() { if(jpushClient==null){ return new JPushClient(JPushConfigure.getMASTER_SECRET(), JPushConfigure.getAPP_KEY(), null, ClientConfig.getInstance()); } return jpushClient; } public static JPushClient getPdaJpushClient() { if(pdaJpushClient == null){ return new JPushClient(JPushPDAConfigure.getMASTER_SECRET(), JPushPDAConfigure.getAPP_KEY(), null, ClientConfig.getInstance()); } return pdaJpushClient; } }