APNS返回curl请求200状态码但Apple Wallet通行证未收到推送通知
你发送的APNs请求已被苹果服务器正常接收,返回200状态码和apns-id说明请求本身的格式、证书鉴权都没有问题,手机端未收到通知的常见原因如下:
- 推送Payload格式错误:Wallet通行证的推送和普通App推送逻辑不同,不需要携带
aps.alert这类字段,通行证推送的作用仅为触发系统后台拉取最新的通行证数据,不会直接弹出通知提示。你当前用的是普通App的推送Payload格式,正确的通行证推送Payload只需要为空JSON{}即可。 - 证书与标识符不匹配:确认你使用的PEM证书是对应通行证类型的专属推送证书,不能使用普通iOS App的推送证书;同时检查
apns-topic取值和你通行证pass.json中填写的passTypeIdentifier完全一致。 - 推送令牌不匹配:请求URL中携带的
<my-push-token>必须是对应设备上安装该通行证时返回的专属令牌,不能和普通App的设备推送令牌混用,两类令牌完全不通用。 - 推送环境不匹配:如果你使用的是开发环境的通行证签名证书,需要将请求地址改为沙箱环境地址
https://api.sandbox.push.apple.com/3/device/<my-push-token>,生产签名的通行证才可以使用生产环境推送地址。 - 通行证后台服务未更新:通行证推送触发后,系统会主动请求你在
pass.json中配置的webServiceURL拉取最新的通行证版本,如果你没有在后台更新对应通行证的内容,就算推送触发成功,用户也不会看到任何变化,没有可见提示。 - 设备权限与网络限制:确认设备已经开启Wallet的通知权限,同时设备网络可以正常连接苹果APNs服务器,没有被VPN、代理或者防火墙拦截。
内容的提问来源于stack exchange,提问作者qazszszsz
相关产品推荐
相关产品推荐

