博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iphone推送java代码实现
阅读量:5798 次
发布时间:2019-06-18

本文共 2706 字,大约阅读时间需要 9 分钟。

  hot3.png

最近在研究iphone推送的java实现,看过发现原来很简单,以下是我根据网上源码修改的程序,具体里面的证书和手机token的生产就不解释了,本人没有搞过iphone,有需要的可以再网上搜索以下,很多也很简单。

代码有不对的地方,多谢大家指出 帮忙改进。

 /************************************************

 测试推送服务器地址:gateway.sandbox.push.apple.com /2195 
 产品推送服务器地址:gateway.push.apple.com / 2195 

需要javaPNS_2.2.jar包

 ***************************************************/

 /**

     *这是一个比较简单的推送方法,

     * apple的推送方法

     * @param tokens   iphone手机获取的token

     * @param path 这里是一个.p12格式的文件路径,需要去apple官网申请一个 

     * @param password  p12的密码 此处注意导出的证书密码不能为空因为空密码会报错

     * @param message 推送消息的内容

     * @param count 应用图标上小红圈上的数值

     * @param sendCount 单发还是群发  true:单发 false:群发

     */

public void sendpush(List<String> tokens,String path, String password, String message,Integer count,boolean sendCount) {

try {

PushNotificationPayload payLoad = PushNotificationPayload.fromJSON(message);

//payLoad.addAlert(message); // 消息内容

payLoad.addBadge(count); // iphone应用图标上小红圈上的数值

payLoad.addSound("default"); // 铃音 默认

PushNotificationManager pushManager = new PushNotificationManager();

//true:表示的是产品发布推送服务 false:表示的是产品测试推送服务

pushManager.initializeConnection(new AppleNotificationServerBasicImpl(path, password, true));

List<PushedNotification> notifications = new ArrayList<PushedNotification>(); 

// 发送push消息

if (sendCount) {

log.debug("--------------------------apple 推送 单-------");

Device device = new BasicDevice();

device.setToken(tokens.get(0));

PushedNotification notification = pushManager.sendNotification(device, payLoad, true);

notifications.add(notification);

} else {

log.debug("--------------------------apple 推送 群-------");

List<Device> device = new ArrayList<Device>();

for (String token : tokens) {

device.add(new BasicDevice(token));

}

notifications = pushManager.sendNotifications(payLoad, device);

}

List<PushedNotification> failedNotifications = PushedNotification.findFailedNotifications(notifications);

List<PushedNotification> successfulNotifications = PushedNotification.findSuccessfulNotifications(notifications);

int failed = failedNotifications.size();

int successful = successfulNotifications.size();

 

if (successful > 0 && failed == 0) {

log.debug("-----All notifications pushed 成功 (" + successfulNotifications.size() + "):");

} else if (successful == 0 && failed > 0) {

log.debug("-----All notifications 失败 (" + failedNotifications.size() + "):");

} else if (successful == 0 && failed == 0) {

System.out.println("No notifications could be sent, probably because of a critical error");

} else {

log.debug("------Some notifications 失败 (" + failedNotifications.size() + "):");

log.debug("------Others 成功 (" + successfulNotifications.size() + "):");

}

// pushManager.stopConnection();

} catch (Exception e) {

e.printStackTrace();

}

}

转载于:https://my.oschina.net/yxw/blog/53363

你可能感兴趣的文章
(干货)Linux学习资源推荐
查看>>
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
C#字符串的不变性
查看>>
前端路由简介以及vue-router实现原理
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>
分享15款很实用的 Sass 和 Compass 工具
查看>>
AMD优势: 与众不同 选择丰富
查看>>
玩转高性能超猛防火墙nf-HiPAC
查看>>
简单按日期查询mysql某张表中的记录数
查看>>
自动化部署之jenkins发布PHP项目
查看>>
C/C++编程可用的Linux自带工具
查看>>
Oracle ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名...
查看>>
多线程之volatile关键字
查看>>
如何判断webview是不是滑到底部
查看>>
Raptor实践2——控制结构
查看>>
Smartisan OS一步之自定义拖拽内容
查看>>
海贼王十大悲催人物
查看>>
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 搞定!
查看>>