我上传的服务器与客户端源码:http://download.csdn.net/detail/robinson_911/8116677
这里讲的比较详细:http://blog.csdn.net/worldmatrix/article/details/7634596
使用Provider向APNS发送Push消息
Provider,将推送信息发送给APNS(苹果推送服务器)的程序。有很多开源的实现,我们使用javapns ( http://code.google.com/p/javapns/ )。首先,Provider要有目标DeviceToken,这是发送目标,由客户端传给Provider之后存在某处。
安装javapns,需要导入的jar为bcprov-jdk15-146.jar, log4j-1.2.15.jar, JavaPNS_2.3_Alpha_5.jar。
将前面导出的P12文件放在Provider的工程目录下。
Provider向APNS发送消息可以参考javapns中NotificationTest.java。也可以参考如下例子。
import javapns.Push;
import javapns.notification.PushNotificationPayload;
public class PushServer
{
public static void main(String[] args)
{
// 向执行设备发送Push通知的device token。
// 不同设备的device token应该由iOS应用通过网络发送给服务端程序,
// 服务端程序应该将这些device token保存在服务器中,
// 然后通过循环向每个device token发送Push通知即可。
String deviceToken ="60c70bb185cd50edfaa430abb3700a5449559be6496f7f4aa91abb2d93317c0b";
try
{
// 创建PushNotificationPayload
PushNotificationPayload payload = new PushNotificationPayload();
// 设置推送消息体
payload.addCustomAlertBody("推送通知\n疯狂iOS讲义测试推送通知的示例。\n"
+ "如有任何技术问题,请登录http:www.crazyit.org!");
// 设置应用程序图标的小红圈中的数值
payload.addBadge(2);
// 设置推送通知的提示声音
payload.addSound("default");
// 发送推送通知
Push.payload(payload,
"../aps_developer_identity.p12", // 指定包含证书和私钥的文件
"fkjava.org", // 设置aps_developer_identity.p12文件的导出密码
false, // 是否为产品化阶段
deviceToken);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}