javaPNS进阶-高级推送技巧
2013-06-24 20:35
381 查看
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);
}
相关文章推荐
- javaPNS进阶-高级推送技巧
- java高级进阶关于java多线程的应用 ThreadLocal多线程实例详解
- 22. javacript高级程序设计-高级技巧
- 工欲善其事,必先利其器-java高级测试进阶之接口自动化测试工具类(一)处理http请求。
- Dojo 的 Ajax 应用开发进阶教程:JavaScript 技巧与高级特性(一)
- 生成可用于Javapns推送push的p12
- 夯实JAVA基本之一——泛型详解(2):高级进阶
- 利用javapns对IOS进行推送
- 使用JavaPns向APNs推送通知
- Java高级进阶学习-Java的内存回收(1)
- java基于javapns2.2.jar实现IOS服务器推送
- 阅读郭林《第一行代码》的笔记——第13章 继续进阶,你还应该掌握的高级技巧
- 夯实JAVA基本之一——泛型详解(2):高级进阶
- Java 进阶 从低级程序员到高级程序员
- 多线程推送 push JavaPNS 2.1
- java实现基于javapns1.6的ios服务器推送
- IOS push推送(javapns包与notnoop包的区别)
- javapns 推送ios消息
- JAVA高级:多核线程-volatile原理与技巧