APP推送通知相关实现
- bcprov-jdk16-145-1.jar
- commons-io-2.0.1.jar
- commons-lang-2.5.jar
- javapns-jdk16-163.jar
- log4j-1.2.16.jar

- Provider:应用自己的服务器;
- APNS:Apple Push Notification Service的简称,苹果的PUSH服务器;
OS设备连接网络后,会自动与APNS保持类似TCP的长链接,等待APNS推送消息的到来;
应用启动时注册消息推送,并获取设备的在APNS中注册的唯一设备标示deviceToken上传给应用服务器(即Provider);
在需要给应用推送消息时,Provider把push内容、接收push消息的deviceToken按APNS指定的格式打包好,发送给APNS;
APNS收到Provider发送的消息后,查找deviceToken指定的设备,如果该设备已经和APNS建立了连接,则立即将消息推送给该设备,如果设备不在线,则在该设备下次连接到APNS后将消息推送到设备。请注意苹果并不保证推送一定成功;
设备收到push消息后,iOS系统会根据SSL证书判断这个push消息是发给那个应用的,进而启动相应客户端。
<!-- Apple Push Notification Related Dependencies -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency> <dependency>
<groupId>com.github.fernandospr</groupId>
<artifactId>javapns-jdk16</artifactId>
<version>2.3.1</version>
</dependency>
String deviceToken = "xxxxxxx";
//被推送的iphone应用程序标示符
PushNotificationPayload payload = new PushNotificationPayload();
payload.addCustomAlertBody("通知!");
payload.addBadge(1);
payload.addSound("default"); PushNotificationManager pushManager = new PushNotificationManager();
Device device = new BasicDevice(deviceToken);
String certificatePassword = "123456"; InputStream keyStoreFileInputStream = this.getClass().getClassLoader().getResourceAsStream("push.p12"); //注意:最后一个参数表明该请求是否为生产环境,如果配置的证书为测试使用的证书,请将该参数修改为false
pushManager.initializeConnection(
new AppleNotificationServerBasicImpl(keyStoreFileInputStream, certificatePassword,
true));
pushManager.sendNotification(device, payload);
pushManager.stopConnection();
应用信息
| AppKey | xxxx | |
| Master Secret | xxxx | |
| 创建日期 | 2016-03-17 13:10 | |
| 最后修改时间 | 2016-03-17 13:10 |

- 设备APP移动端向极光推送发送注册设备所需要的信息,包括deviceToken,手机号(用于收费版短信通知)等;
- 注册极光推送相关服务后,再向后端服务提供设备信息,注册的极光id,手机号用于后端存储;
- 后端服务需要将相关数据持久化;
- 如果触发了消息通知机制,一种方法是可以通过极光推送提供的网页端来进行,另外一种就是在后端服务中直接根据用户手机号/注册id/设备别名通过JPush API来进行;
- 极光推送服务收到通知后,需要将消息发送到APNS(Apple Push Notification Service)中;
- APNS根据设备deviceToken发送消息至移动端设备,点击后启动应用程序。
JPushClient jpushClient = new JPushClient(masterSecret, appKey, 3);
// For push, all you need do is to build PushPayload object.
PushPayload payload = buildPushObject_all_all_alert();
try {
PushResult result = jpushClient.sendPush(payload);
LOG.info("Got result - " + result);
} catch (APIConnectionException e) {
// Connection error, should retry later
LOG.error("Connection error, should retry later", e);
} catch (APIRequestException e) {
// Should review the error, and fix the request
LOG.error("Should review the error, and fix the request", e);
LOG.info("HTTP Status: " + e.getStatus());
LOG.info("Error Code: " + e.getErrorCode());
LOG.info("Error Message: " + e.getErrorMessage());
}
APP推送通知相关实现的更多相关文章
- iOS开发资源:推送通知相关开源项目--PushSharp、APNS-PHP以及Pyapns等
PushSharp (github) PushSharp是一个实现了由服务器端向移动客户端推送消息的开源C#库,支持 iOS (iPhone/iPad APNS). Android (C2DM/GC ...
- 重新想象 Windows 8 Store Apps (67) - 后台任务: 推送通知
[源码下载] 重新想象 Windows 8 Store Apps (67) - 后台任务: 推送通知 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 推送通 ...
- 背水一战 Windows 10 (121) - 后台任务: 推送通知
[源码下载] 背水一战 Windows 10 (121) - 后台任务: 推送通知 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 推送通知 示例演示如何接收推送通知/WebA ...
- iOS推送通知
推送通知 此通知非彼通知. NSNotification是抽象的,看不见的,但是可以监听,属于观察者模式的一种设计模式. 推送通知是可见的,能用肉眼看见的,是真正的和用户打交道的通知. 推送通知分为两 ...
- (转)短信vs.推送通知vs.电子邮件:app什么时候该用哪种方式来通知用户?
转:http://www.360doc.com/content/15/0811/00/19476362_490860835.shtml 现在,很多公司都关心的一个问题是:要提高用户互动,到底采取哪一种 ...
- 网络推送通知:及时,相关和准确 (navigator.serviceWorker.register(), window.PushManager, new Notification)
google网络推送通知 https://developers.google.cn/web/fundamentals/push-notifications/ 服务工作线程:简介server worle ...
- WP7推送通知服务
原文地址http://www.cnblogs.com/Joetao/articles/2214482.html (一)为什么使用推送通知服务(1)Windows Phone执行模型决定只有一个第三方的 ...
- Windows Azure Service Bus Notification Hub推送通知
前言 随着Windows Azure 在中国的正式落地,相信越来越多的人会体验到Windows Azure带来的强大和便利.在上一篇文章中, 我们介绍了如何利用Windows Azure中的Servi ...
- wp8.1 Study16:网络之 使用Azure移动服务及利用Azure推送通知服务
一.WP8.1有关网络的API WP8.1与其它平台的对比如下图: 二.Azure移动服务 前提: Azure移动服务可以让使用者的数据存放在云空间,从而方便使用者的App在不同平台上的数据共享. 1 ...
随机推荐
- L157
UK Watchdog: Smugglers to Exploit Border if no Brexit DealSmugglers and other organized criminals ar ...
- Linux文件操作及管理
---恢复内容开始--- 一.Linux系统的结构 1.Linux是一个倒树型结构,最大的目录名称为“/”(根目录) 2.Linux系统的二级目录 /bin ##binary二进制可执行文件, ...
- ubuntu16 tomcat7安装和编码修改
有直接通过命令安装的,但是我还是喜欢把文件下载下来,然后自己配置. 1,下载tomcat7二进制文件 https://tomcat.apache.org/download-70.cgi 2,解压tom ...
- Python中基本的读文件和简单数据处理
Python中基本的读文件和简单数据处理 暂无评论 DataQuest上面的免费课程(本文是Python基础课程部分),里面有些很基础的东西(csv文件读,字符串预处理等),发在这里做记录.涉及下面六 ...
- 利用层序遍历(含空节点)和中序遍历重建二叉树 python
给定一颗二叉树的层序遍历(不含None的形式)和中序遍历序列,利用两个序列完成对二叉树的重建. 还是通过一个例子来说明整个过程,下图所示的二叉树,层序遍历结果为[a,b,c,d,e],中序遍历结果为[ ...
- asp.net Npoi 使用
HSSFWorkbook hssfworkbook = new HSSFWorkbook(); //增加 ExcelNPOI.SS.UserModel.ISheet SheetName = hssfw ...
- 创建你的第一个Flutter应用程序
前言 Flutter,Google推出的跨平台开发框架.就在前几天,Flutter的首个发布预览版(Release Preview 1)正式发布! 即将迎来Flutter 正式版(1.0).本篇将带你 ...
- 什么时候应该使用Autorelease Pool
csdn首发:http://blog.csdn.net/guijiewan/article/details/46470285 Objective c使用ARC之后,一般都不需要再手动调用retain, ...
- OPEN(SAP) UI5 学习入门系列之一:扫盲与热身(上)
什么是SAP Fiori? 了解SAP UI5必须要从SAP Fiori开始,两者概念经常被混淆,而两者也确实有着非常紧密的关系. 用过SAP的同学们都对SAP的传统的界面(SAP GUI)表示“呵呵 ...
- matlab 破解教程密钥
http://wenku.baidu.com/link?url=YW1f0XP1VRcOq8YtwsIv-m0vMS3YuFwY7H617koFr9zM6I86P-KpCRo1tDewI81eBiXR ...