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

[TOC]

#工具项目地址

github

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

工具安装

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

工具使用介绍

用法

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

./apns2-test -cert <cert.pem> -token <device-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效果

1[root@local-vm apns2-test]# ./apns2-test -cert /tmp/test_dev.pem -token 167f86c48b3418cbe45ff3bfe51f4d504df456d1110a77de0dfb5576294b758e -debug -dev 26 -dev 3notBefore : 190225060336Z 4notAfter : 200225060336Z 5UID = com.test [23] 6 7apns2-test version: 0.1.1 8nghttp2 version: 1.9.0-DEV 9tls/ssl version: TLSv1.2 10ns looking up ... 11connecting to : 17.188.165.219 12socket connect ok: fd=3, host: api.development.push.apple.com:2197 13Enter PEM pass phrase: 14ssl allocation ok 15ssl handshaking ... 16Connected with encryption: ECDHE-RSA-AES256-GCM-SHA384 17ssl handshake ok 18[INFO] Stream ID = 1 19[INFO] C ----------------------------> S (HEADERS) 20:method: POST 21:path: /3/device/167f86c48b3418cbe45ff3bfe51f4d504df456d1110a77de0dfb5576294b758e 22apns-topic: com.test 23[INFO] C ----------------------------> S (DATA post body) 24{"aps":{"alert":"apns2 test.","sound":"default"}} 25 26[INFO] C <---------------------------- S (HEADERS begin) 27:status: 200 28apns-id: D63E10AF-D391-9958-6C70-92CC5759204B 29[INFO] C <---------------------------- S (HEADERS end) 30[INFO] C ----------------------------> S (GOAWAY) 31over.

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.

结束

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )