`
hai0378
  • 浏览: 528309 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IOS TLS推送,3.0之后封掉了SLL

 
阅读更多

import java.io.*;

import java.net.Socket;

import java.security.*;

import java.util.regex.Pattern;

import javax.net.ssl.*;

public class mainAPNS

{

public static void main(String[] args) {

 

         

        String keyPath = "E:/etf_workspaces/etf/WebRoot/pushSource/aps_development_biz.p12";

 

        String ksType = "PKCS12";

 

        String ksPassword = "111111";

 

        String ksAlgorithm = "SunX509";

 

         //788701ef6c507b46bf09418757f63805a0f445c282e03d3054ecc61846d944f2

        //cd2845988dba10064e11b0c38a91a2b8fff8e6604d58990c104f0b38ba7f894a

        //String deviceToken = "788701ef6c507b46bf09418757f63805a0f445c282e03d3054ecc61846d944f2";

        String deviceToken = "086947c12a637b18b3fe42deaee2297541dfd41a1b5922c71058df5af8d962f4";

 

         

        String serverHost = "gateway.sandbox.push.apple.com"; //���Ի�����ַΪgateway.sandbox.push.apple.com

        //�����ַΪgateway.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 = "您关注的房子岭南雅苑65号210室这周上涨了1.5%,现在就去看一下吧!";

 

             

            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);

 

        }

 

 

    }

}

分享到:
评论

相关推荐

    ios 消息推送 java后端demo(包括jar包)

    在iOS应用开发中,消息推送是一项重要的功能,它允许服务器向设备发送通知,即使应用程序在后台运行或完全关闭。这个“ios 消息推送 java后端demo”是为开发者提供的一个示例,帮助理解如何使用Java后端实现对iOS...

    IOS消息推送服务端开发

    1. **基于官方API的直接推送**:这种推送方式直接使用Apple提供的APNs API,通过SSL/TLS连接将消息推送到目标设备。开发者需要处理证书管理、连接维护以及错误处理等复杂逻辑。这种方式对服务器性能和网络条件要求较...

    IOS消息推送服务后台,C#版

    在iOS应用开发中,苹果提供了Apple Push Notification service (APNs) 来实现远程通知功能,即我们常说的消息推送服务。本资源提供的是一个基于C#语言实现的iOS消息推送服务后台,它允许开发者通过服务器端向iOS设备...

    ios推送java写的后台

    在iOS应用开发中,苹果提供了Apple Push Notification service (APNs) 来实现实时的消息推送功能,让应用程序在后台状态下也能接收到服务器的通知。本文将详细介绍如何使用Java编写后端来实现iOS的推送服务。 首先...

    IOS推送服务windows服务程序及安装包代码

    在iOS应用开发中,苹果提供了Apple Push Notification service(APNs),这是一个用于向运行iOS、iPadOS、watchOS和tvOS的设备发送推送通知的服务。本资源包含的是在Windows环境下实现APNs服务程序及其安装包的代码...

    ios 服务器推送,c++代码

    在iOS平台上,服务器推送是应用开发中的重要组成部分,它允许应用程序在后台接收来自服务器的通知,即使应用程序未处于活动状态。这种技术称为Apple Push Notification Service(APNS),它使用JSON格式的推送消息,...

    [其他文档] ios APNS推送服务器代码pushTest

    3. **构建推送消息**:推送消息包含一个设备令牌(Device Token),这是每个安装了应用的iOS设备的唯一标识。还需要指定通知类型(如声音、图标角标等)、通知标题、正文以及其他自定义数据。 4. **封装请求**:将推...

    IOS信息推送.NET

    本资源“IOS信息推送.NET”显然是一个使用.NET框架实现的APNs推送解决方案。这个解决方案允许开发者通过.NET代码来与APNs交互,向iOS设备发送通知。 首先,我们要理解.NET框架。这是一个由微软开发的开源、跨平台的...

    IOS原生推送依赖jar加载

    在iOS开发中,为了实现应用的远程推送通知功能,开发者通常需要借助于原生推送服务。这个过程涉及到苹果的Apple Push Notification service (APNs)以及相关的库文件集成。标题"IOS原生推送依赖jar加载"指出,我们...

    ASP.NET实现IOS推送服务器端代码

    在iOS设备上,为了实现实时的消息推送服务,Apple提供了名为Apple Push Notification Service (APNS) 的服务。本文将深入探讨如何使用ASP.NET技术来构建iOS推送服务器端代码。 首先,理解APNS的工作原理至关重要。...

    ios推送jar包

    在iOS应用开发中,为了实现实时的消息推送功能,开发者通常会使用苹果的Push Notification Service(简称APNs)。APNs允许应用程序在用户未与设备交互时接收消息,例如新邮件通知、即时消息或者游戏更新等。Java开发...

    IOS远程推送php测试--ApnsPHP-master

    在iOS应用开发中,远程推送通知(Remote Push Notification)是一项重要的功能,它允许开发者在用户不使用应用时向他们发送消息或更新。本资源“IOS远程推送php测试--ApnsPHP-master”提供了一套基于PHP的远程推送...

    TLS和SSL的区别

    最新版本的TLS(Transport Layer Security,传输层安全协议)是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。在TLS与SSL...

    ios手机端集成mqtt接受服务器推送消息源码

    在iOS应用开发中,集成MQTT(Message Queuing Telemetry Transport)协议可以帮助实现服务器与设备间的实时双向通信,尤其适用于推送消息。以下是对标题“ios手机端集成mqtt接受服务器推送消息源码”以及描述中涉及...

    java进行苹果APNS消息推送

    Java进行苹果APNS(Apple Push Notification Service)消息推送是一项在iOS和macOS应用程序中实现远程通知功能的关键技术。本文将详细介绍如何使用Java实现这一过程,同时关注`javapns`库和`bcprov-jdk`加密组件的...

    向ios推送消息

    在iOS应用开发中,向设备推送消息是一项关键功能,它可以让用户即使不在应用程序中也能收到新消息、通知或活动的提醒。本篇文章将详细介绍如何使用Java实现iOS的远程推送服务,主要涉及Apple Push Notification ...

    C#后台推送苹果手机消息

    APNs是苹果提供的服务,它允许开发者向运行iOS、iPadOS、watchOS、tvOS等系统的设备发送即时推送通知。当应用在后台或完全关闭时,APNs能确保用户接收到信息。 要使用C#进行APNs推送,我们需要以下几个步骤: 1. *...

    修改后的ios 推送源码

    在iOS开发中,推送服务是应用与用户保持互动的关键组件,尤其对于那些需要实时更新或者消息提醒的应用来说更是如此。"修改后的ios 推送源码"可能涉及到Apple的Push Notification Service (APNS)的自定义实现或者优化...

    ios推送所需jar包

    在iOS应用开发中,为了实现远程通知推送服务,开发者通常会使用Apple的Push Notification Service (APNs)。然而,对于Java后端开发者来说,与APNs进行交互并不是一个直接的过程,因为APNs使用的是二进制协议。为了...

    IOS推送(APNS)

    ### IOS推送(APNS)知识点详解 #### 一、概述 苹果推送通知服务(Apple Push Notification service,简称APNs)是苹果公司为iOS设备提供的一种实时推送通知服务。它允许开发者向用户的iOS设备(如iPhone、iPad和...

Global site tag (gtag.js) - Google Analytics