javapns简介(转)

 

javapns是一个java实现的APNs的provider库,利用这个库可以向apple的APNs服务器推送基本的以及自定义的APNs消息、从APNs服务器接收详细发送情况报告(error packet)和查询反馈信息(feedback)。下面介绍其基本的用法。

 

一、下载javapns库和其依赖的库:

svn checkout http://javapns.googlecode.com/svn/trunk/ javapns-read-only

 

 

· commons-lang-2.4.jar

· commons-io-1.4.jar

· bcprov-jdk15-146.jar

· log4j-1.2.15.jar

这几个都是开源库。

在工程中导入这几个库。

 

二、推送通知的方法:

Push.alert:推送一条仅包含alert的消息

Push.sound:推送一条仅包含sound的消息

Push.badge:推送一条仅包含badge的消息

Push.combine:推送一条包含alertsoundbadge的消息

也可以自己构造Payload,然后传递给Push.payload方法发送一个payload,给一个或多个设备。或者调用Push.payloads方法把payload一对一的发送给设备,这个需要预先构造PayloadPerDevice类的实例。

自己构造构造Payload的实例的基本方法:

PushNotificationPayload payload = new PushNotificationPayload();

//声明一个空的payload

payload.setExpiry(1);

//设置payload的过期时间

payload.addAlert("alert message");

//设置alert消息

payload.addBadge(3);

//设置badge值

payload.addSound("beep.wav");

//设置声音

payload.addCustomAlertActionLocKey("launch apns");

//设置ActionLocKey

payload.addCustomAlertLocKey("locKey");

//设置LocKey

payload.addCustomDictionary("custom1", "value1");

//增加一个自定义键值对

List<PushedNotification> notifications = Push.payload(payload, "apns-key+cert-exported-from-mac.p12", "hadoop", 

false, 

"def981279b88b3a858b9dc9ea35b893175d5d190e2a271d448ee0679ad5bd880");

//调用Push.payload方法发送这个payload,发回一个已发送的notification的列表
 

三、处理APNs服务器的反馈

苹果的推送服务器提供两个的反馈系统,实际生产过程中,要对两个反馈系统中的反馈消息都进行检查,不能只用其一。这两个反馈系统是:Feedback Service vs Error-response packets 。

javapns系统已经对这两种反馈系统提供的良好的支持。

(1)Error-response packets

在发送消息之后返回的PushedNotificationresponse成员中,会保存有苹果返回的Error-response packets的信息,若消息推送为发生错误,则该成员为空null。可通过如下方法使用:

for (PushedNotification notification : notifications) {

response = notification.getResponse();

if(response != null)

{

response.getMessage();

System.out.println(response.getMessage());

}

            if (notification.isSuccessful()) 

{

                  System.out.println("Push notification sent successf ully to: " + notification.getDevice().getToken());

            } 

else 

{

                    String invalidToken = 

notification.getDevice().getToken();

            }

}
 

2)feedback service

feedback service会列出apple 服务器认为永远不可达的设备(可能是由于你的client端的应用程序已被删除等原因)。可通过如下方法使用feedback:

List<Device> devList = Push.feedback("apns-key+cert-exported-from- mac.p12", "hadoop", false);

for(Device basicDevice: devList)

{

System.out.println(basicDevice.getToken());

System.out.println(basicDevice.getDeviceId());

}

 

转载自:http://www.mc2lab.com/?p=724

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值