iphone消息推送需要向APNS申请证书(如何申请,请参考:http://2015.iteye.com/blog/1337599 ),会生成三个文件:
1、Push.certSigningRequest
2、Push.p12
3、aps_developer_identity.cer
然后,java后台消息推送代码需要用到证书密码和路径,需要另外使用openssl生成,windows下的步骤如下:
打开openssl命令行:
1、将aps_developer_identity.cer转换成aps_developer_identity.pem格式
输入命令: x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM
2、将p12格式的私钥转换成pem
pkcs12 -nocerts -out Push_Noenc.pem -in Push.p12
3、创建p12文件
pkcs12 -export -in aps_developer_identity.pem -inkey Push_Noenc.pem -certfile Push.certSigningRequest -name "aps_developer_identity" -out aps_developer_identity.p12
注意:-name 后面的名字 aps_developer_identity 与最后你生成的保持一致;
这样我们就得到了java等后台应用程序中使用的证书文件:aps_developer_identity.p12
如果linux下生成第三步报错,即可去掉 -certfile Push.certSigningRequest 生成(我是这样做的,也可以推送消息,去掉之前它老提示一个找不到cert的错误)
java 后台推送测试代码:(注意修改你的证书路径和密码,以及测试手机的token
/** * IPHONE推送 * * @param tokens * 设备ID列表 * @param message * 推送的消息 * @param badge * iphone应用图标上小红圈上的数值 * @param sound * 消息提醒铃音 * @param certificatePath * 证书路径 * @param certificatePassword * 证书密码 * @param single * true:单条 false:多条 */ public void sendpush(List<String> tokens, String message, int badge, String sound, String certificatePath, String certificatePassword, boolean single) { try { logger.info("----------------message:" + message); PushNotificationPayload payLoad = new PushNotificationPayload(); if(StringUtils.isNotEmpty(message)){ payLoad.addAlert(message); // 消息内容 } payLoad.addBadge(badge); // iphone应用图标上小红圈上的数值 if (!StringUtils.isBlank(sound)) { payLoad.addSound(sound);// 铃音 } PushNotificationManager pushManager = new PushNotificationManager(); // true:表示的是产品发布推送服务 false:表示的是产品测试推送服务 pushManager .initializeConnection(new AppleNotificationServerBasicImpl( certificatePath, certificatePassword, false)); List<PushedNotification> notifications = new ArrayList<PushedNotification>(); // 发送push消息 if (single) { Device device = new BasicDevice(); device.setToken(tokens.get(0)); PushedNotification notification = pushManager.sendNotification( device, payLoad, true); notifications.add(notification); } else { 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); if (failedNotifications != null) { int failed = failedNotifications.size(); String errorLog = "失败条数=" + failed + "; "; for (PushedNotification failedNotification : failedNotifications) { Device d = failedNotification.getDevice(); errorLog += "deviceId=" + d.getDeviceId() + "; token=" + d.getToken(); } logger.info("消息推送失败记录:" + errorLog); } // int successful = successfulNotifications.size(); } catch (Exception e) { logger.error("消息推送异常...", e); } } public static void main(String[] args) { String classpath = IphonePushService.class.getResource("/").getPath(); PropertyConfigurator.configure(classpath + "/config/properties/pushLog4j.properties"); IphonePushService pushService = new IphonePushService(); List<String> token = new ArrayList<String>(); String device_token ="gt5a414g67a01183ef683r41e110ddrlof7d258h2c1678a99hj69586e589574"; token.add(device_token); String certificatePath = "F://duanrong_zeng//temp//cert//java_dev_identity.p12"; String certificatePassword = "123456"; pushService.sendpush(token, null, 5, "", certificatePath, certificatePassword, true); }
使用的jar包,openssl见附件
本文参考了 http://2015.iteye.com/blog/1337599
原文参考:http://it.5yun.com.cn/html/y2015/m01/22.html
相关推荐
APNS(Apple Push Notification Service)苹果推送通知服务。该技术由苹果公司提供的APNS服务。工作原理:首先,APNS会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书已确定其为...
APNs是苹果公司的远程通知服务,当应用程序在后台或未运行时,可以通过APNs将消息推送到用户的设备上。APNs通过安全的HTTP/2协议与服务器通信,服务器需要向APNs发送包含令牌、通知信息以及用于加密的证书的推送包。...
Java为iPhone应用实现推送服务主要涉及的是远程通知技术,这是iOS设备与服务器间通信的一种方式,使得即使应用程序在后台或关闭状态下,也能接收到新消息、更新或其他重要信息。在这个过程中,Java作为服务器端的...
可实现向所有用户发送通知,实现群推送,java后台代码。网上简易代码一般只能单发
在实现iPhone消息推送的过程中,通常采用HTTPS协议。这是因为HTTPS提供了安全的数据传输,能够保护用户的隐私,防止数据在传输过程中被窃取或篡改。APNS的实现流程主要包括以下几个步骤: 1. **获取证书**:首先,...
Java消息推送给iPhone涉及到的是iOS应用开发中的远程通知服务,主要使用Apple的Push Notification Service (APNs)。在iOS设备上,当应用不在前台运行时,开发者可以通过APNs向设备发送消息,提醒用户有新的信息或者...
JavaPNS是Java平台上用于实现Apple Push Notification Service (APNs)的一个开源库,版本2.2提供了对iPhone设备推送通知的支持。APNs是苹果公司提供的一个服务,允许开发者向iOS、iPadOS以及watchOS设备发送远程通知...
这个“APNS 苹果消息推送项目源码,运行即用”包含了实现APNs推送功能的完整项目,非常适合希望自主管理苹果设备消息推送的开发者。 首先,让我们详细了解一下APNs的基本概念。APNs是苹果为开发者提供的一个接口,...
这个压缩包里面包含三个DOC文件:1.iphone推送java实现.doc 2.iphone推送简单JAVA示例.doc 3.实现iphone推送服务端原理.doc 三个文档很全面的指导学者学习怎么用java实现ios推送功能,不仅仅是讲解怎么实现,还讲解...
在iOS平台上,实现从后台向手机客户端推送消息是通过苹果的Push Notification Service (APNs)完成的。这个过程涉及到客户端的设置、服务器端的配置以及实际的推送代码。以下是一步步详细讲解如何实现这一功能: 1. ...
本文将深入探讨如何使用C#来实现后台推送消息至苹果(Apple)设备,以便用户可以在他们的iPhone上接收这些消息。这一过程通常涉及使用苹果的Push Notification Service (APNs)。 首先,了解APNs是关键。APNs是苹果...
本文将详细介绍 iOS 推送消息的工作机制、证书生成过程和工程代码实现。 一、iOS 推送消息工作机制 iOS 推送消息的工作机制可以简单地用以下图来概括: Provider 是指某个 iPhone 软件的 Push 服务器,APNS 是 ...
本文将深入探讨iOS APNS推送消息的实现,包括iPhone端和服务端的设置和交互。 首先,让我们从iPhone端开始。在iOS应用中集成APNs推送功能,开发者需要做以下几件事: 1. **获取设备Token**:当用户安装并首次运行...
标题和描述中提到的是关于iOS设备的推送通知服务(Push Notification Service, 简称Push)的修复方法,特别是针对已经越狱的iPhone设备。在iOS系统中,推送通知允许应用在用户未直接运行该应用时,通过Apple的服务器...
### Java 实现 iPhone 推送详解 随着移动互联网的发展,推送通知成为了许多应用程序与用户保持互动的重要手段之一。本文将详细介绍如何使用Java实现一个简单的iPhone推送功能,包括所需的技术栈、核心步骤以及注意...
iOS的消息推送功能是移动应用开发中的重要组成部分,它允许应用程序在后台向用户发送通知,即使应用没有运行。本文将深入探讨iOS实现消息推送的原理以及实际操作步骤。 首先,我们来了解一下消息推送的基本原理。在...
在苹果的生态系统中,Mac和iPhone之间的互动是一个重要的特性,其中消息推送服务(APNs,Apple Push Notification service)扮演了关键角色。标题提到的“mac 消息推送工具”是一种利用APNs服务来实现从Mac向iPhone...
iOS远程消息推送机制详细解析: 在iOS应用开发中,远程消息推送是一项极为重要的功能,它允许服务器端应用程序向终端用户的设备发送通知,即使应用当前不在运行状态。这种推送机制极大地提升了用户体验,因为它可以...
标题“iPhone访问Java后台WebService”意味着我们要探讨的是如何使用iPhone应用调用Java服务器提供的Web服务接口。这些接口通常是RESTful API或SOAP协议,用于传递和接收数据。 1. **iPhone客户端与Java后台通信**...