mac下使用java测试iOS推送
首先mac下有很多现在的测试iOS推送软件,为什么要用java程序测试呢;
因为大多数后台推送服务可能是JAVA开发的,那么为了验证我们在MAC上导出的推送证书文件是否正确;
制作开发证书的iOS开发人员,应当用JAVA自测来保证导出的p12推送证书文件是正确的;
1. iOS开发人员从mac钥匙串导出p12格式的推送证书;
2. mac环境配置java
首先安装java,很简单从官方下载dmg格式的java sdk,安装即可;
测试程序需要一些java的库,即jar包;以下我测试ok用到的jar包,
可直接百度对就的名字下载,或从对应的官网下载:大致用到 jackson,javapns,log4j 这三个包
jackson-core-2.9.9.jar
javapns-jdk16-2.4.0.jar
3. 安装依赖的jar包
mac下java的包安装目录在 /Library/Java/Extensions/
我们把上面下载的jar包 放在上面目录即可;
4. 测试的java程序代码
import java.util.ArrayList;
import java.util.List;
import javapns.devices.Device;
import javapns.devices.implementations.basic.BasicDevice;
import javapns.notification.AppleNotificationServerBasicImpl;
import javapns.notification.PushNotificationManager;
import javapns.notification.PushNotificationPayload;
import javapns.notification.PushedNotification; /***
* 依赖的jar包有
jackson-core-2.9.9.jar
javapns-jdk16-2.4.0.jar
apache-log4j-2.12.0.jar
*
* //mac下安装的路径到 /Library/Java/Extensions/目录下
*
* //测试 javac PushMsg.java java PushMsg
*
*/ public class PushMsg {
public static void main(String[] args) throws Exception { System.out.println("zsl==========开始推送消息");
int badge = 1; // 图标小红圈的数值
String sound = "default"; // 铃音
// 要推送的,手机设备token号
String deviceToken = "753c86b495613089f02dcd3f735f0ada9e2d40f84c0a6360802ea57e55f43b8x";
// 这里是要推送的测试消息
String message = "test push message to ios device"; List<String> tokens = new ArrayList<String>();
tokens.add(deviceToken); // java必须要用导出p12文件 ,php的话是pem文件
// 注意证书是生产环境还是测试环境
String certificatePath = "./APNS_iOS_3.p12";
// 从mac钥匙串,导出证书时设置的密码
String msgCertificatePassword = "1"; boolean sendCount = true; PushNotificationPayload payload = new PushNotificationPayload();
payload.addAlert(message); // 消息内容
payload.addBadge(badge);
payload.addCustomDictionary("uid", "haahi");
payload.addCustomDictionary("type", 12);
payload.addCustomDictionary("title", "haahi");
payload.addSound("default.caf");// 铃音 PushNotificationManager pushManager = new PushNotificationManager();
// true:对应iOS生产环境推送 false:对应iOS测试环境推送
pushManager.initializeConnection(new AppleNotificationServerBasicImpl(certificatePath, msgCertificatePassword, true));
List<PushedNotification> notifications = new ArrayList<PushedNotification>();
// 开始推送消息
if (sendCount) {
Device device = new BasicDevice();
device.setToken(deviceToken);
PushedNotification notification = pushManager.sendNotification(device, payload, false);
notifications.add(notification);
} else {
List<Device> devices = new ArrayList<Device>();
for (String token : tokens) {
devices.add(new BasicDevice(token));
}
notifications = pushManager.sendNotifications(payload, devices);
} List<PushedNotification> failedNotification = PushedNotification.findFailedNotifications(notifications);
List<PushedNotification> successfulNotification = PushedNotification
.findSuccessfulNotifications(notifications);
int failed = failedNotification.size();
int successful = successfulNotification.size();
System.out.println("zsl==========成功数:" + successful);
System.out.println("zsl==========失败数:" + failed);
pushManager.stopConnection();
System.out.println("zsl==========消息推送完毕");
}
}
代码里面都有注释
需要的注意的是 上面推送手机的token,推送证书的路径,推送证书的密码,推送证书类型生产还是测试;
5. 运行测试
在mac终端下先用javac编译
javac PushMsg.java
然后运行生成的PushMsg.class
java PushMsg
在终端看日志,以及手机接收到通知来验证;
ccMBP:20190726javaPush cc$ javac PushMsg.java
ccMBP:20190726javaPush cc$ java PushMsg
zsl==========开始推送消息
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
zsl==========成功数:1
zsl==========失败数:0
zsl==========消息推送完毕
推送代码参考:https://www.jianshu.com/p/7a9f544a1ae3
mac下使用java测试iOS推送的更多相关文章
- phonegap + Framework7 之 ios 推送跳转测试
先说说项目情况:使用phonegap创建的ios项目,然后在使用html + css开发网页中又使用了一个框架Framework7(Framework7是一个构建仿原生ios和android应用的框架 ...
- IOS 推送消息 php做推送服务端
IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...
- “iOS 推送通知”详解:从创建到设置到运行
这是一篇编译的文章,内容均出自Parse.com的iOS开发教程,同时作者还提供了视频讲解.本文将带领开发者一步一步向着iOS推送通知的深处探寻,掌握如何配置iOS推送通知的奥义. 介绍一点点背景资料 ...
- iOS推送 再备
这是一篇编译的文章,内容均出自Parse.com的iOS开发教程,同时作者还提供了视频讲解.本文将带领开发者一步一步向着iOS推送通知的深处探寻,掌握如何配置iOS推送通知的奥义. 介绍一点点背景资料 ...
- 一步一步教你做ios推送
最近在研究ios的推送问题,遇到了一些问题,最终整理了一下.放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 Provider就是我们自己程序的后台服 ...
- 手把手教你搞定个推iOS推送SDK集成
以下是一位开发者在集成个推iOS推送SDK过程中的真实经历. 作者:Ezreallp 一次偶然的机会,公司的项目要用到推送,我自己本来就很懒,不愿意去弄整套APNS的流程,刚好之前跟朋友聊起过他们的产 ...
- 友盟iOS推送配置(从真机调试到推送)
下面我来讲解一下友盟iOS的推送配置,其实友盟只是一个示例,换做其余的第三方推送服务也会适用,只是第三方的后面服务变了而已. iOS推送(包括真机调试)所需要的步骤和文件如下: 备注:这里我将省略掉一 ...
- 利用pyapns进行ios推送
ios客户端的同事提供了2个证书,分别是aps_development.cer 和 pushdevelopment.p12, 我最终目的就是把这2个证书合并成1个pem证书,然后通过pyapns进行 ...
- iOS 推送证书的制作
关于iOS推送证书的P12文件,并非直接从KeyChain导出来的证书文件.而是须要经过openSSL工具制作的.(好在Mac OS 默认就有openSSL命令) 针对不同的Server平台,须要的证 ...
随机推荐
- WDA演练一:用户登陆界面设计(二)
一,登陆界面设计: 1.将系统编号灰显,默认初值 2.密码栏勾选密码显示,这样就不会明文显示在页面上了: Init方法中添加默认值代码: METHOD wddoinit . DATA lo_nd_zh ...
- echart绘制GDP数据
{% extends "base.html" %} {% block self_head_css_js %} {% endblock %} {% block main_conten ...
- JAVA项目从运维部署到项目开发(四. Tomcat)
一.关于中文乱码问题 文件目录:/conf/server.xml 将相关语句改为: <Connector port="8008" protocol="HTTP/1. ...
- 带你快速上手前端三剑客之css
CSS介绍 CSS(Cascading Style Sheet , 层叠样式表)定义如何显示HTML元素.当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染) 组成 每个CS ...
- linux设备驱动程序——将驱动程序编译进内核
linux驱动程序--将驱动程序编译进内核 模块的加载 通常来说,在驱动模块的开发阶段,一般是将模块编译成.ko文件,再使用 sudo insmod module.ko 或者 depmod -a mo ...
- nginx.从路人到入门
nginx 提供各种各样的服务器功能,本文记录 nginx 最基础的操作: 开启.停止.重载配置 静态文件服务器 反向代理 本文操作系统环境为 ubuntu18 安装 官方安装指导 开启.停止.重载配 ...
- The 2016 ACM-ICPC Asia China-Final D. Ice Cream Tower 二分 + 贪心
题目大意: 对于给出的n个冰激凌球的大小,满足下面的球的大小是上一个的至少2倍,对于给出的k(由k的冰激凌球才能算作一个冰激凌塔),问n个冰激凌球可以最多堆出多少个高度为k的冰激凌塔 题目分析: 对于 ...
- 云打印 对 追光的人 的Beta产品测试报告
云打印 对追光的人的Beta产品测试报告 课程名称:软件工程1916|W(福州大学) 团队名称: 云打印 作业要求: 项目Beta冲刺(团队) 作业目标:作业集合 团队队员 队员学号 队员姓名 个人博 ...
- python + redis +ipset实现IP黑名单的动态添加及解封禁
1.抽空用python做了一个 动态添加/删除IP黑名单 的程序(或者说实现方案),项目地址: https://gitee.com/lowmanisbusy/ip_blacklists, 2.这里的实 ...
- crontab每小时运行一次(转)
https://blog.csdn.net/liu0808/article/details/80668705 先给出crontab的语法格式 对于网上很多给出的每小时定时任务写法,可以说绝大多数都是错 ...