利用javapns对IOS进行推送
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;
}
}
利用javapns对IOS进行推送的更多相关文章
- iOS远程推送原理及实现过程
➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...
- (七十三)iOS本地推送通知的实现
iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被 ...
- 【转】iOS消息推送实现过程记录
客户端代码:链接地址 服务器代码:链接地址 链接地址 这里记录下iOS消息推送实现的全过程 首先,申请秘钥. 之后进入链接地址开发者,当然你得有啊!!!!! 点击这里 如图: 下面实现创建推送证书( ...
- (转)OpenFire源码学习之十八:IOS离线推送
转:http://blog.csdn.net/huwenfeng_2011/article/details/43458213 IOS离线推送 场景: 如果您有iOS端的APP,在会话聊天的时候,用户登 ...
- 使用PushSharp给iOS应用推送消息
PushSharp是一个C#编写的服务端类库,用于推送消息到各种客户端,支持iOS(iPhone/iPad).Android.Windows Phone.Windows 8.Amazo.Blackbe ...
- IOS远程推送
IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...
- iOS 消息推送(APNs) 傻瓜式教程
也可以去我的简书页面查看这篇文章 首先: 1.做iOS消息推送需要真机测试 2.做iOS消息推送需要有付费的开发者账号 是否继续看帖? 先学习一下相关的知识吧! 因为中途可能会遇到一些问题,这篇文章或 ...
- (转载)iOS 极光推送SDK 集成指南
iOS SDK 集成指南 使用提示 本文匹配的 SDK版本:r1.2.5 以后. 查看最近更新了解最新的SDK更新情况. 产品功能说明 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能 ...
- iOS极光推送,两次Bundleid不一致( 开发证书没有通过验证 是否重新上传证书)的解决方案
极光在配置ios端推送时,需要上传p12证书,如果遇到如下图:: 证书上传未通过的原因一般有: 1.当前上传的p12证书密码输入有误: 2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候 ...
随机推荐
- 八叉树(Octree)
八叉树(Octree)是一种用于描述三维空间的树状数据结构.想象一个立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个.再想象我们有一个房间,房间里某个角落藏着一枚金币,我们想很快的把金币 ...
- HttpServletRequest对象(一)
javaweb学习总结(十)——HttpServletRequest对象(一) 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HT ...
- Ubuntu下的init.d管理update-rc.d
计算机在启动的时候会自动执行一些脚本,用于启动一些应用程序服务,update-rc.d 是管理这些脚本的常用命令之一. 首先这是 LinuxQuestions 中对 update-rc.d 的定义: ...
- Arduino和C51开发OLED显示屏
技术:51单片机.Arduino.OLED显示屏.U8glib 概述 OLED显示屏常常用作为智能产品的显示设备,本文简单介绍OLED显示屏的使用方法. 详细 代码下载:http://www.de ...
- [转载]DB2与ORACLE、MYSQL比较2
原文地址:DB2与ORACLE.MYSQL比较2作者:欣颖 4.2 Oracle9i Oracle的产品战略是每12到18个月发布一个主要版本.主要发行版本所遵循的命名战略在PC领域中更为常见,它不 ...
- Emacs的sr-speedbar中使能Go-mode
sr-speedbar使用了speedbar的文件检索功能,但是Emacs24自带的speedbar不支持go文件预览,下面是在speedbar中使能go-mode的一种方法: 1,按F10启动菜单栏 ...
- org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or br
WARN <init>, HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF R ...
- Lua编程笔记
迭代器并没有真正的迭代,真正迭代的是for循环.而迭代器为每次迭代提供成功后的返回值. function allwords(f)for line in io.lines do for word in ...
- ubuntu 51单片机环境搭建方法
首先下载个sdcc 1: sudo apt-get install sdcc 2: sudo apt-get install libvte-dev3: 安装 gSTC-ISP 下载地址:http:// ...
- 【Spring】Spring之依赖注入(DI)传递参数的方式
DI依赖注入传入参数的方式,这里介绍了基本数据类型,集合,符合数据类型的传递(String类型比较特殊,其传递值和基本数据类型的方法一致) 注入基本数据类型和String类型 通过setter方法注入 ...