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进阶-高级推送技巧的更多相关文章

  1. iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐

    代码地址如下:http://www.demodashi.com/demo/13208.html 前言 我们首先要在AppDelegate里面进行iOS的适配,可以参考这篇文章 iOS原生推送(APNS ...

  2. Android推送进阶课程学习笔记

    今天在慕课网学习了Android进阶课程推送的server端处理回执的消息 . 这集课程主要介绍了,当server往client推送消息的时候,client须要发送一个回执回来确认收到了推送消息才算一 ...

  3. iOS 10 消息推送(UserNotifications)秘籍总结(一)

    前言 之前说会单独整理消息通知的内容,但是因为工(就)作(是)的(很)事(懒)没有更新文章,违背了自己的学习的初衷.因为互联网一定要有危机意识,说不定眼一睁,我们就out丢了饭碗. 图片来源网络.jp ...

  4. hbuilder APP服务器端(C#)推送

     实现推送有多种方法和技术手段,我这边是使用三方“个推”去实现对特定用户的推送.我自己是关联业务,对下一步任务代办人进行消息通知.   1 .个推账号申请和配置 1.1.IOS需要推送证书 参考网址: ...

  5. 利用javapns对IOS进行推送

    start package com.jynine.javapns; import java.io.FileNotFoundException; import java.io.IOException; ...

  6. 【技巧】解决win10的1803版本下,无法收到1809推送、从而无法更新到1903版本的问题。

    figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...

  7. Github学习进阶-初露锋芒,通过命令行将本地git仓库推送到Github上面的仓库

    前提: 1. 需要安装git 客户端.  能打开 git  bash 命令行窗口. 2. 生成了ssh 秘钥,并添加到了Github上面. 一.在Github上面建立一个git仓库. 点击 + 号,在 ...

  8. dotnet core使用IO合并技巧轻松实现千万级消息推送

    之前讲述过多路复用实现单服百万级别RPS吞吐,但在文中有一点是没有说的就是消息IO合并,如果缺少了消息IO合并即使怎样多路复用也很难达到百万级别的请求响毕竟所有应用层面的网络IO读写都是非常损耗性能的 ...

  9. iOS 进阶---推送通知之本地通知

    1.推送通知的2种方式 1)本地推送通知(Local Notification) 2)远程推送通知(Remote Notification) 2.通知的作用 可以让不在前台运行的app,告知用户app ...

随机推荐

  1. Oracle SqlPlus 方向键的方法和解决的退格键失效

    SqlPlus中退格键和方向键的设置 在刚装好的Oracle中,我们使用SqlPlus会发现很的蹩脚,不仅退格键不好用,方向键也不行调出history.以下有几种解决方法. 1.能够使用ctrl+Ba ...

  2. SQL点滴9—SQL Server中的事务处理以及SSIS中的内建事务

    原文:SQL点滴9-SQL Server中的事务处理以及SSIS中的内建事务 我们可以把SSIS中的整个package包含在一个事务中,但是如果在package的执行过程中有一个表需要锁定应该怎么处理 ...

  3. win7下的PHP+IIS配置,找不到php5isapi.dll的问题,版本5.4.9

    原文:win7下的PHP+IIS配置,找不到php5isapi.dll的问题,版本5.4.9 问题:PHP新手配置,在官网上下载的压缩包.按网上的找的教程配置IIS时发现,在解压包里找不到php5is ...

  4. OCP-1Z0-051-题目解析-第10题

    10. View the Exhibit and examine the structure of the PROMOTIONS table. Each promotion has a duratio ...

  5. C语言链表操作模板(添加,删除,遍历,排序)

    C语言链表操作模板,摘自郝斌的C语言视频教程,简单的修改成了纯C格式.当年照着视频学习的时候记录下来的,在使用的时候直接拿来修改修改修改能节约不少时间的. /********************* ...

  6. java这些东西发展(4)-------无穷time of error

    今天,有些郁闷的心情啊.空指针下午折磨.到现在为止仍然没有得到解决,专家的招募结果没拿到,我们必须继续自己的,进而改变一点点一点点地找到它,但现在我不想搞,准备回家,这浪费了一个多小时,之前记录的下一 ...

  7. 整理 W3CSchool 常用的CSS属性列表

    近期教学给学员总结常用的CSS属性,方便学习查询,正好发上来也给大家分享一下,O(∩_∩)O. 摘选自:http://www.w3cschool.com.cn/ 表格最右列的数字标识支持的CSS最低版 ...

  8. ajax的post请求

    get和post是http请求方法最主要的两种方式. post: 来个例子test.html <!doctype html> <html lang="en"> ...

  9. Google Offer的经历+内推

    8个月从CS菜鸟到拿到Google Offer的经历+内推 http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=77453 ...

  10. Day4:T1小技巧(类似于指针操作)T2搜索+小细节

    Day4:其中有很多小技巧get T1 一直没有听到过像这样的小技巧的略专业名词,有点类似于指针操作,之前有碰到过很多这样的题目 每次都是以不同的形式出现,但是感觉思想还是有点接近的吧(就比如某天有一 ...