javapns 简介
javapns是一个java实现的APNs的provider库,利用这个库可以向apple的APNs服务器推送基本的以及自定义的APNs消息、从APNs服务器接收详细发送情况报告(error packet)和查询反馈信息(feedback)。
下面介绍其基本的用法。
一、下载库和其依赖的库:
svn checkout http://javapns.googlecode.com/svn/trunk/ javapns-read-only
依赖库:
这几个都是开源库。
在工程中导入这几个库。
二、推送通知的方法:
Push.alert:推送一条仅包含alert的消息
Push.sound:推送一条仅包含sound的消息
Push.badge:推送一条仅包含badge的消息
Push.combine:推送一条包含alert,sound,badge的消息
也可以自己构造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"); // 增加一个自定义键值对 // 调用Push.payload方法发送这个payload,发回一个已发送的notification的列表 List<PushedNotification> notifications = Push.payload(payload, "apns-key+cert-exported-from-mac.p12", "hadoop", false, "def981279b88b3a858b9dc9ea35b893175d5d190e2a271d448ee0679ad5bd880");
三、处理APNs服务器的反馈
苹果的推送服务器提供两个的反馈系统,实际生产过程中,要对两个反馈系统中的反馈消息都进行检查,不能只用其一。这两个反馈系统是:Feedback Service vs Error-response packets 。
javapns系统已经对这两种反馈系统提供的良好的支持。
(1)Error-response packets
在发送消息之后返回的PushedNotification的response成员中,会保存有苹果返回的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()); }
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2014-07-11 16:31:02
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: javapns 简介 (米扑博客)