在iPhone上是否可以查看来自APNS的推送通知原始数据?
APNS推送Payload获取排查方案
APNS是iOS系统维护的专属长连接,走系统根证书校验的加密链路,不遵循普通应用的HTTP代理规则,所以mitmproxy这类HTTPS代理工具无法拦截到APNS的流量,属于正常现象。你可以通过以下几种方案获取推送数据:
方案1:直接通过macOS控制台读取系统级推送日志
这是最高效的方案,不需要修改App代码,TestFlight/正式包都适用:
- 将测试iPhone连接到Mac,打开macOS自带的「控制台」应用
- 左侧设备列表选中你的测试iPhone,右上角搜索框输入关键词
apsd(iOS系统负责处理APNS推送的守护进程) - 触发测试推送,即可在日志流中找到完整的推送Payload,包含aps系统字段和所有后端自定义字段
方案2:App本地埋点导出推送数据
如果需要关联App收到推送后的业务处理逻辑,可以修改代码新增本地日志:
- 在
UNUserNotificationCenterDelegate的推送接收回调、AppDelegate的静默推送触发回调中,将完整的userInfo参数写入App沙盒的Documents目录下的本地日志文件 - 测试触发推送后,打开Xcode的「Window - Devices and Simulators」,选中你的测试设备,找到对应App,选择「Download Container」导出沙盒数据,右键查看包内容即可提取日志文件
方案3:通过通知服务扩展拦截Payload
如果需要捕获推送到达后、展示前的原始数据,可以新增通知扩展:
- 给项目新增Notification Service Extension,在
didReceiveNotificationRequest:withContentHandler:方法中将request.content.userInfo写入本地日志 - 打TestFlight包安装测试,推送到达时扩展会优先执行,完整记录原始Payload
注意事项
- 若测试的是静默推送,可在控制台搜索时补充关键词
content-available避免漏看日志 - 写入沙盒日志不需要额外申请权限,只要写入App自身的沙盒目录即可正常执行
内容的提问来源于stack exchange,提问作者Jacky Choi
相关产品推荐
相关产品推荐

