JPustUtil.java 6.37 KB
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<String, String> extras = new HashMap<String, String>();
		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;
	}

}