博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用javapns对IOS进行推送
阅读量:7258 次
发布时间:2019-06-29

本文共 7315 字,大约阅读时间需要 24 分钟。

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 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 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; }}

  

转载于:https://www.cnblogs.com/ios8/p/javapns-IOS.html

你可能感兴趣的文章
hdu1078 记忆化搜索
查看>>
Ninject使用demo
查看>>
2017 清北济南考前刷题Day 3 afternoon
查看>>
洛谷P2326 AKN’s PPAP
查看>>
WERKZEUG之WSGI阅读笔记
查看>>
Mybatis学习(2)原始dao开发和使用mapper接口代理开发
查看>>
ggplot2 theme相关设置—矩形设置(rect)
查看>>
笔记--语音信号的预加重
查看>>
C++学习之路: 函数适配器
查看>>
六、与json交互
查看>>
python学习笔记二
查看>>
一个初学者C#编写帐号密码保存软件的思考过程
查看>>
磁盘IO性能监控(Linux 和 Windows)
查看>>
zw版【转发·台湾nvp系列Delphi例程】HALCON InpaintingCt1
查看>>
Bzoj2657 [Zjoi2012]旅游(journey)
查看>>
Java导包后在测试类中执行正确但在Servlet中执行错误报ClassNotFoundException或者ClassDefNotFoundException解决办法...
查看>>
C#判断日期是否合法
查看>>
ruby在线安装整理
查看>>
【软件解决】解决VS环境中出现虚线问题
查看>>
laravel 实现增 与查
查看>>