多线程推送 push JavaPNS 2.1

以前用的 javapns-jdk15-165.jar 不支持多线程。后来在网上找到新的一个jar,可以支持多线程发送,与大家分享一下,不知道写的对不对,不对的话请指出,多谢。

将消息以多线程方式推送到iPhone服务器,不知道写的对不对,我在本地上测试是没有问题的,如有疑问请留言。

以下项目所用的jar包:

JavaPNS_2.1.jar

bcprov-jdk16-145-1.jar

log4j-1.2.15.jar

只记得这几个jar,如果不对,请留言我在看一下,多谢指正

JavaPNS_2.1.jar 地址

http://code.google.com/p/javapns/ 

 

Java代码   收藏代码
  1. public static void main(String[] args){  
  2.     String keystore = "D:/XXXXXXXX/XXX.p12";//证书路径和证书名  
  3.     String password = "XXXXXXXX"// 证书密码  
  4.     String token = "XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX";// 手机唯一标识  
  5.     boolean production = true// 设置true为正式服务地址,false为开发者地址  
  6.     int threadThreads = 10// 线程数  
  7. try {  
  8.         // 建立与Apple服务器连接  
  9.         AppleNotificationServer server = new AppleNotificationServerBasicImpl(keystore, password, production  );  
  10.     List<PayloadPerDevice> list = new ArrayList<PayloadPerDevice>();  
  11.     PushNotificationPayload payload = new PushNotificationPayload();  
  12.     payload.addAlert("推送内容");  
  13.     payload.addSound("default");// 声音  
  14.         payload.addBadge(1);//图标小红圈的数值  
  15.     payload.addCustomDictionary("url","www.baidu.com");// 添加字典   
  16.     PayloadPerDevice pay = new PayloadPerDevice(payload,token);// 将要推送的消息和手机唯一标识绑定  
  17.     list.add(pay);  
  18.   
  19.         NotificationThreads work = new NotificationThreads(server,list,threadThreads);//   
  20.     work.setListener(DEBUGGING_PROGRESS_LISTENER);// 对线程的监听,一定要加上这个监听  
  21.     work.start(); // 启动线程  
  22.     work.waitForAllThreads();// 等待所有线程启动完成  
  23.   
  24.  } catch (Exception e) {  
  25.     e.printStackTrace();  
  26.         }  
  27. }  
 

 

Java代码   收藏代码
  1. // 线程监听  
  2. public static final NotificationProgressListener DEBUGGING_PROGRESS_LISTENER = new NotificationProgressListener() {  
  3.         public void eventThreadStarted(NotificationThread notificationThread) {  
  4.             System.out.println("   [EVENT]: thread #" + notificationThread.getThreadNumber() + " started with " + " devices beginning at message id #" + notificationThread.getFirstMessageIdentifier());  
  5.         }  
  6.         public void eventThreadFinished(NotificationThread thread) {  
  7.             System.out.println("   [EVENT]: thread #" + thread.getThreadNumber() + " finished: pushed messages #" + thread.getFirstMessageIdentifier() + " to " + thread.getLastMessageIdentifier() + " toward "" devices");  
  8.         }  
  9.         public void eventConnectionRestarted(NotificationThread thread) {  
  10.             System.out.println("   [EVENT]: connection restarted in thread #" + thread.getThreadNumber() + " because it reached " + thread.getMaxNotificationsPerConnection() + " notifications per connection");  
  11.         }  
  12.         public void eventAllThreadsStarted(NotificationThreads notificationThreads) {  
  13.             System.out.println("   [EVENT]: all threads started: " + notificationThreads.getThreads().size());  
  14.         }  
  15.         public void eventAllThreadsFinished(NotificationThreads notificationThreads) {  
  16.             System.out.println("   [EVENT]: all threads finished: " + notificationThreads.getThreads().size());  
  17.         }  
  18.         public void eventCriticalException(NotificationThread notificationThread, Exception exception) {  
  19.             System.out.println("   [EVENT]: critical exception occurred: " + exception);  
  20.         }  
  21.      };  

调试过程没有报错,可是放入项目中,抱下面的错误。
D elivery error: javapns.communication.exceptions.InvalidCertificateChainException: Invalid certif
icate chain (Received fatal alert: certificate_unknown)!  Verify that the keystore you provided was produced according to specs
后把项目包一个一个去掉,发现一个包中的log4j.properties 捣的鬼的,晕死。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值