jpush极光推送

jpush极光推送消息案例:

准备工作:

eclipse4.5 64位

jdk1.7 64位

所需jar:gson-2.2.4.jar,jiguang-common-0.1.4.jar,jpush-client-3.2.10.jar,json-lib-2.2.3-jdk13.jar,log4j-1.2.14.jar,slf4j-api-1.7.7.jar,slf4j-log4j12-1.7.7.jar

类PropertyUtil:资源属性工具类

package jpush;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * @class:PropertyUtil 
 *@descript:获得properties文件的值
 *@date:2016年10月26日 下午8:20:10
 *@author sanghaiqin
 *@version:V1.0
 */
public class PropertyUtil {
	/**
	 * @descript:加载资源文件
	 * @param resources  资源文件
	 * @return
	 * @throws FileNotFoundException
	 */
	private Properties loadProperties(String resources) {
		InputStream inputstream = null;
		Properties properties = new Properties();
		// 使用InputStream得到一个资源文件
		try {
			inputstream = new FileInputStream(resources);
			 // 加载配置文件
		     properties.load(inputstream);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(inputstream!=null){
				try {
					inputstream.close();
				} catch (IOException e) {
					e.printStackTrace();
				} 
		    }
		}
	   return properties;
	}
	
	/**
	 * @descript:读属性文件
	 * @return
	 * @throws FileNotFoundException
	 */
	public Properties readProperties(){
		String resources = PropertyUtil.class.getClassLoader().getResource("prop.properties").getPath();
		Properties properties = loadProperties(resources);
		return properties;
	}
	
	/**
	 * @descript:测试
	 * @param args
	 */
	public static void main(String[] args)  {
		PropertyUtil p=new PropertyUtil();
		Properties pro=p.readProperties();
		String mailSenderUsername=(String) pro.get("mail.sender.username");
		System.out.println("邮件发送者用户名:"+mailSenderUsername);//neo_lifes@163.com
		String path = PropertyUtil.class.getClassLoader().getResource("prop.properties").getPath();
		System.out.println(path);// /G:/Workspaces4.4/test/bin/prop.properties
	}
	
}


类JPushUtil:极光推送消息

package jpush;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import com.alibaba.fastjson.JSONObject;

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.Options;
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.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

/**
 * @class:JPushUtil 
 *@descript:极光推送
 *所需jar包:
 *gson-2.2.4.jar
 *jiguang-common-0.1.4.jar
 *jpush-client-3.2.10.jar
 *json-lib-2.2.3-jdk13.jar
 *log4j-1.2.14.jar
 *slf4j-api-1.7.7.jar
 *slf4j-log4j12-1.7.7.jar
 *备注:必须有log4j.properties否则测试看不到效果
 *@date:2016年10月28日 下午2:19:21
 *@author sanghaiqin
 *@version:V1.0
 */
public class JPushUtil {
    //资源属性工具类类
	private static PropertyUtil propertyUtil = new PropertyUtil();
	
	/**
	 * @descript:司机用户推送
	 * @param message 推送信息
	 * @param json  推送数据
	 * @param alias  多个参数,参数为string字符串或者string数组
	 * @return  int pushStatus=1推送成功pushStatus=0推送失败
	 */
	public static int jpushToDriverByAlias(String message,String json,String... alias) {
		//推送标识默认为1表示推送成功
		int pushStatus = 1;
		 try {
			//读取司机用户的资源文件
			Properties properties = propertyUtil.readProperties();
			//司机用户appkey和secret
		    JPushClient jpushClient = new JPushClient(properties.getProperty("jPush.driver.masterSecret"), properties.getProperty("jPush.driver.appkey"));
            //推送信息
		    PushPayload payload = buildPushObject_ios_audienceMore_messageWithExtras(message,json,alias);
			//发送推送信息
		    PushResult result = jpushClient.sendPush(payload);
			//推送结果
		    pushStatus = result.getResponseCode()==200?1:0;
		}  catch (APIConnectionException e) {
			pushStatus= 0;
			e.printStackTrace();
		} catch (APIRequestException e) {
			pushStatus= 0;
			e.printStackTrace();
		}
		 return pushStatus;
	}
	
	/**
	 * @descript:门店用户推送
	 * @param message  推送信息
	 * @param json  推送数据
	 * @param alias  alias  多个参数,参数为string字符串或者string数组
	 * @return  int pushStatus=1推送成功pushStatus=0推送失败
	 */
	public static int jpushToStoreByAlias(String message,String json,String... alias){
		//推送标识默认为1表示推送成功
		int pushStatus = 1;
		 try {
			//读取门店用户的资源文件
			Properties properties = propertyUtil.readProperties();
			//门店用户appkey和secret
		    JPushClient jpushClient = new JPushClient(properties.getProperty("jPush.store.masterSecret"), properties.getProperty("jPush.store.appkey"));
            //推送信息
		    PushPayload payload = buildPushObject_ios_audienceMore_messageWithExtras(message,json,alias);
			//发送推送信息
		    PushResult result = jpushClient.sendPush(payload);
			//推送结果
		    pushStatus = result.getResponseCode()==200?1:0;
		}  catch (APIConnectionException e) {
			pushStatus= 0;
			e.printStackTrace();
		} catch (APIRequestException e) {
			pushStatus= 0;
			e.printStackTrace();
		}
		 return pushStatus;
	}
	
	/**
	 * @descript:推送所有司机信息
	 * @param message  推送信息
	 * @param json  推送数据
	 * @return  int pushStatus=1推送成功pushStatus=0推送失败
	 */
	public static int jpushAllDriver(String message,String json){
		//推送标识默认为1表示推送成功
		int pushStatus = 1;
		try {
			//读取司机用户的资源文件
			Properties properties = propertyUtil.readProperties();
			//司机用户appkey和secret
			JPushClient jpushClient = new JPushClient(properties.getProperty("jPush.driver.masterSecret"), properties.getProperty("jPush.driver.appkey"));
			//推送信息
			PushPayload payload = buildPushObject_all_alias_alert(message,json);
			//发送推送信息
			PushResult result = jpushClient.sendPush(payload);
			//推送结果
			pushStatus = result.getResponseCode()==200?1:0;
		} catch (APIConnectionException e) {
			pushStatus = 0;
			e.printStackTrace();
		} catch (APIRequestException e) {
			pushStatus = 0;
			e.printStackTrace();
		}
		return pushStatus;
	}
	
	/**
	 * @descript:推送所有门店用户信息
	 * @param message  推送信息
	 * @param json   推送数据
	 * @return  int pushStatus=1推送成功pushStatus=0推送失败
	 */
	public static int jpushAllStore(String message,String json) {
		推送标识默认为1表示推送成功
		int pushStatus = 1;
		try {
			//读取门店用户的资源文件
			Properties properties = propertyUtil.readProperties();
			//门店用户appkey和secret
			JPushClient jpushClient = new JPushClient(properties.getProperty("jPush.store.masterSecret"), properties.getProperty("jPush.store.appkey"));
			//推送信息
			PushPayload payload = buildPushObject_all_alias_alert(message,json);
			//发送推送信息
			PushResult result = jpushClient.sendPush(payload);
			//推送结果
			pushStatus = result.getResponseCode()==200?1:0;
		} catch (APIConnectionException e) {
			pushStatus = 0;
			e.printStackTrace();
		} catch (APIRequestException e) {
			pushStatus = 0;
			e.printStackTrace();
		}
		return pushStatus;
	}
	
	/**
	 * @descript:极光推送封装数据
	 * @param message
	 * @param json
	 * @param alias
	 * @return
	 */
	 public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras(String message,String json, String... alias) {
		  return PushPayload.newBuilder()
				  .setPlatform(Platform.all())//指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
				  .setAudience(Audience.alias(alias))//指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应用客户端调用接口获取到的registration id
				  .setNotification(Notification.newBuilder()//jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
				  .addPlatformNotification(AndroidNotification.newBuilder()//指定当前推送的android通知
				  .setAlert(message)
				  .addExtra("json", json)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
				  .build())
				  .addPlatformNotification(IosNotification.newBuilder()//指定当前推送的iOS通知
				  .setAlert(message)
				  .addExtra("json", json)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
				  .setContentAvailable(true)//此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
				  .build()).build())
				  .setOptions(Options.newBuilder()
				  .setApnsProduction(false)//此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
				  .build())
				  .build();
	   }
	   
	 /**
	  * @descript:极光推送封装数据
	  * @param message
	  * @param json
	  * @return
	  */
	   public static PushPayload buildPushObject_all_alias_alert(String message,String json) {
			  return PushPayload.newBuilder()
					  .setPlatform(Platform.all())//指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
					  .setAudience(Audience.all())//指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应用客户端调用接口获取到的registration id
					  .setNotification(Notification.newBuilder()//jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
					  .addPlatformNotification(AndroidNotification.newBuilder()//指定当前推送的android通知
					  .setAlert(message)
					  .addExtra("json", json)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
					  .build())
					  .addPlatformNotification(IosNotification.newBuilder()//指定当前推送的iOS通知
					  .setAlert(message)
					  .addExtra("json", json)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
					  .setContentAvailable(true)//此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
					  .build()).build())
					  .setOptions(Options.newBuilder()
					  .setApnsProduction(false)//此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
					  .build())
					  .build();
		}
	  
	  /**
	   * @descript:
	   * @param args
	   */
	   public static void main(String[] args)  {
		   //测试1司机用户userId=713
		  /* String message="亲,你的订单已经被处理,请及时查看!";
		   Map<String, Object> map=new HashMap<String, Object>();
		   map.put("司机1", "司机1买了篮球");
		   map.put("司机2", "司机2中了500万");
		   JSONObject jsonObject =(JSONObject) JSONObject.toJSON(map);	
		   String driveId="713";
		   jpushToDriverByAlias(message, jsonObject.toJSONString(),driveId);*/
		   
		   //测试2司机用户userId=713
		   //jpushAllDriver("我是jpush测试机","713");
		   
		   //测试1门店用户userId=522
		   /*String message2="亲,您有新的订单,请及时处理!";
		   Map<String, Object> map2=new HashMap<String, Object>();
		   map2.put("门店1", "门店1买了篮球");
		   map2.put("门店2", "门店2中了500万");
		   String storeId="188";
		   JSONObject jsonObject2 =(JSONObject) JSONObject.toJSON(map2);	
		   jpushToStoreByAlias(message2,jsonObject2.toJSONString(),storeId);*/
		  
		   //测试2门店用户
		   jpushAllStore("门店用户推送订单","188");
		  
	   }
	  
	  
}


资源文件log4j.properties

log4j.rootLogger=debug, stdout, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t]  ***** %5p ****** %c{1}:%L ***** - %m%n

log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.File = log/sysMng.log
log4j.appender.file.MaxFileSize=5MB
# Keep one backup file
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout.ConversionPattern=%d [%t]  %5p %c{1}:%L - %m%n

资源文件pro.properties

#-------------------极光推送功能------------------
#司机用户appkey和secret
jPush.driver.appkey=870893abd9a89ec5a97f9efc
jPush.driver.masterSecret =647736f15583e8fbfae6b22a
#门店用户appkey和secret
jPush.store.appkey=951800c747a694bc0fc39115
jPush.store.masterSecret =cd260922eea73ecbaa80a22d

测试截图:
测试1司机用户userId=713


测试2司机用户userId=713



测试1门店用户userId=522



测试2门店用户


项目结构截图:








相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页