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"; } Listdevices=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 devices, String msg,Integer badge,String sound,Map 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 devices, String msg,Integer badge,String sound,Map 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 devices,String msg,Integer badge,String sound,Map map) throws JSONException, CommunicationException, KeystoreException{ List payloadDevicePairs = new ArrayList (); PayloadPerDevice perDevice = null; for (int i = 0; i "+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 devices,String msg,Integer badge,String sound,Map map) throws Exception{ List payloadDevicePairs = new ArrayList (); PayloadPerDevice perDevice = null; for (int i = 0; i "+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 devices,String msg,Integer badge,String sound,Map map) throws KeystoreException, JSONException{ PushQueue queue = Push.queue(keystore, password, production, numberOfThreads); queue.start(); PayloadPerDevice perDevice = null; for (int i = 0; i "+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 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; }}