javaPNS 高级推送技巧
289 views
0
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); }
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2014-07-12 16:52:55
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: javaPNS 高级推送技巧 (米扑博客)