1 创建 payloads
javaPNS提供了很多简单易用的通知方式(Push类里的alert,badges,sounds等)这些让你不用自己处理payload.但是我们的程序可能需要复杂的推送信息,因此我们可以通过payload来定制推送信息:
public void send (List<Device> devices, Object keystore, String password, boolean production) {
 
       /* Build a blank payload to customize */ 
        PushNotificationPayload payload = PushNotificationPayload.complex();

/* Customize the payload */ 
        payload.addAlert("Hello World!");
        payload.addCustomDictionary("mykey1", "My Value 1");
        payload.addCustomDictionary("mykey2", 2);
        // etc.
 
       /* Push your custom payload */ 
        List<PushedNotification> notifications = Push.payload(payload, keystore, password, production, devices);

}

2 发送大量通知(多线程)
javaPNS包含了用于安全高效的发送大量数据的多线程方法,通过下面的代码可以给大量设备发送推送消息
public void send (List<Device> devices, Object keystore, String password, boolean production) {
 
       /* 准备一个简单的通知 */ 
        PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!");
 
       /* 指定需要多少线程发送 */ 
        int threads = 30;

/* 启动线程并发送 */ 
        List<PushedNotification> notifications = Push.payload(payload, keystore, password, production, threads, devices);
}
注意:上面的多线程发送方法只会在所有线程都发送完成后返回一次给notifications,如果你不想等待直到发送完毕,那么就新开一个线程执行上面的操作吧

3生成推送队列(连接池)
javaPNS支持使用队列(连接池)的方式。此队列是一个由多个连接至APNS服务器线程的集合,他们可以实时的将消息推送至APNS。下面是创建连接池的代码
public void send (String token, Object keystore, String password, boolean production) {
 
       /* 准备一条push信息 */ 
        PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!");
 
       /* 指定线程数*/ 
        int threads = 30;

/* 建立队列 */ 
        PushQueue queue = Push.queue(keystore, password, production, threads);
 
       /* Start the queue (所有的线程和连接将被初始化) */ 
        queue.start();
 
       /* 添加一个推送信息 */ 
        queue.add(payload, token);
}
我们可以通过PushQueue的getPushedNotifications() 方法来获取返回信息。
如果你不手动启动此队列,它将会在第一次调用add方式时自动启动

4更灵活的发送方式
 javaPNS可以使用下面这种更灵活的方式发送通知:
public void send (List<Device> devices, Object keystore, String password, String appleHost, int applePort) {
 
       /* 指定服务器信息 */ 
        AppleNotificationServer customServer = new AppleNotificationServerBasicImpl(keystore, password, ConnectionToAppleServer.KEYSTORE_TYPE_PKCS12, appleHost, applePort);

/* 创建一个简单的payload */ 
        PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!");
 
       /* 创建一个 push notification manager */ 
        PushNotificationManager pushManager = new PushNotificationManager();

/* 初始化连接 */ 
        pushManager.initializeConnection(customServer);
 
       /* 推送消息并获得结果*/ 
        List<PushedNotification> notifications = pushManager.sendNotifications(payload, devices);
 
}

转载于:https://www.cnblogs.com/jiangu66/p/3155636.html

javaPNS进阶-高级推送技巧相关推荐

  1. iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐

    代码地址如下: http://www.demodashi.com/demo/13208.html 前言 我们首先要在AppDelegate里面进行iOS的适配,可以参考这篇文章 iOS原生推送(APN ...

  2. Spring Boot进阶之Web进阶 代码推送的github上面去

    还是搜狗的输入法比较好 Exception.class  上面开不见的部分是这里的 代码上次github上面去保存起来 https://github.com/yangjiabinylg/girl2 h ...

  3. Android推送进阶课程学习笔记

    今天在慕课网学习了Android进阶课程推送的server端处理回执的消息 . 这集课程主要介绍了,当server往client推送消息的时候,client须要发送一个回执回来确认收到了推送消息才算一 ...

  4. IOS 10 推送

    背景 iOS10 新特性一出,各个大神就早已研究新特性能给场景智能化所带来的好处(唉,可惜我只是一个小白).我也被安排适配iOS10的推送工作! Apple 表示这是 iOS 有史以来最大的升级(ou ...

  5. iOS 10 消息推送(UserNotifications)秘籍总结

    前言 单独整理消息通知的内容,但是因为工(就)作(是)的(很)事(懒)没有更新文章,违背了自己的学习的初衷.因为互联网一定要有危机意识,说不定眼一睁,我们就欧了 . iOS 10 消息推送(UserN ...

  6. uniapp连接php,thinkphp5 对接手机uni-app的unipush推送(个推)

    PHP对接unipush(推送)也是要按照个推的文档进行对接(其实unipush用的服务就是个推的,前者应该是和个推谈了合作,个推的厂商推送服务免费开放给uni的开发人员) 放入项目的extend文件 ...

  7. uni app对接php,thinkphp5 对接手机uni-app的unipush推送(个推)

    class GeTui { private $host = 'http://sdk.open.api.igexin.com/apiex.htm'; //测试 private $appkey = ''; ...

  8. Java评论点赞推送系统_推送(评论,点赞,关注)

    public function push_message($v_uid = "", $uid = "", $type = 1,$message='') { $d ...

  9. 企业 Saltstack安装配置及远程推送

    文章目录 Saltstack 概述 通信机制 安装与配置 安装 设置官方YUM仓库安装进行 配置 Saltstack远程执行操作 远程指令操作 编写远程执行模块文件来控制minion 模块使用 远程执 ...

最新文章

  1. 这样系统的学习分布式,他日必成大器!
  2. Docker:学习笔记(1)——基础概念
  3. 错误---获取Input的值为空字符串
  4. 2017/06/23 linux软件管理构建本地源
  5. MariaDB Spider 数据库分库分表实践 分库分表
  6. 堆化 二叉堆一般用数组来表示。typedef struct _minHeapNodetypedef struct _otherInfo-icoding-C-数据结构
  7. 现代计算机应用特点,现代计算机的特点和计算机的发展
  8. C语言-数据结构-可变长顺序表的查找操作
  9. RocketMQ如何动态扩容和缩容
  10. ios swift 实现饼状图进度条,swift环形进度条
  11. bzoj 4300: 绝世好题
  12. 拓端tecdat|R语言特征选择——逐步回归
  13. 叫醒你的是闹钟,还是梦想?
  14. 冰点还原忘记密码如何修改配置或卸载
  15. 三、EasyExcel实现数据填充
  16. 如何查看docker的版本号是多少
  17. 别混淆你想要什么和能否实现
  18. python编码使用ascii编码_Python中的编码问题:ASCII码 Unicoden编码 UTF-8编码
  19. jmeter优化记录文档
  20. 面试官:IoC 和 DI 有什么区别?

热门文章

  1. java中的static关键字总结
  2. c语言exit_C语言实现2048
  3. python目录下的文件夹_Python列出当前文件夹下文件的两种方法
  4. python中if else语句_python 中if else 语句的作用及示例代码
  5. python学习-知识点回顾(Python3的安装,编译器、一些关键知识点、数据类型、数据类型转换、运算符优先级)
  6. php 调取子栏目,Dedecms 如何调取某个栏目所在的顶级栏目及顶级下的子栏目
  7. android 多手指触摸屏,AIR Android:关于多点触摸
  8. python读取usb扫码枪数据_USB
  9. python字符串大全_python学习笔记:字符串操作大全
  10. verilog or VHDL出租车计价器电路设计