《推送通知java实现》由会员分享,可在线阅读,更多相关《推送通知java实现(6页珍藏版)》请在金锄头文库上搜索。
1、(转)iphone 推送通知 java 实现iphone 推送通知 java 实现Push 的原理:从上图我们可以看到。1、首先是应用程序注册消息推送。2、 IOS 跟 APNS Server 要 deviceToken。应用程序接受 deviceToken。3、应用程序将 deviceToken 发送给 PUSH 服务端程序。4、 服务端程序向 APNS 服务发送消息。5、APNS 服务将消息发送给 iPhone 应用程序。这样我们就得到了在.net 或 java 等后台应用程序中使用的证书文件:aps_developer_identity.p12如果后台应用是 php 的话,那么可以按照
2、iOS 消息推送机制中 pem 文件的生成这篇文章中的方法来生成php 后台应用程序中使用的证书文件:ck.pem前提准备,在编写 push notification 之获取 device token 中拿到 device token 以后,需要把 token 字符串发送给应用的服务器端,即 provider。第三方依赖包(下载在下面):bcprov-jdk16-145-1.jarcommons-io-2.0.1.jarcommons-lang-2.5.jarlog4j-1.2.16.jarjavapns-jdk16-163.jarjava 代码:package com.sdunisi.iph
3、one.apns.send;import java.util.HashMap;import java.util.Iterator;import javapns.back.PushNotificationManager;import javapns.back.SSLConnectionHelper;import javapns.data.Device;import javapns.data.PayLoad;public class MainApnsSend public static void main(String args) throws Exception try String devic
4、eToken = “e775b5892f3334427c14def8aa4d8189a4ec1c795020072f4baa7ee92e50b1db“;/iphone 手机获取的 tokenPayLoad payLoad = new PayLoad();payLoad.addAlert(“我的 push 测试“);/push 的内容payLoad.addBadge(1);/图标小红圈的数值payLoad.addSound(“default“);/铃音PushNotificationManager pushManager = PushNotificationManager.getInstance
5、();pushManager.addDevice(“iPhone“, deviceToken);/Connect to APNs/*测试的服务器地址: /端口2195 产品推送服务器地址: / 2195 */String host= ““;int port = 2195;String certificatePath= “/Users/jcjc/Desktop/push_p.p12“;/导出的证书String certificatePassword= “sunlg“;/此处注意导出的证书密码不能为空因为空密码会报错pushManager.initializeConnection(host,por
6、t, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);/Send PushDevice client = pushManager.getDevice(“iPhone“);pushManager.sendNotification(client, payLoad);pushManager.stopConnection();pushManager.removeDevice(“iPhone“);catch (Exception e) e.printStackTrace();整合后的代码publ
7、ic class PushUtils private static Logger logger = LoggerFactory.getLogger(PushUtils.class);/*测试推送服务器地址: /2195 产品推送服务器地址: / 2195 */private static String host = ““;private static int port = 2195;public static void main(String args) throws Exception String deviceToken = “f2a070af d6fc27ca c1844810 f690
8、4fcd b28e6fc7 1d207d63 5a01f1af e0850f0a“;/iphone手机获取的 tokenString deviceToken2 = “0c0028e4 ca4049d6 52dfdafb c4b37c25 2c0386aa d14545eb f3859b56 d5593c23“;/iphone 手机获取的 tokenList deviceTokens = new ArrayList();deviceTokens.add(deviceToken);deviceTokens.add(deviceToken2);String content = “此次升级更新的东西“
9、;/push 的内容String p12File = “d:/push2.p12“;/这里是一个.p12格式的文件路径,需要去 apple 官网申请一个 String p12FilePassword = “wiscom“;/此处注意导出的证书密码不能为空因为空密码会报错push2More(p12File, p12FilePassword, deviceTokens);/群组推送push2One(p12File, p12FilePassword, deviceToken2);/单个推送/* 向单个 iphone 手机推送消息.* param deviceToken iphone 手机获取的 to
10、ken* param p12File .p12格式的文件路径* param p12Pass .p12格式的文件密码* param customDictionarys CustomDictionary 字典组* param content 推送内容*/public static void push2One(String p12File, String p12Pass, String deviceToken, String content) try PayLoad payLoad = new PayLoad();payLoad.addAlert(content);/push 的内容payLoad.
11、addBadge(1);/应用图标上小红圈上的数值payLoad.addSound(“default“);/铃音/添加字典payLoad.addCustomDictionary(“url“, ““);PushNotificationManager pushManager = PushNotificationManager.getInstance();pushManager.addDevice(“iphone“, deviceToken);/链接到 APNspushManager.initializeConnection(host, port, p12File, p12Pass, SSLConn
12、ectionHelper.KEYSTORE_TYPE_PKCS12);/开始推送Device client = pushManager.getDevice(“iphone“);pushManager.sendNotification(client, payLoad);/断开链接pushManager.stopConnection();pushManager.removeDevice(“iphone“);logger.info(“iphone 推送消息成功“); catch (Exception e) / System.out.println(“iphone 推送消息异常:“ + e.getMe
13、ssage();logger.error(“iphone 推送消息异常:“ + e.getMessage();/* 向 iphone 群组推送消息.* param deviceTokens iphone 手机获取的 token* param p12File .p12格式的文件路径* param p12Pass .p12格式的文件密码* param customDictionarys CustomDictionary 字典* param content 推送内容*/public static void push2More(String p12File, String p12Pass, List
14、deviceTokens, String content) try PayLoad payLoad = new PayLoad();payLoad.addAlert(content);/push 的内容payLoad.addBadge(1);/应用图标上小红圈上的数值payLoad.addSound(“default“);/铃音/添加字典payLoad.addCustomDictionary(“url“, ““);PushNotificationManager pushManager = PushNotificationManager.getInstance();/链接到 APNspushMa
15、nager.initializeConnection(host, port, p12File, p12Pass, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);/开始循环推送for (int i = 0; i deviceTokens.size(); i+) pushManager.addDevice(“iphone“ + i, deviceTokens.get(i);Device client = pushManager.getDevice(“iphone“ + i);pushManager.sendNotification(client, payLoad);/断开链接pushManager.stopConnection()