javaPNS进阶-高级推送技巧
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进阶-高级推送技巧相关推荐
- iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐
代码地址如下: http://www.demodashi.com/demo/13208.html 前言 我们首先要在AppDelegate里面进行iOS的适配,可以参考这篇文章 iOS原生推送(APN ...
- Spring Boot进阶之Web进阶 代码推送的github上面去
还是搜狗的输入法比较好 Exception.class 上面开不见的部分是这里的 代码上次github上面去保存起来 https://github.com/yangjiabinylg/girl2 h ...
- Android推送进阶课程学习笔记
今天在慕课网学习了Android进阶课程推送的server端处理回执的消息 . 这集课程主要介绍了,当server往client推送消息的时候,client须要发送一个回执回来确认收到了推送消息才算一 ...
- IOS 10 推送
背景 iOS10 新特性一出,各个大神就早已研究新特性能给场景智能化所带来的好处(唉,可惜我只是一个小白).我也被安排适配iOS10的推送工作! Apple 表示这是 iOS 有史以来最大的升级(ou ...
- iOS 10 消息推送(UserNotifications)秘籍总结
前言 单独整理消息通知的内容,但是因为工(就)作(是)的(很)事(懒)没有更新文章,违背了自己的学习的初衷.因为互联网一定要有危机意识,说不定眼一睁,我们就欧了 . iOS 10 消息推送(UserN ...
- uniapp连接php,thinkphp5 对接手机uni-app的unipush推送(个推)
PHP对接unipush(推送)也是要按照个推的文档进行对接(其实unipush用的服务就是个推的,前者应该是和个推谈了合作,个推的厂商推送服务免费开放给uni的开发人员) 放入项目的extend文件 ...
- uni app对接php,thinkphp5 对接手机uni-app的unipush推送(个推)
class GeTui { private $host = 'http://sdk.open.api.igexin.com/apiex.htm'; //测试 private $appkey = ''; ...
- Java评论点赞推送系统_推送(评论,点赞,关注)
public function push_message($v_uid = "", $uid = "", $type = 1,$message='') { $d ...
- 企业 Saltstack安装配置及远程推送
文章目录 Saltstack 概述 通信机制 安装与配置 安装 设置官方YUM仓库安装进行 配置 Saltstack远程执行操作 远程指令操作 编写远程执行模块文件来控制minion 模块使用 远程执 ...
最新文章
- 这样系统的学习分布式,他日必成大器!
- Docker:学习笔记(1)——基础概念
- 错误---获取Input的值为空字符串
- 2017/06/23 linux软件管理构建本地源
- MariaDB Spider 数据库分库分表实践 
分库分表
- 堆化 二叉堆一般用数组来表示。typedef struct _minHeapNodetypedef struct _otherInfo-icoding-C-数据结构
- 现代计算机应用特点,现代计算机的特点和计算机的发展
- C语言-数据结构-可变长顺序表的查找操作
- RocketMQ如何动态扩容和缩容
- ios swift 实现饼状图进度条,swift环形进度条
- bzoj 4300: 绝世好题
- 拓端tecdat|R语言特征选择——逐步回归
- 叫醒你的是闹钟,还是梦想?
- 冰点还原忘记密码如何修改配置或卸载
- 三、EasyExcel实现数据填充
- 如何查看docker的版本号是多少
- 别混淆你想要什么和能否实现
- python编码使用ascii编码_Python中的编码问题:ASCII码 Unicoden编码 UTF-8编码
- jmeter优化记录文档
- 面试官:IoC 和 DI 有什么区别?
热门文章
- java中的static关键字总结
- c语言exit_C语言实现2048
- python目录下的文件夹_Python列出当前文件夹下文件的两种方法
- python中if else语句_python 中if else 语句的作用及示例代码
- python学习-知识点回顾(Python3的安装,编译器、一些关键知识点、数据类型、数据类型转换、运算符优先级)
- php 调取子栏目,Dedecms 如何调取某个栏目所在的顶级栏目及顶级下的子栏目
- android 多手指触摸屏,AIR Android:关于多点触摸
- python读取usb扫码枪数据_USB
- python字符串大全_python学习笔记:字符串操作大全
- verilog or VHDL出租车计价器电路设计