`
zxs19861202
  • 浏览: 918834 次
  • 性别: Icon_minigender_1
  • 来自: 湖北—》上海
社区版块
存档分类
最新评论

ios推送 java做服务端

    博客分类:
  • ios
 
阅读更多

之前一篇文章介绍了ios推送,使用php做客客户端,这里介绍java实现服务端,证书的配置以及IOS客户端的代码这里就不赘述了,主要介绍服务端证书的生成和推送的代码,java需要的证书实现方式,直接导出就可以了


 

输入密码导出文件push.p12

 

java的实现代码为:

 

 

public static void main(String[] args) {

   

   

  try {

           String deviceToken = "xxxxxxx";

           //被推送的iphone应用程序标示符      

           PayLoad payLoad = new PayLoad();

           payLoad.addAlert("测试我的push消息");

           payLoad.addBadge(1);

           payLoad.addSound("default");

                    

           PushNotificationManager pushManager = PushNotificationManager.getInstance();

           pushManager.addDevice("iphone", deviceToken);

         

           String host="gateway.sandbox.push.apple.com"//测试用的苹果推送服务器

           int port = 2195;

           String certificatePath = "D:/push.p12"; //刚才在mac系统下导出的证书

           

           String certificatePassword= "123456";

          

           pushManager.initializeConnection(host, port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

                     

           //Send Push

           Device client = pushManager.getDevice("iphone");

           pushManager.sendNotification(client, payLoad); //推送消息

           pushManager.stopConnection();

           pushManager.removeDevice("iphone");

          }

          catch (Exception e) {

           e.printStackTrace();

           System.out.println("push faild!");

           return;

          }

          System.out.println("push succeed!");

         }

 

 

 

需要用到的jar包

bcprov-jdk16-145-1.jar

commons-io-2.0.1.jar

commons-lang-2.5.jar

javapns-jdk16-163.jar  见附件,其他的都很容易下载

log4j-1.2.16.jar

 

 

 --------------------------------------------------------------

以上用到的是开源项目javapns的推送方式,还有另外一种方式

public static void main(String[] args) {

         

        String keyPath = "/Users/allen/Desktop/push.p12";

        String ksType = "PKCS12";

        String ksPassword = "123456";

        String ksAlgorithm = "SunX509";

         

        String deviceToken = "cd265a77f1b4421e10902b2d3422d6b47bcdc0e96de836d89b86c6c2037a571d";

         

        String serverHost = "gateway.sandbox.push.apple.com";

        int serverPort = 2195;

         

        try {

            InputStream certInput = new FileInputStream(keyPath);

            KeyStore keyStore = KeyStore.getInstance(ksType);

            keyStore.load(certInput, ksPassword.toCharArray());

             

            KeyManagerFactory kmf = KeyManagerFactory.getInstance(ksAlgorithm);

            kmf.init(keyStore, ksPassword.toCharArray());

             

            SSLContext sslContext = SSLContext.getInstance("TLS");

            sslContext.init(kmf.getKeyManagers(), null, null);

             

            SSLSocketFactory socketFactory = sslContext.getSocketFactory();

             

            Socket socket = socketFactory.createSocket(serverHost, serverPort);

             

            StringBuilder content = new StringBuilder();

             

            String text = "this is a test.";

             

            content.append("{\"aps\":");

            content.append("{\"alert\":\"").append(text)

                .append("\",\"badge\":1,\"sound\":\"")

                .append("ping1").append("\"}");

             

            content.append(",\"cpn\":{\"t0\":")

                .append(System.currentTimeMillis()).append("}");

            content.append("}");

             

            byte[] msgByte = makebyte((byte)1, deviceToken, content.toString(), 10000001);

             

            System.out.println(msgByte);

             

            socket.getOutputStream().write(msgByte);

            socket.getOutputStream().flush();

             

            socket.close();

             

        } catch (Exception e) {

            e.printStackTrace();

        }

         

         

         

    }

     

    /**

    * 组装apns规定的字节数组  使用增强型

    * 

    * @param command

    * @param deviceToken

    * @param payload

    * @return

    * @throws IOException

    */

    private static byte[] makebyte(byte command, String deviceToken, String payload, int identifer) {

         

        byte[] deviceTokenb = decodeHex(deviceToken);

        byte[] payloadBytes = null;

        ByteArrayOutputStream boas = new ByteArrayOutputStream();

        DataOutputStream dos = new DataOutputStream(boas);

 

        try {

            payloadBytes = payload.getBytes("UTF-8");

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

            return null;

        }

         

        try {

            dos.writeByte(command);

            dos.writeInt(identifer);//identifer

            dos.writeInt(Integer.MAX_VALUE);

            dos.writeShort(deviceTokenb.length);

            dos.write(deviceTokenb);

            dos.writeShort(payloadBytes.length);

            dos.write(payloadBytes);

            return boas.toByteArray();

        } catch (IOException e) {

            e.printStackTrace();

            return null;

        }

    }

     

    private static final Pattern pattern = Pattern.compile("[ -]");

    private static byte[] decodeHex(String deviceToken) {

        String hex = pattern.matcher(deviceToken).replaceAll("");

         

        byte[] bts = new byte[hex.length() / 2];

        for (int i = 0; i < bts.length; i++) {

            bts[i] = (byte) (charval(hex.charAt(2*i)) * 16 + charval(hex.charAt(2*i + 1)));

        }

        return bts;

    }

 

    private static int charval(char a) {

        if ('0' <= a && a <= '9')

            return (a - '0');

        else if ('a' <= a && a <= 'f')

            return (a - 'a') + 10;

        else if ('A' <= a && a <= 'F')

            return (a - 'A') + 10;

        else{

            throw new RuntimeException("Invalid hex character: " + a);

        }

 

    }

 

  • 大小: 208 KB
分享到:
评论

相关推荐

    苹果ios推送java服务端耗码demo

    【苹果iOS推送Java服务端详解】 在iOS应用开发中,苹果提供了远程通知(Apple Push Notification service,简称APNs)服务,使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本篇...

    ios推送java服务端

    在Java服务端实现iOS消息推送涉及到以下几个关键步骤和技术: 1. **应用程序注册消息推送**: 当用户首次启动iOS应用时,系统会请求用户允许接收推送通知。如果用户同意,应用程序将通过与APNS交互获取一个唯一的`...

    IOS推送JAVA服务端文档

    **iOS推送Java服务端文档详解** 在iOS应用开发中,为了实现远程通知功能,苹果公司提供了Push Notification Service(PNS),使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本文...

    IOS 消息推送 java服务端和客户端源码

    本资源提供了一个完整的Java服务端和iOS客户端的源码实现,帮助开发者理解并实践iOS消息推送的全过程。 首先,我们要了解的是苹果的Push Notification Service(APNs),这是苹果公司提供的用于向iOS、watchOS、...

    java服务端推送给IOS源码

    java服务端推送消息给ios客户端,有兴趣的朋友可以看下

    极光推送JAVA服务端集成 jpush-api-java-client-master

    【极光推送JAVA服务端集成 jpush-api-java-client-master】是一个专门为Java开发者设计的极光推送(JPush)服务端SDK。极光推送是面向移动应用开发者提供的一套消息推送服务,它可以帮助开发者轻松实现向Android、...

    Java向苹果服务器推送消息(Java实现HTTP/2协议发送APNS)

    Java向苹果服务器推送消息是iOS应用开发者经常遇到的需求,用于实时通知用户新的信息或系统状态。APNs(Apple Push Notification service)是苹果公司提供的推送服务,允许开发者将消息推送到用户的iOS设备上。本...

    IOS消息推送服务端开发

    本文将深入探讨“iOS消息推送服务端开发”,包括主流的推送方式、JavaAPNS库以及如何实现多线程推送。 首先,iOS消息推送服务(Apple Push Notification service,简称APNs)是苹果公司提供的官方服务,用于向运行...

    极光推送服务端(java)所需jar

    极光推送服务端(JPush Server)是针对Java开发者提供的一款服务端SDK,主要用于实现应用程序向用户设备发送消息和通知的功能。极光推送是移动应用开发者首选的推送服务之一,它能够帮助开发者轻松地实现向iOS、...

    友盟消息推送 Java服务端Push SDK

    消息推送(Push SDK) 友盟消息推送,帮助开发者建立于用户直接沟通的渠道。将APP的内 友盟推送PushSDK 友盟推送PushSDK 容更新或者活动通知主动推送给终端用户,让用户第一时间获取到相关信息,有效提升用户活跃度...

    友盟推送,服务端推送代码

    在本案例中,我们关注的是C#版本的服务端推送代码,该代码是基于Java版本的服务端推送进行翻译的,旨在帮助开发者在C#环境中实现相同的功能。 首先,我们要理解服务端推送的基本概念。服务端推送是指应用程序服务器...

    极光推送【java服务器端 和 Android客户端】

    极光推送是一款广泛应用于移动应用开发中的消息推送服务,它为开发者提供了便捷的途径来向Android和iOS设备发送通知和消息。在这个压缩包文件中,包含的是极光推送的Java服务器端集成指南以及Android客户端的示例...

    极光推送客户端及服务端dome

    极光推送是一款在中国广泛应用的移动端消息推送服务,它允许开发者向Android和iOS设备发送自定义消息,提升用户活跃度和应用粘性。本教程将详细讲解极光推送客户端和服务端的实现过程,以及如何进行自定义推送。 1....

    IOS设备消息推送服务JAVA调用依赖包和实例程序

    本文将详细讲解如何使用JAVA程序来调用APNs服务,为iOS设备提供消息推送功能,并提供必要的依赖包和实例代码。 首先,我们需要了解APNs的基本工作原理。APNs是苹果公司提供的一个服务,允许应用程序在后台向用户...

    基于Java的 iOS 推送通知

    首先,我们需要理解iOS推送通知的基本原理。 **iOS推送通知原理** 1. **消息流**:推送通知的流程主要包括三个步骤。提供商(即APP服务端)将通知发送至Apple Push Notification Service (APNS),APNS随后将通知...

    ios push java 服务端程序

    在iOS应用开发中,为了...总结,构建一个iOS推送Java服务端程序涉及到与Apple APNs的通信、证书管理、消息构建和发送,以及错误处理。使用Java的强大库和工具,可以简化这个过程,同时遵循最佳实践以优化性能和可靠性。

    ios推送jar包

    本资源提供的“ios推送jar包”正是这样一个工具,它包含了一组Java类和库文件,用于简化服务端与iOS设备之间推送通知的实现过程。 1. **APNs概念理解** - APNs是苹果公司提供的一个远程通知服务,使得服务器能够向...

    Java向苹果服务器推送消息

    Java APNS推送消息 ------------------------------------------------- 苹果APNS服务器更新,请看新的方法:https://download.csdn.net/download/kerryzb/85443487

    极光推送 java服务器demo、Android客户端demo

    极光推送(JPush)是阿里巴巴旗下的一款专业的移动消息推送服务,它可以帮助开发者实现向Android、iOS以及Web端用户实时推送消息的功能。本压缩包包含了极光推送的Java服务器端DEMO和Android客户端DEMO,旨在帮助...

    iphone 推送通知 服务器端java 实现

    本篇文章将详细介绍如何在服务器端使用Java来实现iPhone的推送通知功能。 首先,我们需要了解APNs的工作原理。APNs是苹果公司的远程通知服务,当应用程序在后台或未运行时,可以通过APNs将消息推送到用户的设备上。...

Global site tag (gtag.js) - Google Analytics