首页 > 学院 > 开发设计 > 正文

利用javapns对IOS进行推送

2019-11-14 20:39:37
字体:
来源:转载
供稿:网友

start

package com.jynine.javapns;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.PRoperties;import javapns.Push;import javapns.communication.exceptions.CommunicationException;import javapns.communication.exceptions.KeystoreException;import javapns.devices.Device;import javapns.devices.Devices;import javapns.notification.PayloadPerDevice;import javapns.notification.PushNotificationPayload;import javapns.notification.transmission.PushQueue;import org.apache.commons.lang.StringUtils;import org.json.JSONException;public class IosPushUtil {	public static String keystore = null; 	public static String passWord = null; 	public static String host = null;	public static Boolean production = true;//true:production false: sandbox 	public static final int numberOfThreads = 8;	static{		Properties propertie = new Properties();		InputStream inputStream;				try {			inputStream = IosPushUtil.class.getClassLoader()					.getResourceAsStream("push.properties");			propertie.load(inputStream);			keystore = propertie.getProperty("certificatePath");			password = propertie.getProperty("certificatePassword","123456");			host = propertie.getProperty("host","gateway.push.apple.com");			production = Boolean.valueOf(propertie.getProperty("production", "true"));			inputStream.close();		} catch (FileNotFoundException ex) {			ex.printStackTrace();		} catch (IOException ex) {			ex.printStackTrace();		}	}	public static void main(String[] args) throws Exception {		//pushMsgNotification("hello!!!2", true, "iostoken");	//	pushBadgeNotification(1,  "iostoken");		String[] devs= new String[10000];		for (int i = 0; i < devs.length; i++) {		devs[i] = "iostoken";		}		List<Device> devices=Devices.asDevices(devs);		System.out.println(devices.size());		//pushPayLoadByThread(devices, "Hello 2222222", 1, null, null);		//pushPayloadDevicePairs(devices, "Hello 111111111", 1, null, null);		//pushPayloadDevicePairs(devices, "Hello +++", 1, null, null);		queue(devices,"Hello 2222222", 1, null, null);	}	/**	 * 推送一个简单消息	 * @param msg 消息	 * @param devices 设备	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void pushMsgNotification(String msg,Object devices) throws CommunicationException, KeystoreException{		Push.alert(msg, keystore, password, production, devices);	}	/**	 * 推送一个标记	 * @param badge 标记	 * @param devices 设备	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void pushBadgeNotification(int badge,Object devices) throws CommunicationException, KeystoreException{		Push.badge(badge, keystore, password, production, devices);	}	/**	 * 推送一个语音	 * @param sound 语音	 * @param devices 设备	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void pushSoundNotification(String sound,Object devices) throws CommunicationException, KeystoreException{		Push.sound(sound, keystore, password, production, devices);	}	/**	 * 推送一个alert+badge+sound通知	 * @param message 消息	 * @param badge 标记	 * @param sound 声音	 * @param devices 设备	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void pushCombinedNotification(String message,int badge,String sound,Object devices) throws CommunicationException, KeystoreException{		Push.combined(message, badge, sound, keystore, password, production, devices);	}	/**	 * 通知Apple的杂志内容	 * @param devices 设备	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void contentAvailable(Object devices) throws CommunicationException, KeystoreException{		Push.contentAvailable(keystore, password, production, devices);	}	/**	 * 推送有用的调试信息	 * @param devices 设备	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void test(Object devices) throws CommunicationException, KeystoreException{		Push.test(keystore, password, production, devices);	}	/**	 * 推送自定义负载	 * @param devices	 * @param msg	 * @param badge	 * @param sound	 * @param map	 * @throws JSONException	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void pushPayload(List<Device> devices, String msg,Integer badge,String sound,Map<String,String> map) throws JSONException, CommunicationException, KeystoreException{		PushNotificationPayload payload = customPayload(msg, badge, sound, map);		Push.payload(payload, keystore, password, production, devices);	}	/**	 * 用内置线程推送负载信息	 * @param devices	 * @param msg	 * @param badge	 * @param sound	 * @param map	 * @throws Exception	 */	public static void pushPayLoadByThread(List<Device> devices, String msg,Integer badge,String sound,Map<String,String> map) throws Exception{		PushNotificationPayload payload = customPayload(msg, badge, sound, map);		Push.payload(payload, keystore, password, production, numberOfThreads, devices);	}	/**	 * 推送配对信息	 * @param devices	 * @param msg	 * @param badge	 * @param sound	 * @param map	 * @throws JSONException	 * @throws CommunicationException	 * @throws KeystoreException	 */	public static void pushPayloadDevicePairs(List<Device> devices,String msg,Integer badge,String sound,Map<String,String> map) throws JSONException, CommunicationException, KeystoreException{		List<PayloadPerDevice> payloadDevicePairs = new ArrayList<PayloadPerDevice>();		PayloadPerDevice perDevice = null;		for (int i = 0; i <devices.size(); i++) {			perDevice = new PayloadPerDevice(customPayload(msg+"--->"+i, badge, sound, map), devices.get(i));			payloadDevicePairs.add(perDevice);		}		Push.payloads(keystore, password, production, payloadDevicePairs);	}	/**	 * 用线程推配对信息	 * @param devices	 * @param msg	 * @param badge	 * @param sound	 * @param map	 * @throws Exception	 */	public static void pushPayloadDevicePairsByThread(List<Device> devices,String msg,Integer badge,String sound,Map<String,String> map) throws Exception{		List<PayloadPerDevice> payloadDevicePairs = new ArrayList<PayloadPerDevice>();		PayloadPerDevice perDevice = null;		for (int i = 0; i <devices.size(); i++) {			perDevice = new PayloadPerDevice(customPayload(msg+"--->"+i, badge, sound, map), devices.get(i));			payloadDevicePairs.add(perDevice);		}		Push.payloads(keystore, password, production,numberOfThreads, payloadDevicePairs);	}	/**	 * 队列多线程推送	 * @param devices	 * @param msg	 * @param badge	 * @param sound	 * @param map	 * @throws KeystoreException	 * @throws JSONException	 */	public static void queue(List<Device> devices,String msg,Integer badge,String sound,Map<String,String> map) throws KeystoreException, JSONException{		PushQueue queue = Push.queue(keystore, password, production, numberOfThreads);		queue.start();		PayloadPerDevice perDevice = null;		for (int i = 0; i <devices.size(); i++) {			perDevice = new PayloadPerDevice(customPayload(msg+"--->"+i, badge, sound, map), devices.get(i));			queue.add(perDevice);		}	}	/**	 * 自定义负载	 * @param msg	 * @param badge	 * @param sound	 * @param map 自定义字典	 * @return	 * @throws JSONException	 */	private static PushNotificationPayload customPayload(String msg,Integer badge,String sound,Map<String,String> map) throws JSONException{		PushNotificationPayload payload = PushNotificationPayload.complex();		if(StringUtils.isNotEmpty(msg)){			payload.addAlert(msg);					}		if(badge != null){						payload.addBadge(badge);		}		payload.addSound(StringUtils.defaultIfEmpty(sound, "default"));		if(map!=null && !map.isEmpty()){			Object[] keys = map.keySet().toArray();					Object[] vals = map.values().toArray();			if(keys!= null && vals != null && keys.length == vals.length){				for (int i = 0; i < map.size(); i++) {										payload.addCustomDictionary(String.valueOf(keys[i]),String.valueOf(vals[i]));				}			}		}		return payload;	}}

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表