【iOS】push通知(JavaEE实现)

第一次做iOS push,回想起来还挺简单的。
因为做的时候没留下图,所以就不上图了

去http://developer.apple.com ,用付过费的开发者帐号,创建一个新的应用。勾选上Enable Push Notification;
然后在本机的Key Chain 中请求从证书颁发机构请求一个证书。 上传, 下载这一套流程我就不说,网上很多

主要介绍一下psuh的详细过程

证书什么的, 客户端,我都已经配置好了。
可服务端的人没做过这个。没办法,我来封装一下服务端的代码吧。

我选择了Java Apns

先上一段我封装好的JavaEE的代码

public interface APNSFeedBack {
public void APNSFeedBack(Boolean success,Exception exception);
}
public class ApplePush extends Thread {

private PushNotificationManager pushNotificationManager;
private AppleNotificationServer appleNotificationServer;
private ArrayList<Device> devices;
private Payload payload;
private APNSFeedBack feedBack;

static public void main(String argc[])
{

try {

String tokenDevice = "0b307cfe5d55a3018f281d68afb7ae188c102628b441587e526707fd41e62125";

PushNotificationPayload payload = new PushNotificationPayload();

payload.addAlert("大家好啊");

ArrayList<String> devicesString = new ArrayList<String>();

devicesString.add(tokenDevice);

ApplePush push = new ApplePush();

push.sendNotification(devicesString, payload, new APNSFeedBack() {
@Override
public void APNSFeedBack(Boolean success, Exception exception) {
if (success) {
System.out.println("请求成功");
} else {
System.out.println("请求失败 exception = " + exception);
}
}
});

System.out.println("正在push中…");
}catch (Exception exception)
{
System.out.println("Json库加载失败");
}

}

public Boolean sendNotification(ArrayList<String>devicesString,PushNotificationPayload payload,APNSFeedBack feedBack)
{

//初始化
try
{

String p12Path = "/Users/WangHeShiDai/Desktop/PushKey.p12"; //证书路径
String password = "wangheshidai"; //密码
Boolean isDeveloper = true; //是不是开发模式

if (devicesString == null || devicesString.size() == 0)
{
feedBack.APNSFeedBack(false,new Exception("设备惟一标识异常"));
}
//构建Device

this.devices = new ArrayList<Device>(devicesString.size());

for (int i = 0 ; i < devicesString.size() ; i ++)
{
String deviceString = devicesString.get(i);

Device device = new BasicDevice();

device.setToken(deviceString);

this.devices.add(device);
}

//保存句柄
this.payload = payload;
this.feedBack = feedBack;

//push管理程序
this.pushNotificationManager = new PushNotificationManager();

//初始化证书和端口
this.appleNotificationServer = new AppleNotificationServerBasicImpl(p12Path,password,!isDeveloper);

this.start();

}
catch (Exception ex)
{
System.out.print("抛出异常");
ex.printStackTrace();
feedBack.APNSFeedBack(false,ex);
}

return true;
}

@Override
public void run() {

try {

//连接苹果服务器
this.pushNotificationManager.initializeConnection(this.appleNotificationServer);
//发送消息
this.pushNotificationManager.sendNotifications(this.payload, this.devices);
//断开链接
this.pushNotificationManager.stopConnection();
System.out.println("发送成功");
this.feedBack.APNSFeedBack(true,null);
} catch (Exception exception)
{
System.out.print("抛出异常");
exception.printStackTrace();
this.feedBack.APNSFeedBack(false,exception);
}

}
}
时间: 2024-08-03 19:25:13

【iOS】push通知(JavaEE实现)的相关文章

蛋疼的Apple IOS Push通知协议

简介 Apple Push通知机制其实很简单,就是Apple的APNs服务器做为中间人,把消息推送到对应的设备上. 一张来自Apple文档的图: 当然,示意图看起来简单,但是还有一些实际的问题. 比如,如何区分Provicer的?如何区分设备的? 简单而言,是这样的: 每个应用都有一个自己的证书(certificate),开发者可以从苹果那里获得: 应用可以到APNs服务器上注册(register),然后得到一个device_token,开发者要自己保存好,推送时就要用这个来区分不同的设备. 注

iOS push全方位解析(二)【译文】&quot;——生成OpenSSL证书,Provisioning Profile

这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的概述 2.[iOS push全方位解析](二) 生成push证书,生成Provisioning Profile(本篇) 3.[iOS push全方位解析](三) 一个极简的demo,并测试一下push 这里查看原文 ------------------------------------------

&quot;iOS push全方位解析(二)【译文】&quot;——生成OpenSSL证书,Provisioning Profile

这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下:1.[iOS push全方位解析](一) push的概述2.[iOS push全方位解析](二) 生成push证书,生成Provisioning Profile(本篇)3.[iOS push全方位解析](三) 一个极简的demo,并测试一下push 这里查看原文 ---------------------------------------------

IOS PUSH 实践操作~~~~

1.推送过程简介 (1)App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请.若注册成功,回调函数application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 会被触发,App可以得到deviceToken,该tok

&quot;iOS push全方位解析(一)【译文】&quot;——iOS PUSH概述

这是一篇来自raywenderlich的教程,内容翔实!结构简单.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1. push的概述(本博文) 2. 生成push证书,生成Provisioning Profile 3. 一个极简的demo,并测试一下push 这里查看原文 -------------------------------------------------------------------------------------------------

&quot;iOS push全方位解析(三)【译文】&quot;——一个极简的demo,并测试一下push

这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1. push的概述 2. 生成push证书,生成Provisioning Profile 3. 一个极简的demo,并测试一下push.(本博文) 这里查看原文 一个极简的demo 到目前为止,上面还不是做的还不够让人兴奋,但是那些准备工作还是很有必要的.本教程像你详细展示了如何生成证书,因为每天都会用到证书,而且没有证书push就不好.刚才你刚搞

[转]ios push

转:http://blog.csdn.net/showhilllee/article/details/8631734 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 Provider就是我们自己程序的后台服务器,APNS是Apple Push Notification Service的缩写,也就是苹果的推送服务器. 上图可以分为三个阶段: 第一阶段:应用程序的服务器端把要发送的消息.目的iPhone的标识打包,发给APNS. 第二阶段:APNS在自身的已注册Pus

IOS PUSH

第一阶段:.net应用程序把要发送的消息.目的iPhone的标识打包,发给APNS. 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone. 第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知. 从上图我们可以看到. 1.首先是应用程序注册消息推送. 2. IOS跟APNS Server要deviceToken.应用程序接受deviceToken. 3.应用程序将deviceToken发送给P

IOS 本地通知

在苹果的Mac OSX 和IOS开发的API中有三个不同的"通知",包括:广播通知,本地通知和推送通知. 本地通知只是应用所在设备上给用户通知,而推送通知是远程通知,他是由远程服务器推送过来的 本节主要是讲的本地通知,虽然本地通知并没有任何的网络通信,但是他在编程方面与后面要介绍的推送通知非常相似.我们的例子中有三个按钮,"计划通知开始"按钮开启计划通知,他在10秒钟后到达."停止所有计划通知"按钮式停止和取消已经开始的计划通知."立刻