工具项目地址

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 codeDescription
200Success
400Bad request
403There was an error with the certificate or with the provider authentication token
405The request used a bad :method value. Only POST requests are supported.
410The device token is no longer active for the topic.
413The notification payload was too large.
429The server received too many requests for the same device token.
500Internal server error
503The server is shutting down and unavailable.

结束

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

转载于:https://www.cnblogs.com/JaminXie/p/11098597.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐