做App开发的朋友都踩过这个坑:本地测试推送一切正常,一发到真机就收不到。不是证书配错了,就是环境切混了,甚至有时候连日志都抓不到——这时候,一个趁手的远程推送调试工具,比查三天文档还管用。
Android端常用调试工具
Google FCM(Firebase Cloud Messaging)是目前主流选择,官方提供Firebase Console,点几下就能向指定Token或主题发测试消息。适合快速验证服务端是否通、设备是否在线。
更进一步,可以搭配命令行工具 curl 手动触发:
curl -X POST https://fcm.googleapis.com/fcm/send \n -H "Authorization: key=YOUR_SERVER_KEY" \n -H "Content-Type: application/json" \n -d '{"to":"DEVICE_TOKEN","notification":{"title":"测试","body":"这是一条调试推送"}}'不少开发者会用 Postman 存好模板,换Token就能秒发,省得每次改代码跑一遍。
iOS端绕不开APNs调试
苹果不提供网页版控制台,但有轻量级工具能救命。比如 Pusher(macOS免费应用),支持.p12证书导入,填上设备Token、Payload内容,点发送就能看到响应状态码。遇到403错误?八成是证书过期或Bundle ID不匹配。
另一个实用工具是 Netcat + APNs Gateway,适合喜欢终端操作的人。用OpenSSL连接生产网关:
openssl s_client -connect api.push.apple.com:443 -cert apns_cert.pem -key apns_key.pem粘贴JSON格式的推送内容后回车,直接看返回结果,干净利落。
跨平台通用型工具
Pushy 网页工具(pushy.io)不用装软件,登录即用,支持FCM、APNs、华为HMS、小米推送等多通道切换,还能保存历史记录。小团队做灰度发布时,常拿它临时推几条给测试机,比改后台配置快得多。
还有个接地气的选择:自建简易HTTP接口。比如用Python写个Flask服务,接收JSON参数,自动拼装并转发到对应推送平台。几行代码搞定,调试时加个print就能看清每一步参数长啥样。
别忽略设备端排查
工具再好,也得配合设备动作。安卓要确认「电池优化」没禁掉App后台;iOS得检查「设置→通知」里开关是否打开,且「锁定屏幕」和「横幅」至少开一个。曾有同事折腾半天,最后发现是测试机开启了「低电量模式」,系统自动暂停了后台推送。
真机连电脑用 adb logcat | grep -i firebase 或 Xcode 的Console过滤「apns」,比看服务器日志更直接。日志里出现 Received token 或 Connection established 才算真正握手成功。