IOS使用新的HTTP2 api测试推送,APNs推送的测试工具

Stella981
• 阅读 965

[TOC]

#工具项目地址

github

https://github.com/wardenlym/apns2-test

工具安装

参考项目描述编译安装即可工具(很简单,直接make就可以) 如有报错,根据错误提示解决即可。 我编译时遇到autoconf版本低(2.63)导致编译失败的问题,后面升级下autoconf就好了,我是升级到2.68

工具使用介绍

用法

最简用法,只有2个必须参数: 证书,要推送设备的token。

./apns2-test -cert <cert.pem> -token 然后设备就会收到一条 "apns2 test." 的默认测试信息。

可选参数

-dev 开发环境,默认推生产环境 -debug 详细的日志了连接过程和HTTP请求过程 -topic 不填的话,从证书里面取UID,默认就是应用的bundle-id -message 自定义一个消息内容,比较常用,替换的是alert字段 example: -message "abc test." -payload 如果你对payload中的字段需要详细的指定,这个选项跟-message冲突,不应该同时设置(废话。。。),如果都设置,以-payload为准。 example: -payload '{"aps":{"alert":"payload test.","sound":"default"}}'

还有些没什么太大用的选项,但也留出来方便些:

-uri 如果你有特别的代理,可以用来替换苹果默认的域名,这个如果设置了,默认覆盖生产开发选项。你指定哪个地址就推哪个。 -port 如果你要设定端口,默认苹果端口是2197 -prefix 这个一般不用改吧。协议里的header前缀 /3/device/ -pkey 如果需要指定一个私钥文件,正常来说,证书与私钥都在一个pem文件里。默认都从pem里面读取

效果

debug效果

[root@local-vm apns2-test]# ./apns2-test -cert /tmp/test_dev.pem -token 167f86c48b3418cbe45ff3bfe51f4d504df456d1110a77de0dfb5576294b758e -debug -dev
6 -dev
notBefore : 190225060336Z
notAfter  : 200225060336Z
UID = com.test [23]

apns2-test version: 0.1.1
nghttp2 version: 1.9.0-DEV
tls/ssl version: TLSv1.2
ns looking up ...
connecting to : 17.188.165.219
socket connect ok: fd=3, host: api.development.push.apple.com:2197
Enter PEM pass phrase:
ssl allocation ok
ssl handshaking ...
Connected with encryption: ECDHE-RSA-AES256-GCM-SHA384
ssl handshake ok
[INFO] Stream ID = 1
[INFO] C ----------------------------> S (HEADERS)
:method: POST
:path: /3/device/167f86c48b3418cbe45ff3bfe51f4d504df456d1110a77de0dfb5576294b758e
apns-topic: com.test
[INFO] C ----------------------------> S (DATA post body)
{"aps":{"alert":"apns2 test.","sound":"default"}}

[INFO] C <---------------------------- S (HEADERS begin)
:status: 200
apns-id: D63E10AF-D391-9958-6C70-92CC5759204B
[INFO] C <---------------------------- S (HEADERS end)
[INFO] C ----------------------------> S (GOAWAY)
over.

debug消息如上,能看到

  • {"aps":{"alert":"apns2 test.","sound":"default"}}
    推送的消息内容,可以用message参数指定
  • :status: 200 (推送结果,对照如下)

Status code

Description

200

Success

400

Bad request

403

There was an error with the certificate or with the provider authentication token

405

The request used a bad :method value. Only POST requests are supported.

410

The device token is no longer active for the topic.

413

The notification payload was too large.

429

The server received too many requests for the same device token.

500

Internal server error

503

The server is shutting down and unavailable.

结束

项目中有时排查推送问题,自己单个推送调试排查问题还是很不错的

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这