javaPNS进阶-高级推送技巧
?
1 創(chuàng)建 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 發(fā)送大量通知(多線程)
javaPNS包含了用于安全高效的發(fā)送大量數(shù)據(jù)的多線程方法,通過下面的代碼可以給大量設備發(fā)送推送消息
public void send (List<Device> devices, Object keystore, String password, boolean production) {
?
? ? ? ?/* 準備一個簡單的通知 */?
? ? ? ? PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!");
?
? ? ? ?/* 指定需要多少線程發(fā)送 */?
? ? ? ? int threads = 30;
? ? ? ?/* 啟動線程并發(fā)送 */?
? ? ? ? List<PushedNotification> notifications = Push.payload(payload, keystore, password, production, threads, devices);
}
注意:上面的多線程發(fā)送方法只會在所有線程都發(fā)送完成后返回一次給notifications,如果你不想等待直到發(fā)送完畢,那么就新開一個線程執(zhí)行上面的操作吧
3生成推送隊列(連接池)
javaPNS支持使用隊列(連接池)的方式。此隊列是一個由多個連接至APNS服務器線程的集合,他們可以實時的將消息推送至APNS。下面是創(chuàng)建連接池的代碼
public void send (String token, Object keystore, String password, boolean production) {
?
? ? ? ?/* 準備一條push信息 */?
? ? ? ? PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!");
?
? ? ? ?/* 指定線程數(shù)*/?
? ? ? ? int threads = 30;
? ? ? ?/* 建立隊列 */?
? ? ? ? PushQueue queue = Push.queue(keystore, password, production, threads);
?
? ? ? ?/* Start the queue (所有的線程和連接將被初始化) */?
? ? ? ? queue.start();
?
? ? ? ?/* 添加一個推送信息 */?
? ? ? ? queue.add(payload, token);
}
我們可以通過PushQueue的getPushedNotifications() 方法來獲取返回信息。
如果你不手動啟動此隊列,它將會在第一次調(diào)用add方式時自動啟動
4更靈活的發(fā)送方式
?javaPNS可以使用下面這種更靈活的方式發(fā)送通知:
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);
? ? ? ?/* 創(chuàng)建一個簡單的payload */?
? ? ? ? PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!");
?
? ? ? ?/* 創(chuàng)建一個 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进阶-高级推送技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个程序员的职业规划
- 下一篇: jQuery基本使用