• 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);
     
    }

  • 相关阅读:
    linux软件必须安装到 /usr,/usr/local/ 吗?
    linux命令ps aux|grep xxx详解
    vim 命令,实用
    @Autowired 与@Resource的区别
    srpingmvc 上传图片到服务器
    Git-Windows安装初始
    python判断句子是否匹配某种模式
    50. Pow(x, n)
    49. Group Anagrams
    48. Rotate Image
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3155636.html
Copyright © 2020-2023  润新知